/* 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