Im using the TI Code Composer suite with an ARM 7 and Im looking for a way to get the CPSR back into a C variable. I was looking through the documentation that came with the compiler and it didnt have quite what I was looking for. What Im need to do is get the state of the interrupt disable bit. I need to use this bit as a condition variable for something like:
===
if (interrupts enabled){ do this }
===
the inline asm syntax is just
=== asm("assembly"); ===
The problem is, Im not sure how to associate some C variable to the asm code to pass the CPSR back to the C code flow. Ive used other compilers in the past that have an option to pass arguments to the asm code like
=== _asm("tfr b, ccr",foo); ===
which passes the condition code register (for an HC12) to the var foo, but this compiler does not have that capability.
I first tried
===
volatile ui32_t cpsrstat; asm(" .global _cpsrstat"); // cpsrstat defined in C code asm("_cpsrstat .set r0"); // set variable to r0 asm(" mrs r0,cpsr"); // move CPSR to r0
===
With this Im getting an illegal mnemonic error at the MRS instruction. Am I barking up the wrong tree here?