/** * \file * * * \brief Cortex-M3 context switch * * \author Andrea Righi */ .syntax unified /* void asm_switch_context(void **new_sp [r0], void **save_sp [r1]) */ .global asm_switch_context .thumb_func asm_switch_context: mrs r12, msp /* Save registers */ stmdb r12!, {r4-r11, lr} /* Save old stack pointer */ str r12, [r1] /* Load new stack pointer */ ldr r12, [r0] /* Load new registers */ ldmia r12!, {r4-r11, lr} msr msp, r12 bx lr