Home | History | Annotate | Download | only in mips
      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