brintos

brintos / linux-shallow public Read only

0
0
Text · 1.7 KiB · 7887f78 Raw
98 lines · plain
1/* SPDX-License-Identifier: GPL-2.0 */2#include "common.h"3 4	.data5	.balign 86success_message:7	.ascii "success: switch_endian_test\n\0"8 9	.balign 810failure_message:11	.ascii "failure: switch_endian_test\n\0"12 13	.section ".toc"14	.balign 815pattern:16	.8byte 0x5555AAAA5555AAAA17 18	.text19FUNC_START(_start)20	/* Load the pattern */21	ld	r15, pattern@TOC(%r2)22 23	/* Setup CR, only CR2-CR4 are maintained */24	lis	r3, 0x00FF25	ori	r3, r3, 0xF00026	mtcr	r327 28	/* Load the pattern slightly modified into the registers */29	mr	r3, r1530	addi	r4, r15, 431 32	addi	r5, r15, 3233	mtlr	r534 35	addi	r5, r15, 536	addi	r6, r15, 637	addi	r7, r15, 738	addi	r8, r15, 839 40	/* r9 - r12 are clobbered */41 42	addi	r13, r15, 1343	addi	r14, r15, 1444 45	/* Skip r15 we're using it */46 47	addi	r16, r15, 1648	addi	r17, r15, 1749	addi	r18, r15, 1850	addi	r19, r15, 1951	addi	r20, r15, 2052	addi	r21, r15, 2153	addi	r22, r15, 2254	addi	r23, r15, 2355	addi	r24, r15, 2456	addi	r25, r15, 2557	addi	r26, r15, 2658	addi	r27, r15, 2759	addi	r28, r15, 2860	addi	r29, r15, 2961	addi	r30, r15, 3062	addi	r31, r15, 3163 64	/*65	 * Call the syscall to switch endian.66	 * It clobbers r9-r12, XER, CTR and CR0-1,5-7.67	 */68	li r0, __NR_switch_endian69	sc70 71	tdi   0, 0, 0x48	// b +8 if the endian was switched72	b     .Lfail	  	// exit if endian didn't switch73 74#include "check-reversed.S"75 76	/* Flip back, r0 already has the switch syscall number */77	.long	0x02000044	/* sc */78 79#include "check.S"80 81	ld	r4, success_message@got(%r2)82	li	r5, 28	// strlen(success_message)83	li	r14, 0	// exit status84.Lout:85	li	r0, __NR_write86	li	r3, 1	/* stdout */87	sc88	li      r0, __NR_exit89	mr	r3, r1490	sc91	b       .92 93.Lfail:94	ld	r4, failure_message@got(%r2)95	li	r5, 28	// strlen(failure_message)96	li	r14, 197	b	.Lout98