check.S 1.9 KB

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