xref: /openbmc/linux/tools/testing/selftests/powerpc/switch_endian/check.S (revision 498495dba268b20e8eadd7fe93c140c68b6cc9d2)
1*b2441318SGreg Kroah-Hartman/* SPDX-License-Identifier: GPL-2.0 */
24cd968efSMichael Ellerman#include "common.h"
34cd968efSMichael Ellerman
44cd968efSMichael Ellerman/*
54cd968efSMichael Ellerman * Checks that registers contain what we expect, ie. they were not clobbered by
64cd968efSMichael Ellerman * the syscall.
74cd968efSMichael Ellerman *
84cd968efSMichael Ellerman * r15: pattern to check registers against.
94cd968efSMichael Ellerman *
104cd968efSMichael Ellerman * At the end r3 == 0 if everything's OK.
114cd968efSMichael Ellerman */
124cd968efSMichael Ellerman	nop			# guaranteed to be illegal in reverse-endian
134cd968efSMichael Ellerman	mr	r9,r15
144cd968efSMichael Ellerman	cmpd    r9,r3		# check r3
154cd968efSMichael Ellerman	bne     1f
164cd968efSMichael Ellerman	addi    r9,r15,4	# check r4
174cd968efSMichael Ellerman	cmpd    r9,r4
184cd968efSMichael Ellerman	bne     1f
194cd968efSMichael Ellerman	lis     r9,0x00FF	# check CR
204cd968efSMichael Ellerman	ori     r9,r9,0xF000
214cd968efSMichael Ellerman	mfcr    r10
224cd968efSMichael Ellerman	and     r10,r10,r9
234cd968efSMichael Ellerman	cmpw    r9,r10
244cd968efSMichael Ellerman	addi    r9,r15,34
254cd968efSMichael Ellerman	bne     1f
264cd968efSMichael Ellerman	addi    r9,r15,32	# check LR
274cd968efSMichael Ellerman	mflr    r10
284cd968efSMichael Ellerman	cmpd    r9,r10
294cd968efSMichael Ellerman	bne     1f
304cd968efSMichael Ellerman	addi    r9,r15,5	# check r5
314cd968efSMichael Ellerman	cmpd    r9,r5
324cd968efSMichael Ellerman	bne     1f
334cd968efSMichael Ellerman	addi    r9,r15,6	# check r6
344cd968efSMichael Ellerman	cmpd    r9,r6
354cd968efSMichael Ellerman	bne     1f
364cd968efSMichael Ellerman	addi    r9,r15,7	# check r7
374cd968efSMichael Ellerman	cmpd    r9,r7
384cd968efSMichael Ellerman	bne     1f
394cd968efSMichael Ellerman	addi    r9,r15,8	# check r8
404cd968efSMichael Ellerman	cmpd    r9,r8
414cd968efSMichael Ellerman	bne     1f
424cd968efSMichael Ellerman	addi    r9,r15,13	# check r13
434cd968efSMichael Ellerman	cmpd    r9,r13
444cd968efSMichael Ellerman	bne     1f
454cd968efSMichael Ellerman	addi    r9,r15,14	# check r14
464cd968efSMichael Ellerman	cmpd    r9,r14
474cd968efSMichael Ellerman	bne     1f
484cd968efSMichael Ellerman	addi    r9,r15,16	# check r16
494cd968efSMichael Ellerman	cmpd    r9,r16
504cd968efSMichael Ellerman	bne     1f
514cd968efSMichael Ellerman	addi    r9,r15,17	# check r17
524cd968efSMichael Ellerman	cmpd    r9,r17
534cd968efSMichael Ellerman	bne     1f
544cd968efSMichael Ellerman	addi    r9,r15,18	# check r18
554cd968efSMichael Ellerman	cmpd    r9,r18
564cd968efSMichael Ellerman	bne     1f
574cd968efSMichael Ellerman	addi    r9,r15,19	# check r19
584cd968efSMichael Ellerman	cmpd    r9,r19
594cd968efSMichael Ellerman	bne     1f
604cd968efSMichael Ellerman	addi    r9,r15,20	# check r20
614cd968efSMichael Ellerman	cmpd    r9,r20
624cd968efSMichael Ellerman	bne     1f
634cd968efSMichael Ellerman	addi    r9,r15,21	# check r21
644cd968efSMichael Ellerman	cmpd    r9,r21
654cd968efSMichael Ellerman	bne     1f
664cd968efSMichael Ellerman	addi    r9,r15,22	# check r22
674cd968efSMichael Ellerman	cmpd    r9,r22
684cd968efSMichael Ellerman	bne     1f
694cd968efSMichael Ellerman	addi    r9,r15,23	# check r23
704cd968efSMichael Ellerman	cmpd    r9,r23
714cd968efSMichael Ellerman	bne     1f
724cd968efSMichael Ellerman	addi    r9,r15,24	# check r24
734cd968efSMichael Ellerman	cmpd    r9,r24
744cd968efSMichael Ellerman	bne     1f
754cd968efSMichael Ellerman	addi    r9,r15,25	# check r25
764cd968efSMichael Ellerman	cmpd    r9,r25
774cd968efSMichael Ellerman	bne     1f
784cd968efSMichael Ellerman	addi    r9,r15,26	# check r26
794cd968efSMichael Ellerman	cmpd    r9,r26
804cd968efSMichael Ellerman	bne     1f
814cd968efSMichael Ellerman	addi    r9,r15,27	# check r27
824cd968efSMichael Ellerman	cmpd    r9,r27
834cd968efSMichael Ellerman	bne     1f
844cd968efSMichael Ellerman	addi    r9,r15,28	# check r28
854cd968efSMichael Ellerman	cmpd    r9,r28
864cd968efSMichael Ellerman	bne     1f
874cd968efSMichael Ellerman	addi    r9,r15,29	# check r29
884cd968efSMichael Ellerman	cmpd    r9,r29
894cd968efSMichael Ellerman	bne     1f
904cd968efSMichael Ellerman	addi    r9,r15,30	# check r30
914cd968efSMichael Ellerman	cmpd    r9,r30
924cd968efSMichael Ellerman	bne     1f
934cd968efSMichael Ellerman	addi    r9,r15,31	# check r31
944cd968efSMichael Ellerman	cmpd    r9,r31
954cd968efSMichael Ellerman	bne     1f
964cd968efSMichael Ellerman	b	2f
974cd968efSMichael Ellerman1:	mr	r3, r9
984cd968efSMichael Ellerman	li	r0, __NR_exit
994cd968efSMichael Ellerman	sc
1004cd968efSMichael Ellerman2:	li	r0, __NR_switch_endian
1014cd968efSMichael Ellerman	nop
102