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