ARM-7 Stack pointer register in different modes during context switches
Hi,
I need a clarification regarding functions portSAVECONTEXT() & portRESTORECONTEXT() for ARM7 for example LPC-2129. These macros can be invoked from any where for example IRQ(timer interrupt) etc.. when the processor enters IRQ mode, stack pointer in use will be SPirq. What I could make out is, while saving the context or restoring, how is the SPsystem is accessed for saving or filling the stack pointer to or from TCB. in portRESTORE_CONTEXT() I could understand that the processor mode will be switched to system mode by “SUBS PC, LR, #4” but the stack pointer gets restored before that… could some one please clarify it?
Thanks,
Girish
ARM-7 Stack pointer register in different modes during context switches
The comments in the code tell you where it is done:
/* Set R0 to point to the task stack pointer. */ "STMDB SP,{SP}^ nt" "NOP nt" "SUB SP, SP, #4 nt" "LDMIA SP!,{R0} nt"If you don’t understand the assembly code then please refer to the ARM instruction set documentation. Regards.
ARM-7 Stack pointer register in different modes during context switches
Thanks.. Yes I gone through the comment and even the assembly code.. but I had missed the meaning of “^” in the code.. sorry for that thanks a lot
ARM-7 Stack pointer register in different modes during context switches
Thanks.. Yes I gone through the comment and even the assembly code.. but I had missed the meaning of “^” in the code.. sorry for that thanks a lot