check.S 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #include "common.h"
  2. /*
  3. * Checks that registers contain what we expect, ie. they were not clobbered by
  4. * the syscall.
  5. *
  6. * r15: pattern to check registers against.
  7. *
  8. * At the end r3 == 0 if everything's OK.
  9. */
  10. nop # guaranteed to be illegal in reverse-endian
  11. mr r9,r15
  12. cmpd r9,r3 # check r3
  13. bne 1f
  14. addi r9,r15,4 # check r4
  15. cmpd r9,r4
  16. bne 1f
  17. lis r9,0x00FF # check CR
  18. ori r9,r9,0xF000
  19. mfcr r10
  20. and r10,r10,r9
  21. cmpw r9,r10
  22. addi r9,r15,34
  23. bne 1f
  24. addi r9,r15,32 # check LR
  25. mflr r10
  26. cmpd r9,r10
  27. bne 1f
  28. addi r9,r15,5 # check r5
  29. cmpd r9,r5
  30. bne 1f
  31. addi r9,r15,6 # check r6
  32. cmpd r9,r6
  33. bne 1f
  34. addi r9,r15,7 # check r7
  35. cmpd r9,r7
  36. bne 1f
  37. addi r9,r15,8 # check r8
  38. cmpd r9,r8
  39. bne 1f
  40. addi r9,r15,13 # check r13
  41. cmpd r9,r13
  42. bne 1f
  43. addi r9,r15,14 # check r14
  44. cmpd r9,r14
  45. bne 1f
  46. addi r9,r15,16 # check r16
  47. cmpd r9,r16
  48. bne 1f
  49. addi r9,r15,17 # check r17
  50. cmpd r9,r17
  51. bne 1f
  52. addi r9,r15,18 # check r18
  53. cmpd r9,r18
  54. bne 1f
  55. addi r9,r15,19 # check r19
  56. cmpd r9,r19
  57. bne 1f
  58. addi r9,r15,20 # check r20
  59. cmpd r9,r20
  60. bne 1f
  61. addi r9,r15,21 # check r21
  62. cmpd r9,r21
  63. bne 1f
  64. addi r9,r15,22 # check r22
  65. cmpd r9,r22
  66. bne 1f
  67. addi r9,r15,23 # check r23
  68. cmpd r9,r23
  69. bne 1f
  70. addi r9,r15,24 # check r24
  71. cmpd r9,r24
  72. bne 1f
  73. addi r9,r15,25 # check r25
  74. cmpd r9,r25
  75. bne 1f
  76. addi r9,r15,26 # check r26
  77. cmpd r9,r26
  78. bne 1f
  79. addi r9,r15,27 # check r27
  80. cmpd r9,r27
  81. bne 1f
  82. addi r9,r15,28 # check r28
  83. cmpd r9,r28
  84. bne 1f
  85. addi r9,r15,29 # check r29
  86. cmpd r9,r29
  87. bne 1f
  88. addi r9,r15,30 # check r30
  89. cmpd r9,r30
  90. bne 1f
  91. addi r9,r15,31 # check r31
  92. cmpd r9,r31
  93. bne 1f
  94. b 2f
  95. 1: mr r3, r9
  96. li r0, __NR_exit
  97. sc
  98. 2: li r0, __NR_switch_endian
  99. nop