cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

check.S (1977B)


      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 by
      6 * 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-endian
     13	mr	r9,r15
     14	cmpd    r9,r3		# check r3
     15	bne     1f
     16	addi    r9,r15,4	# check r4
     17	cmpd    r9,r4
     18	bne     1f
     19	lis     r9,0x00FF	# check CR
     20	ori     r9,r9,0xF000
     21	mfcr    r10
     22	and     r10,r10,r9
     23	cmpw    r9,r10
     24	addi    r9,r15,34
     25	bne     1f
     26	addi    r9,r15,32	# check LR
     27	mflr    r10
     28	cmpd    r9,r10
     29	bne     1f
     30	addi    r9,r15,5	# check r5
     31	cmpd    r9,r5
     32	bne     1f
     33	addi    r9,r15,6	# check r6
     34	cmpd    r9,r6
     35	bne     1f
     36	addi    r9,r15,7	# check r7
     37	cmpd    r9,r7
     38	bne     1f
     39	addi    r9,r15,8	# check r8
     40	cmpd    r9,r8
     41	bne     1f
     42	addi    r9,r15,13	# check r13
     43	cmpd    r9,r13
     44	bne     1f
     45	addi    r9,r15,14	# check r14
     46	cmpd    r9,r14
     47	bne     1f
     48	addi    r9,r15,16	# check r16
     49	cmpd    r9,r16
     50	bne     1f
     51	addi    r9,r15,17	# check r17
     52	cmpd    r9,r17
     53	bne     1f
     54	addi    r9,r15,18	# check r18
     55	cmpd    r9,r18
     56	bne     1f
     57	addi    r9,r15,19	# check r19
     58	cmpd    r9,r19
     59	bne     1f
     60	addi    r9,r15,20	# check r20
     61	cmpd    r9,r20
     62	bne     1f
     63	addi    r9,r15,21	# check r21
     64	cmpd    r9,r21
     65	bne     1f
     66	addi    r9,r15,22	# check r22
     67	cmpd    r9,r22
     68	bne     1f
     69	addi    r9,r15,23	# check r23
     70	cmpd    r9,r23
     71	bne     1f
     72	addi    r9,r15,24	# check r24
     73	cmpd    r9,r24
     74	bne     1f
     75	addi    r9,r15,25	# check r25
     76	cmpd    r9,r25
     77	bne     1f
     78	addi    r9,r15,26	# check r26
     79	cmpd    r9,r26
     80	bne     1f
     81	addi    r9,r15,27	# check r27
     82	cmpd    r9,r27
     83	bne     1f
     84	addi    r9,r15,28	# check r28
     85	cmpd    r9,r28
     86	bne     1f
     87	addi    r9,r15,29	# check r29
     88	cmpd    r9,r29
     89	bne     1f
     90	addi    r9,r15,30	# check r30
     91	cmpd    r9,r30
     92	bne     1f
     93	addi    r9,r15,31	# check r31
     94	cmpd    r9,r31
     95	bne     1f
     96	b	2f
     971:	mr	r3, r9
     98	li	r0, __NR_exit
     99	sc
    1002:	li	r0, __NR_switch_endian
    101	nop