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