ARM7 Inline assembler issues

nobody wrote on Tuesday, November 30, 2004:

Some cross compilers will not allow you to manipulate stack pointer SP.
For example the compiler will crib at the following inline assembly code which are part of EnterCritical & ExitCritical macros

__asm{ STMDB    SP!, {R0}};/* Push R0.*/



__asm{ LDMIA    SP!, {R0}};/* Pop R0.*/

It seems the compiler will do the pushing and poppin.

Development suite metroworks codewarrior for ARM7.   

nobody wrote on Tuesday, November 30, 2004:

Can you write it "out of line" in a separate asm file?

nobody wrote on Tuesday, November 30, 2004:

Sure it works just fine as standalone assembler code, I am just providing a helpful info to potential users with the same development environment.

nobody wrote on Friday, January 12, 2007:

hi,
     I am a beginner to FreeRTOS and also Keil. I have a LPC2148 development board. I tried to run the freeRTOS with a small test task, but while compiling it says there is a systax error in the inline asm macro defined in portmacro.h specifically in the DISABLE_INTERRUPTS macro.

     I would be great ful, if some one can guide my working it out.

thank you,
Shanmuganandh

embeddedc wrote on Friday, January 12, 2007:

Probably you are using the wrong compiler.  The Keil demo was written using the Keil compiler, which you cannot get anymore.  Keil now ship with the RVDS compiler, which is not compatible.