I am trying to change the Vector Base for interrupts by pointing it to my ISRs written in C. I call inline assembly once I have the address to write the new value to the coprocessor:
LDR r0, =fnRAMVectors
MCR p15, 0 r0, c12, c0, 0
Everything compiles okay, but when I run the program, I get an "Illegal Instruction" error and the program crashes. The Cortex-A8 Tech Ref says there is a pin CP15SDISABLE which must be high in order for a user to access the registers within CP15. How do I access these? Other relevant facts - I am running this under the Angstrom distro of Linux on a BeagleBone. Is this maybe an issue with running a program from user space rather than kernel space? If so, how can I get around that?
Thanks, Jamie