This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

A question about assigning SP

Hello,
I am trying to set the value of SP as part of my small RTOS. However, I have a little problem:
once I do this

__asm
{
MOV SP, stkptr
}

the address stored in stkptr (its type is unsigned int* ) is converted. If the address of strptr is 0xE2D4, SP get 0xF2D4.
My stack's top is at 0xFC00. I also disable the check for stack underflow/overflow (registers STKUN, STKOV in the A66 file).
What is happening here? Are the DPP registers involved? Can I use memory mapping facilities to solve this issue?
Kind regards,
Tamir Michael

Parents
  • Hi Tamir,

    Good that you have a solution. I would comment that you stated that you disabled the stack checking but instead you did not trigger a stack trap because you used the MOV instruction. The system will still respond to the stack trap albeit to your new boundary conditions written to registers STKUN and STKOV.

    As a side note, the XC16x devices don't have this limitation.

    Best regards,
    Chris

Reply
  • Hi Tamir,

    Good that you have a solution. I would comment that you stated that you disabled the stack checking but instead you did not trigger a stack trap because you used the MOV instruction. The system will still respond to the stack trap albeit to your new boundary conditions written to registers STKUN and STKOV.

    As a side note, the XC16x devices don't have this limitation.

    Best regards,
    Chris

Children
No data