summaryrefslogtreecommitdiff
path: root/tools/testing/selftests/powerpc/switch_endian/check.S
blob: 927a5c675e832ea8b30a6f63a28b318842d5563a (plain)
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