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

Safe to use r13-r15 as general register?

Note: This was originally posted on 18th July 2011 at http://forums.arm.com

Hello, I am writting a function, which involves complicated algorithm, I want to have a lot of general purpose registers to keep the routine speed. I have read some article that r13-r15 are special registers, but can be used as general purpose registers.

Can I do it like this
   stmfd       sp!, {r4-r15,lr}
:
:
    ldmfd       sp!, {r4-r15,pc}

Thank you very much!
Parents
  • Note: This was originally posted on 22nd July 2011 at http://forums.arm.com


    But it's important to understand that that code is not re-entrant: that is, if my_fct is interrupted and the interrupt calls (possibly indirectly) my_fct again then the when the outer call to my_fct tries to return, bad things™ will happen.


    On ARM, interrupts have a separate banked stack pointer. You don't have to worry about sharing the stack with them and are therefore free to use r13 for anything you want so long as you preserve it before returning.
Reply
  • Note: This was originally posted on 22nd July 2011 at http://forums.arm.com


    But it's important to understand that that code is not re-entrant: that is, if my_fct is interrupted and the interrupt calls (possibly indirectly) my_fct again then the when the outer call to my_fct tries to return, bad things™ will happen.


    On ARM, interrupts have a separate banked stack pointer. You don't have to worry about sharing the stack with them and are therefore free to use r13 for anything you want so long as you preserve it before returning.
Children
No data