| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- .align 2
- .globl .ontop_fcontext
- .ontop_fcontext:
- # reserve space on stack
- subi 1, 1, 184
- std 13, 0(1) # save R13
- std 14, 8(1) # save R14
- std 15, 16(1) # save R15
- std 16, 24(1) # save R16
- std 17, 32(1) # save R17
- std 18, 40(1) # save R18
- std 19, 48(1) # save R19
- std 20, 56(1) # save R20
- std 21, 64(1) # save R21
- std 22, 72(1) # save R22
- std 23, 80(1) # save R23
- std 24, 88(1) # save R24
- std 25, 96(1) # save R25
- std 26, 104(1) # save R26
- std 27, 112(1) # save R27
- std 29, 120(1) # save R28
- std 29, 128(1) # save R29
- std 30, 136(1) # save R30
- std 31, 144(1) # save R31
- std 3, 152(1) # save hidden
- # save CR
- mfcr 0
- std 0, 160(1)
- # save LR
- mflr 0
- std 0, 168(1)
- # save LR as PC
- std 0, 176(1)
- # store RSP (pointing to context-data) in R7
- mr 7, 1
- # restore RSP (pointing to context-data) from R4
- mr 1, 4
- ld 13, 0(1) # restore R13
- ld 14, 8(1) # restore R14
- ld 15, 16(1) # restore R15
- ld 16, 24(1) # restore R16
- ld 17, 32(1) # restore R17
- ld 18, 40(1) # restore R18
- ld 19, 48(1) # restore R19
- ld 20, 56(1) # restore R20
- ld 21, 64(1) # restore R21
- ld 22, 72(1) # restore R22
- ld 23, 80(1) # restore R23
- ld 24, 88(1) # restore R24
- ld 25, 96(1) # restore R25
- ld 26, 104(1) # restore R26
- ld 27, 112(1) # restore R27
- ld 28, 120(1) # restore R28
- ld 29, 128(1) # restore R29
- ld 30, 136(1) # restore R30
- ld 31, 144(1) # restore R31
- ld 4, 152(1) # restore hidden
- # restore CR
- ld 0, 160(1)
- mtcr 0
- # restore LR
- ld 0, 168(1)
- mtlr 0
- # ignore PC
- # adjust stack
- addi 1, 1, 184
- # return transfer_t
- std 7, 0(4)
- std 5, 8(4)
- # restore CTR
- mtctr 6
- # jump to context
- bctr
|