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