1 /* 2 * This handler restores state following a selfVerification memory access. 3 * On entry: 4 * a0 - offset from rSELF to the 1st element of the coreRegs save array. 5 * Note: the following registers are not restored 6 * zero, AT, gp, sp, fp, ra 7 */ 8 9 add a0, a0, rSELF # pointer to heapArgSpace.coreRegs[0] 10#if 0 11 lw zero, r_ZERO*4(a0) # restore zero 12#endif 13 .set noat 14 lw AT, r_AT*4(a0) # restore at 15 .set at 16 lw v0, r_V0*4(a0) # restore v0 17 lw v1, r_V1*4(a0) # restore v1 18 19 lw a1, r_A1*4(a0) # restore a1 20 lw a2, r_A2*4(a0) # restore a2 21 lw a3, r_A3*4(a0) # restore a3 22 23 lw t0, r_T0*4(a0) # restore t0 24 lw t1, r_T1*4(a0) # restore t1 25 lw t2, r_T2*4(a0) # restore t2 26 lw t3, r_T3*4(a0) # restore t3 27 lw t4, r_T4*4(a0) # restore t4 28 lw t5, r_T5*4(a0) # restore t5 29 lw t6, r_T6*4(a0) # restore t6 30 lw t7, r_T7*4(a0) # restore t7 31 32 lw s0, r_S0*4(a0) # restore s0 33 lw s1, r_S1*4(a0) # restore s1 34 lw s2, r_S2*4(a0) # restore s2 35 lw s3, r_S3*4(a0) # restore s3 36 lw s4, r_S4*4(a0) # restore s4 37 lw s5, r_S5*4(a0) # restore s5 38 lw s6, r_S6*4(a0) # restore s6 39 lw s7, r_S7*4(a0) # restore s7 40 41 lw t8, r_T8*4(a0) # restore t8 42 lw t9, r_T9*4(a0) # restore t9 43 44 lw k0, r_K0*4(a0) # restore k0 45 lw k1, r_K1*4(a0) # restore k1 46 47#if 0 48 lw gp, r_GP*4(a0) # restore gp 49 lw sp, r_SP*4(a0) # restore sp 50 lw fp, r_FP*4(a0) # restore fp 51 lw ra, r_RA*4(a0) # restore ra 52#endif 53 54/* #ifdef HARD_FLOAT */ 55#if 0 56 lw f0, fr0*4(a0) # restore f0 57 lw f1, fr1*4(a0) # restore f1 58 lw f2, fr2*4(a0) # restore f2 59 lw f3, fr3*4(a0) # restore f3 60 lw f4, fr4*4(a0) # restore f4 61 lw f5, fr5*4(a0) # restore f5 62 lw f6, fr6*4(a0) # restore f6 63 lw f7, fr7*4(a0) # restore f7 64 lw f8, fr8*4(a0) # restore f8 65 lw f9, fr9*4(a0) # restore f9 66 lw f10, fr10*4(a0) # restore f10 67 lw f11, fr11*4(a0) # restore f11 68 lw f12, fr12*4(a0) # restore f12 69 lw f13, fr13*4(a0) # restore f13 70 lw f14, fr14*4(a0) # restore f14 71 lw f15, fr15*4(a0) # restore f15 72 lw f16, fr16*4(a0) # restore f16 73 lw f17, fr17*4(a0) # restore f17 74 lw f18, fr18*4(a0) # restore f18 75 lw f19, fr19*4(a0) # restore f19 76 lw f20, fr20*4(a0) # restore f20 77 lw f21, fr21*4(a0) # restore f21 78 lw f22, fr22*4(a0) # restore f22 79 lw f23, fr23*4(a0) # restore f23 80 lw f24, fr24*4(a0) # restore f24 81 lw f25, fr25*4(a0) # restore f25 82 lw f26, fr26*4(a0) # restore f26 83 lw f27, fr27*4(a0) # restore f27 84 lw f28, fr28*4(a0) # restore f28 85 lw f29, fr29*4(a0) # restore f29 86 lw f30, fr30*4(a0) # restore f30 87 lw f31, fr31*4(a0) # restore f31 88#endif 89 90 lw a0, r_A1*4(a0) # restore a0 91 RETURN 92