ontop_ppc64_sysv_xcoff_gas.S 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. .align 2
  2. .globl .ontop_fcontext
  3. .ontop_fcontext:
  4. # reserve space on stack
  5. subi 1, 1, 184
  6. std 13, 0(1) # save R13
  7. std 14, 8(1) # save R14
  8. std 15, 16(1) # save R15
  9. std 16, 24(1) # save R16
  10. std 17, 32(1) # save R17
  11. std 18, 40(1) # save R18
  12. std 19, 48(1) # save R19
  13. std 20, 56(1) # save R20
  14. std 21, 64(1) # save R21
  15. std 22, 72(1) # save R22
  16. std 23, 80(1) # save R23
  17. std 24, 88(1) # save R24
  18. std 25, 96(1) # save R25
  19. std 26, 104(1) # save R26
  20. std 27, 112(1) # save R27
  21. std 29, 120(1) # save R28
  22. std 29, 128(1) # save R29
  23. std 30, 136(1) # save R30
  24. std 31, 144(1) # save R31
  25. std 3, 152(1) # save hidden
  26. # save CR
  27. mfcr 0
  28. std 0, 160(1)
  29. # save LR
  30. mflr 0
  31. std 0, 168(1)
  32. # save LR as PC
  33. std 0, 176(1)
  34. # store RSP (pointing to context-data) in R7
  35. mr 7, 1
  36. # restore RSP (pointing to context-data) from R4
  37. mr 1, 4
  38. ld 13, 0(1) # restore R13
  39. ld 14, 8(1) # restore R14
  40. ld 15, 16(1) # restore R15
  41. ld 16, 24(1) # restore R16
  42. ld 17, 32(1) # restore R17
  43. ld 18, 40(1) # restore R18
  44. ld 19, 48(1) # restore R19
  45. ld 20, 56(1) # restore R20
  46. ld 21, 64(1) # restore R21
  47. ld 22, 72(1) # restore R22
  48. ld 23, 80(1) # restore R23
  49. ld 24, 88(1) # restore R24
  50. ld 25, 96(1) # restore R25
  51. ld 26, 104(1) # restore R26
  52. ld 27, 112(1) # restore R27
  53. ld 28, 120(1) # restore R28
  54. ld 29, 128(1) # restore R29
  55. ld 30, 136(1) # restore R30
  56. ld 31, 144(1) # restore R31
  57. ld 4, 152(1) # restore hidden
  58. # restore CR
  59. ld 0, 160(1)
  60. mtcr 0
  61. # restore LR
  62. ld 0, 168(1)
  63. mtlr 0
  64. # ignore PC
  65. # adjust stack
  66. addi 1, 1, 184
  67. # return transfer_t
  68. std 7, 0(4)
  69. std 5, 8(4)
  70. # restore CTR
  71. mtctr 6
  72. # jump to context
  73. bctr