Line 215... |
Line 215... |
|
|
# Finally, restore target thread's true SP
|
# Finally, restore target thread's true SP
|
l.lwz sp, 1 * OR1K_GPRSIZE(sp)
|
l.lwz sp, 1 * OR1K_GPRSIZE(sp)
|
|
|
l.jr lr
|
l.jr lr
|
|
#ifdef CYGHWR_BRANCH_SLOT_IMPLEMENTED
|
l.nop # delay slot - must be nop
|
l.nop # delay slot - must be nop
|
|
#endif
|
|
|
FUNC_END(hal_thread_load_context)
|
FUNC_END(hal_thread_load_context)
|
|
|
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
# HAL longjmp, setjmp implementations
|
# HAL longjmp, setjmp implementations
|
Line 265... |
Line 267... |
l.sw CYGARC_JMP_BUF_R26 * OR1K_GPRSIZE(r3), r26
|
l.sw CYGARC_JMP_BUF_R26 * OR1K_GPRSIZE(r3), r26
|
l.sw CYGARC_JMP_BUF_R28 * OR1K_GPRSIZE(r3), r28
|
l.sw CYGARC_JMP_BUF_R28 * OR1K_GPRSIZE(r3), r28
|
l.sw CYGARC_JMP_BUF_R30 * OR1K_GPRSIZE(r3), r30
|
l.sw CYGARC_JMP_BUF_R30 * OR1K_GPRSIZE(r3), r30
|
l.movhi rv, 0
|
l.movhi rv, 0
|
l.jr lr
|
l.jr lr
|
|
#ifdef CYGHWR_BRANCH_SLOT_IMPLEMENTED
|
l.nop # delay slot
|
l.nop # delay slot
|
|
#endif
|
|
|
FUNC_END(hal_setjmp)
|
FUNC_END(hal_setjmp)
|
|
|
|
|
FUNC_START(hal_longjmp)
|
FUNC_START(hal_longjmp)
|
l.lwz r1, CYGARC_JMP_BUF_R1 * OR1K_GPRSIZE(r3)
|
l.lwz r1, CYGARC_JMP_BUF_R1 * OR1K_GPRSIZE(r3)
|
Line 287... |
Line 292... |
l.lwz r28, CYGARC_JMP_BUF_R28 * OR1K_GPRSIZE(r3)
|
l.lwz r28, CYGARC_JMP_BUF_R28 * OR1K_GPRSIZE(r3)
|
l.lwz r30, CYGARC_JMP_BUF_R30 * OR1K_GPRSIZE(r3)
|
l.lwz r30, CYGARC_JMP_BUF_R30 * OR1K_GPRSIZE(r3)
|
l.movhi rv, 0
|
l.movhi rv, 0
|
l.or rv, rv, r4
|
l.or rv, rv, r4
|
l.jr lr
|
l.jr lr
|
|
#ifdef CYGHWR_BRANCH_SLOT_IMPLEMENTED
|
l.nop # delay slot
|
l.nop # delay slot
|
|
#endif
|
|
|
FUNC_END(hal_longjmp)
|
FUNC_END(hal_longjmp)
|
|
|
|
|
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
# end of context.S
|
# end of context.S
|