102 lines · plain
1/* SPDX-License-Identifier: GPL-2.0 */2#include "common.h"3 4/*5 * Checks that registers contain what we expect, ie. they were not clobbered by6 * the syscall.7 *8 * r15: pattern to check registers against.9 *10 * At the end r3 == 0 if everything's OK.11 */12 nop # guaranteed to be illegal in reverse-endian13 mr r9,r1514 cmpd r9,r3 # check r315 bne 1f16 addi r9,r15,4 # check r417 cmpd r9,r418 bne 1f19 lis r9,0x00FF # check CR20 ori r9,r9,0xF00021 mfcr r1022 and r10,r10,r923 cmpw r9,r1024 addi r9,r15,3425 bne 1f26 addi r9,r15,32 # check LR27 mflr r1028 cmpd r9,r1029 bne 1f30 addi r9,r15,5 # check r531 cmpd r9,r532 bne 1f33 addi r9,r15,6 # check r634 cmpd r9,r635 bne 1f36 addi r9,r15,7 # check r737 cmpd r9,r738 bne 1f39 addi r9,r15,8 # check r840 cmpd r9,r841 bne 1f42 addi r9,r15,13 # check r1343 cmpd r9,r1344 bne 1f45 addi r9,r15,14 # check r1446 cmpd r9,r1447 bne 1f48 addi r9,r15,16 # check r1649 cmpd r9,r1650 bne 1f51 addi r9,r15,17 # check r1752 cmpd r9,r1753 bne 1f54 addi r9,r15,18 # check r1855 cmpd r9,r1856 bne 1f57 addi r9,r15,19 # check r1958 cmpd r9,r1959 bne 1f60 addi r9,r15,20 # check r2061 cmpd r9,r2062 bne 1f63 addi r9,r15,21 # check r2164 cmpd r9,r2165 bne 1f66 addi r9,r15,22 # check r2267 cmpd r9,r2268 bne 1f69 addi r9,r15,23 # check r2370 cmpd r9,r2371 bne 1f72 addi r9,r15,24 # check r2473 cmpd r9,r2474 bne 1f75 addi r9,r15,25 # check r2576 cmpd r9,r2577 bne 1f78 addi r9,r15,26 # check r2679 cmpd r9,r2680 bne 1f81 addi r9,r15,27 # check r2782 cmpd r9,r2783 bne 1f84 addi r9,r15,28 # check r2885 cmpd r9,r2886 bne 1f87 addi r9,r15,29 # check r2988 cmpd r9,r2989 bne 1f90 addi r9,r15,30 # check r3091 cmpd r9,r3092 bne 1f93 addi r9,r15,31 # check r3194 cmpd r9,r3195 bne 1f96 b 2f971: mr r3, r998 li r0, __NR_exit99 sc1002: li r0, __NR_switch_endian101 nop102