.globl .ontop_fcontext .globl ontop_fcontext[DS] .align 2 .csect ontop_fcontext[DS] ontop_fcontext: .long .ontop_fcontext .ontop_fcontext: # reserve space on stack subi 1, 1, 92 stw 13, 0(1) # save R13 stw 14, 4(1) # save R14 stw 15, 8(1) # save R15 stw 16, 12(1) # save R16 stw 17, 16(1) # save R17 stw 18, 20(1) # save R18 stw 19, 24(1) # save R19 stw 20, 28(1) # save R20 stw 21, 32(1) # save R21 stw 22, 36(1) # save R22 stw 23, 40(1) # save R23 stw 24, 44(1) # save R24 stw 25, 48(1) # save R25 stw 26, 52(1) # save R26 stw 27, 56(1) # save R27 stw 28, 60(1) # save R28 stw 29, 64(1) # save R29 stw 30, 68(1) # save R30 stw 31, 72(1) # save R31 stw 3, 76(1) # save hidden # save CR mfcr 0 stw 0, 80(1) # save LR mflr 0 stw 0, 84(1) # save LR as PC stw 0, 88(1) # store RSP (pointing to context-data) in R6 mr 7, 1 # restore RSP (pointing to context-data) from R4 mr 1, 4 lwz 13, 0(1) # restore R13 lwz 14, 4(1) # restore R14 lwz 15, 8(1) # restore R15 lwz 16, 12(1) # restore R16 lwz 17, 16(1) # restore R17 lwz 18, 20(1) # restore R18 lwz 19, 24(1) # restore R19 lwz 20, 28(1) # restore R20 lwz 21, 32(1) # restore R21 lwz 22, 36(1) # restore R22 lwz 23, 40(1) # restore R23 lwz 24, 44(1) # restore R24 lwz 25, 48(1) # restore R25 lwz 26, 52(1) # restore R26 lwz 27, 56(1) # restore R27 lwz 28, 60(1) # restore R28 lwz 29, 64(1) # restore R29 lwz 30, 68(1) # restore R30 lwz 31, 72(1) # restore R31 lwz 4, 76(1) # restore hidden # restore CR lwz 0, 80(1) mtcr 0 # restore LR lwz 0, 84(1) mtlr 0 # ignore PC # adjust stack addi 1, 1, 92 # return transfer_t stw 7, 0(3) stw 5, 4(3) # restore CTR mtctr 6 # jump to context bctr