0001
0002 #include "common.h"
0003
0004 .data
0005 .balign 8
0006 success_message:
0007 .ascii "success: switch_endian_test\n\0"
0008
0009 .balign 8
0010 failure_message:
0011 .ascii "failure: switch_endian_test\n\0"
0012
0013 .section ".toc"
0014 .balign 8
0015 pattern:
0016 .8byte 0x5555AAAA5555AAAA
0017
0018 .text
0019 FUNC_START(_start)
0020
0021 ld r15, pattern@TOC(%r2)
0022
0023
0024 lis r3, 0x00FF
0025 ori r3, r3, 0xF000
0026 mtcr r3
0027
0028
0029 mr r3, r15
0030 addi r4, r15, 4
0031
0032 addi r5, r15, 32
0033 mtlr r5
0034
0035 addi r5, r15, 5
0036 addi r6, r15, 6
0037 addi r7, r15, 7
0038 addi r8, r15, 8
0039
0040
0041
0042 addi r13, r15, 13
0043 addi r14, r15, 14
0044
0045
0046
0047 addi r16, r15, 16
0048 addi r17, r15, 17
0049 addi r18, r15, 18
0050 addi r19, r15, 19
0051 addi r20, r15, 20
0052 addi r21, r15, 21
0053 addi r22, r15, 22
0054 addi r23, r15, 23
0055 addi r24, r15, 24
0056 addi r25, r15, 25
0057 addi r26, r15, 26
0058 addi r27, r15, 27
0059 addi r28, r15, 28
0060 addi r29, r15, 29
0061 addi r30, r15, 30
0062 addi r31, r15, 31
0063
0064
0065
0066
0067
0068 li r0, __NR_switch_endian
0069 sc
0070
0071 tdi 0, 0, 0x48 // b +8 if the endian was switched
0072 b .Lfail // exit if endian didn't switch
0073
0074 #include "check-reversed.S"
0075
0076
0077 .long 0x02000044
0078
0079 #include "check.S"
0080
0081 ld r4, success_message@got(%r2)
0082 li r5, 28 // strlen(success_message)
0083 li r14, 0 // exit status
0084 .Lout:
0085 li r0, __NR_write
0086 li r3, 1
0087 sc
0088 li r0, __NR_exit
0089 mr r3, r14
0090 sc
0091 b .
0092
0093 .Lfail:
0094 ld r4, failure_message@got(%r2)
0095 li r5, 28 // strlen(failure_message)
0096 li r14, 1
0097 b .Lout