Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #include "common.h"
0003 
0004 /*
0005  * Checks that registers contain what we expect, ie. they were not clobbered by
0006  * the syscall.
0007  *
0008  * r15: pattern to check registers against.
0009  *
0010  * At the end r3 == 0 if everything's OK.
0011  */
0012     nop         # guaranteed to be illegal in reverse-endian
0013     mr  r9,r15
0014     cmpd    r9,r3       # check r3
0015     bne     1f
0016     addi    r9,r15,4    # check r4
0017     cmpd    r9,r4
0018     bne     1f
0019     lis     r9,0x00FF   # check CR
0020     ori     r9,r9,0xF000
0021     mfcr    r10
0022     and     r10,r10,r9
0023     cmpw    r9,r10
0024     addi    r9,r15,34
0025     bne     1f
0026     addi    r9,r15,32   # check LR
0027     mflr    r10
0028     cmpd    r9,r10
0029     bne     1f
0030     addi    r9,r15,5    # check r5
0031     cmpd    r9,r5
0032     bne     1f
0033     addi    r9,r15,6    # check r6
0034     cmpd    r9,r6
0035     bne     1f
0036     addi    r9,r15,7    # check r7
0037     cmpd    r9,r7
0038     bne     1f
0039     addi    r9,r15,8    # check r8
0040     cmpd    r9,r8
0041     bne     1f
0042     addi    r9,r15,13   # check r13
0043     cmpd    r9,r13
0044     bne     1f
0045     addi    r9,r15,14   # check r14
0046     cmpd    r9,r14
0047     bne     1f
0048     addi    r9,r15,16   # check r16
0049     cmpd    r9,r16
0050     bne     1f
0051     addi    r9,r15,17   # check r17
0052     cmpd    r9,r17
0053     bne     1f
0054     addi    r9,r15,18   # check r18
0055     cmpd    r9,r18
0056     bne     1f
0057     addi    r9,r15,19   # check r19
0058     cmpd    r9,r19
0059     bne     1f
0060     addi    r9,r15,20   # check r20
0061     cmpd    r9,r20
0062     bne     1f
0063     addi    r9,r15,21   # check r21
0064     cmpd    r9,r21
0065     bne     1f
0066     addi    r9,r15,22   # check r22
0067     cmpd    r9,r22
0068     bne     1f
0069     addi    r9,r15,23   # check r23
0070     cmpd    r9,r23
0071     bne     1f
0072     addi    r9,r15,24   # check r24
0073     cmpd    r9,r24
0074     bne     1f
0075     addi    r9,r15,25   # check r25
0076     cmpd    r9,r25
0077     bne     1f
0078     addi    r9,r15,26   # check r26
0079     cmpd    r9,r26
0080     bne     1f
0081     addi    r9,r15,27   # check r27
0082     cmpd    r9,r27
0083     bne     1f
0084     addi    r9,r15,28   # check r28
0085     cmpd    r9,r28
0086     bne     1f
0087     addi    r9,r15,29   # check r29
0088     cmpd    r9,r29
0089     bne     1f
0090     addi    r9,r15,30   # check r30
0091     cmpd    r9,r30
0092     bne     1f
0093     addi    r9,r15,31   # check r31
0094     cmpd    r9,r31
0095     bne     1f
0096     b   2f
0097 1:  mr  r3, r9
0098     li  r0, __NR_exit
0099     sc
0100 2:  li  r0, __NR_switch_endian
0101     nop