6.73 __set_SP Intrinsic Function
Assigns a new address to the stack pointer register (R13).
Note:
__set_MSP can be equivalent to __set_SP. The function sets the Main Stack Pointer (MSP) value using the instruction MSR.
Physically two different stack pointers (SP) exist:
- The Main Stack Pointer (MSP) is the default stack pointer after reset. It is also used when running exception handlers (handler mode).
- The Process Stack Pointer (PSP), which can be used only in thread mode.
Register R13 banks the SP. The SP
selection is determined by the bit[1] of the CONTROL register:
- =0 MSP is the current stack pointer. This is also the default SP. The initial value is loaded from the first 32-bit word of the vector table from the program memory.
- =1 PSP is the current stack pointer. The initial value is undefined.
Suggested Replacement
__set_MSP
Caveats
None.
Examples
Consider migrating IAR code such
as:
void __set_SP(unsigned int); to MPLAB XC codes similar
to:__set_MSP(); Further Information
None.
