Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ia64/src/ivt.S

    r27f67f5 r2277e03  
    2828#
    2929
    30 #include <abi/asmtool.h>
    3130#include <arch/stack.h>
    3231#include <arch/register.h>
    3332#include <arch/mm/page.h>
    34 #include <arch/interrupt.h>
    35 #include <arch/istate_struct.h>
    3633#include <align.h>
    3734
    38 #define STACK_FRAME_SIZE        ALIGN_UP(ISTATE_SIZE + STACK_SCRATCH_AREA_SIZE, STACK_ALIGNMENT)
    39 
    40 #define FLOAT_ITEM_SIZE         (STACK_ITEM_SIZE * 2)
     35#define FRS_TO_SAVE 30
     36#define STACK_ITEMS             (21 + FRS_TO_SAVE * 2)
     37#define STACK_FRAME_SIZE        ALIGN_UP((STACK_ITEMS * STACK_ITEM_SIZE) + STACK_SCRATCH_AREA_SIZE, STACK_ALIGNMENT)
     38
     39#if (STACK_ITEMS % 2 == 0)
     40#       define STACK_FRAME_BIAS 8
     41#else
     42#       define STACK_FRAME_BIAS 16
     43#endif
    4144
    4245/** Partitioning of bank 0 registers. */
    43 #define R_VECTOR        r16
     46#define R_OFFS          r16
    4447#define R_HANDLER       r17
    4548#define R_RET           r18
     49#define R_TMP           r19
    4650#define R_KSTACK_BSP    r22     /* keep in sync with before_thread_runs_arch() */
    4751#define R_KSTACK        r23     /* keep in sync with before_thread_runs_arch() */
    4852
    4953/* Speculation vector handler */
    50 .macro SPECULATION_VECTOR_HANDLER vector
    51     .org ivt + \vector * 0x100
     54.macro SPECULATION_VECTOR_HANDLER offs
     55    .org ivt + \offs
    5256
    5357    /* 1. Save predicates, IIM, IIP, IPSR and ISR CR's in bank 0 registers. */
     
    9599 * @param handler Interrupt handler address.
    96100 */
    97 .macro HEAVYWEIGHT_HANDLER vector, handler=exc_dispatch
    98     .org ivt + \vector * 0x100
    99         mov R_VECTOR = \vector
     101.macro HEAVYWEIGHT_HANDLER offs, handler=universal_handler
     102    .org ivt + \offs
     103        mov R_OFFS = \offs
    100104        movl R_HANDLER = \handler ;;
    101105        br heavyweight_handler
    102106.endm
    103107
    104 SYMBOL(heavyweight_handler)
     108.global heavyweight_handler
     109heavyweight_handler:
    105110    /* 1. copy interrupt registers into bank 0 */
    106111   
     
    115120        mov r27 = ~PSR_DFH_MASK ;;
    116121        and r26 = r25, r26
    117         and r24 = r24, r27 ;;
    118         or r24 = r24, r26 ;;
    119         mov psr.l = r24 ;;
     122        and r24 = r24, r27;;
     123        or r24 = r24, r26;;
     124        mov psr.l = r24;;
    120125        srlz.i
    121         srlz.d ;;
     126        srlz.d;;
    122127
    123128        mov r24 = cr.iip
     
    156161(p4)    mov r12 = R_KSTACK ;;
    157162       
    158         add r12 = -STACK_FRAME_SIZE, r12 ;;
    159         add r31 = STACK_SCRATCH_AREA_SIZE + ISTATE_OFFSET_IN6, r12
     163        add r31 = -STACK_FRAME_BIAS, r12 ;;
     164        add r12 = -STACK_FRAME_SIZE, r12
    160165
    161166    /* 4. save registers in bank 0 into memory stack */
     
    165170         * copy input parameters to stack.
    166171         */
    167         cmp.eq p6, p5 = EXC_BREAK_INSTRUCTION, R_VECTOR ;;
     172        mov R_TMP = 0x2c00 ;;
     173        cmp.eq p6, p5 = R_OFFS, R_TMP ;;
    168174       
    169175        /*
     
    173179         */
    174180
    175 (p6)    st8 [r31] = r38, -STACK_ITEM_SIZE ;;    /* save in6 */
    176 (p6)    st8 [r31] = r37, -STACK_ITEM_SIZE ;;    /* save in5 */
    177 (p6)    st8 [r31] = r36, -STACK_ITEM_SIZE ;;    /* save in4 */ 
    178 (p6)    st8 [r31] = r35, -STACK_ITEM_SIZE ;;    /* save in3 */
    179 (p6)    st8 [r31] = r34, -STACK_ITEM_SIZE ;;    /* save in2 */
    180 (p6)    st8 [r31] = r33, -STACK_ITEM_SIZE ;;    /* save in1 */
    181 (p6)    st8 [r31] = r32, -STACK_ITEM_SIZE ;;    /* save in0 */
    182 (p5)    add r31 = -(7 * STACK_ITEM_SIZE), r31 ;;
     181(p6)    st8 [r31] = r38, -8 ;;          /* save in6 */
     182(p6)    st8 [r31] = r37, -8 ;;          /* save in5 */
     183(p6)    st8 [r31] = r36, -8 ;;          /* save in4 */ 
     184(p6)    st8 [r31] = r35, -8 ;;          /* save in3 */
     185(p6)    st8 [r31] = r34, -8 ;;          /* save in2 */
     186(p6)    st8 [r31] = r33, -8 ;;          /* save in1 */
     187(p6)    st8 [r31] = r32, -8 ;;          /* save in0 */
     188(p5)    add r31 = -56, r31 ;;
    183189   
    184         st8 [r31] = r30, -STACK_ITEM_SIZE ;;    /* save old stack pointer */
    185        
    186         st8 [r31] = r29, -STACK_ITEM_SIZE ;;    /* save predicate registers */
    187 
    188         st8 [r31] = r24, -STACK_ITEM_SIZE ;;    /* save cr.iip */
    189         st8 [r31] = r25, -STACK_ITEM_SIZE ;;    /* save cr.ipsr */
    190         st8 [r31] = r26, -STACK_ITEM_SIZE ;;    /* save cr.iipa */
    191         st8 [r31] = r27, -STACK_ITEM_SIZE ;;    /* save cr.isr */
    192         st8 [r31] = r28, -STACK_ITEM_SIZE ;;    /* save cr.ifa */
     190        st8 [r31] = r30, -8 ;;          /* save old stack pointer */
     191       
     192        st8 [r31] = r29, -8 ;;          /* save predicate registers */
     193
     194        st8 [r31] = r24, -8 ;;          /* save cr.iip */
     195        st8 [r31] = r25, -8 ;;          /* save cr.ipsr */
     196        st8 [r31] = r26, -8 ;;          /* save cr.iipa */
     197        st8 [r31] = r27, -8 ;;          /* save cr.isr */
     198        st8 [r31] = r28, -8 ;;          /* save cr.ifa */
    193199
    194200    /* 5. RSE switch from interrupted context */
     
    198204        mov r26 = cr.ifs
    199205       
    200         st8 [r31] = r24, -STACK_ITEM_SIZE ;;    /* save ar.rsc */
    201         st8 [r31] = r25, -STACK_ITEM_SIZE ;;    /* save ar.pfs */
    202         st8 [r31] = r26, -STACK_ITEM_SIZE       /* save ar.ifs */
     206        st8 [r31] = r24, -8 ;;          /* save ar.rsc */
     207        st8 [r31] = r25, -8 ;;          /* save ar.pfs */
     208        st8 [r31] = r26, -8             /* save ar.ifs */
    203209       
    204210        and r24 = ~(RSC_PL_MASK), r24 ;;
     
    225231        mov r29 = ar.bsp
    226232       
    227         st8 [r31] = r27, -STACK_ITEM_SIZE ;;    /* save ar.rnat */
    228         st8 [r31] = r30, -STACK_ITEM_SIZE ;;    /* save new value written to ar.bspstore */
    229         st8 [r31] = r28, -STACK_ITEM_SIZE ;;    /* save ar.bspstore */
    230         st8 [r31] = r29, -STACK_ITEM_SIZE       /* save ar.bsp */
     233        st8 [r31] = r27, -8 ;;          /* save ar.rnat */
     234        st8 [r31] = r30, -8 ;;          /* save new value written to ar.bspstore */
     235        st8 [r31] = r28, -8 ;;          /* save ar.bspstore */
     236        st8 [r31] = r29, -8             /* save ar.bsp */
    231237       
    232238        mov ar.rsc = r24                /* restore RSE's setting + kernel privileges */
     
    240246        cover                           /* allocate zero size frame (step 1 (from Intel Docs)) */
    241247
    242         add r31 = STACK_SCRATCH_AREA_SIZE + ISTATE_OFFSET_AR_BSP, r12 ;;
    243 
    244         ld8 r30 = [r31], +STACK_ITEM_SIZE ;;    /* load ar.bsp */
    245         ld8 r29 = [r31], +STACK_ITEM_SIZE ;;    /* load ar.bspstore */
    246         ld8 r28 = [r31], +STACK_ITEM_SIZE ;;    /* load ar.bspstore_new */
     248        add r31 = (STACK_SCRATCH_AREA_SIZE + (FRS_TO_SAVE * 2 * 8)), r12 ;;
     249
     250        ld8 r30 = [r31], +8 ;;          /* load ar.bsp */
     251        ld8 r29 = [r31], +8 ;;          /* load ar.bspstore */
     252        ld8 r28 = [r31], +8 ;;          /* load ar.bspstore_new */
    247253        sub r27 = r30 , r28 ;;          /* calculate loadrs (step 2) */
    248254        shl r27 = r27, 16
     
    255261        loadrs                          /* (step 3) */
    256262
    257         ld8 r27 = [r31], +STACK_ITEM_SIZE ;;    /* load ar.rnat */
    258         ld8 r26 = [r31], +STACK_ITEM_SIZE ;;    /* load cr.ifs */
    259         ld8 r25 = [r31], +STACK_ITEM_SIZE ;;    /* load ar.pfs */
    260         ld8 r24 = [r31], +STACK_ITEM_SIZE ;;    /* load ar.rsc */
     263        ld8 r27 = [r31], +8 ;;          /* load ar.rnat */
     264        ld8 r26 = [r31], +8 ;;          /* load cr.ifs */
     265        ld8 r25 = [r31], +8 ;;          /* load ar.pfs */
     266        ld8 r24 = [r31], +8 ;;          /* load ar.rsc */
    261267
    262268        mov ar.bspstore = r29 ;;        /* (step 4) */
     
    269275
    270276    /* 17. restore interruption state from memory stack */
    271         ld8 r28 = [r31], +STACK_ITEM_SIZE ;;    /* load cr.ifa */               
    272         ld8 r27 = [r31], +STACK_ITEM_SIZE ;;    /* load cr.isr */
    273         ld8 r26 = [r31], +STACK_ITEM_SIZE ;;    /* load cr.iipa */
    274         ld8 r25 = [r31], +STACK_ITEM_SIZE ;;    /* load cr.ipsr */
    275         ld8 r24 = [r31], +STACK_ITEM_SIZE ;;    /* load cr.iip */
     277        ld8 r28 = [r31], +8 ;;          /* load cr.ifa */               
     278        ld8 r27 = [r31], +8 ;;          /* load cr.isr */
     279        ld8 r26 = [r31], +8 ;;          /* load cr.iipa */
     280        ld8 r25 = [r31], +8 ;;          /* load cr.ipsr */
     281        ld8 r24 = [r31], +8 ;;          /* load cr.iip */
    276282
    277283        mov cr.iip = r24;;
     
    286292        and r25 = r25, r27
    287293        and r24 = r24, r26 ;;
    288         or r25 = r25, r24 ;;
     294        or r25 = r25, r24;;
    289295        mov cr.ipsr = r25
    290296
    291297    /* 18. restore predicate registers from memory stack */
    292         ld8 r29 = [r31], +STACK_ITEM_SIZE ;;    /* load predicate registers */
     298        ld8 r29 = [r31], +8 ;;          /* load predicate registers */
    293299        mov pr = r29
    294300       
    295301    /* 19. return from interruption */
    296         ld8 r12 = [r31]                         /* load stack pointer */
     302        ld8 r12 = [r31]                 /* load stack pointer */
    297303        rfi ;;
    298304
    299 FUNCTION_BEGIN(heavyweight_handler_inner)
     305.global heavyweight_handler_inner
     306heavyweight_handler_inner:
    300307        /*
    301308         * From this point, the rest of the interrupted context
     
    307314        mov loc1 = R_RET        /* b0 belonging to interrupted context */
    308315        mov loc2 = R_HANDLER
    309         mov out0 = R_VECTOR
     316        mov out0 = R_OFFS
    310317       
    311318        add out1 = STACK_SCRATCH_AREA_SIZE, r12
     
    366373        mov loc46 = r31
    367374
    368         add r24 = ISTATE_OFFSET_F8 + STACK_SCRATCH_AREA_SIZE, r12
    369         add r25 = ISTATE_OFFSET_F9 + STACK_SCRATCH_AREA_SIZE, r12
    370         add r26 = ISTATE_OFFSET_F2 + STACK_SCRATCH_AREA_SIZE, r12
    371         add r27 = ISTATE_OFFSET_F3 + STACK_SCRATCH_AREA_SIZE, r12
    372         add r28 = ISTATE_OFFSET_F4 + STACK_SCRATCH_AREA_SIZE, r12
    373         add r29 = ISTATE_OFFSET_F5 + STACK_SCRATCH_AREA_SIZE, r12
    374         add r30 = ISTATE_OFFSET_F6 + STACK_SCRATCH_AREA_SIZE, r12
    375         add r31 = ISTATE_OFFSET_F7 + STACK_SCRATCH_AREA_SIZE, r12 ;;
    376        
    377         stf.spill [r26] = f2, 8 * FLOAT_ITEM_SIZE
    378         stf.spill [r27] = f3, 8 * FLOAT_ITEM_SIZE
    379         stf.spill [r28] = f4, 8 * FLOAT_ITEM_SIZE
    380         stf.spill [r29] = f5, 8 * FLOAT_ITEM_SIZE
    381         stf.spill [r30] = f6, 8 * FLOAT_ITEM_SIZE
    382         stf.spill [r31] = f7, 8 * FLOAT_ITEM_SIZE ;;
    383 
    384         stf.spill [r24] = f8, 8 * FLOAT_ITEM_SIZE
    385         stf.spill [r25] = f9, 8 * FLOAT_ITEM_SIZE
    386         stf.spill [r26] = f10, 8 * FLOAT_ITEM_SIZE
    387         stf.spill [r27] = f11, 8 * FLOAT_ITEM_SIZE
    388         stf.spill [r28] = f12, 8 * FLOAT_ITEM_SIZE
    389         stf.spill [r29] = f13, 8 * FLOAT_ITEM_SIZE
    390         stf.spill [r30] = f14, 8 * FLOAT_ITEM_SIZE
    391         stf.spill [r31] = f15, 8 * FLOAT_ITEM_SIZE ;;
    392 
    393         stf.spill [r24] = f16, 8 * FLOAT_ITEM_SIZE
    394         stf.spill [r25] = f17, 8 * FLOAT_ITEM_SIZE
    395         stf.spill [r26] = f18, 8 * FLOAT_ITEM_SIZE
    396         stf.spill [r27] = f19, 8 * FLOAT_ITEM_SIZE
    397         stf.spill [r28] = f20, 8 * FLOAT_ITEM_SIZE
    398         stf.spill [r29] = f21, 8 * FLOAT_ITEM_SIZE
    399         stf.spill [r30] = f22, 8 * FLOAT_ITEM_SIZE
    400         stf.spill [r31] = f23, 8 * FLOAT_ITEM_SIZE ;;
    401 
    402         stf.spill [r24] = f24
    403         stf.spill [r25] = f25
    404         stf.spill [r26] = f26
    405         stf.spill [r27] = f27
    406         stf.spill [r28] = f28
    407         stf.spill [r29] = f29
    408         stf.spill [r30] = f30
    409         stf.spill [r31] = f31 ;;
     375        add r24 = 96 + STACK_SCRATCH_AREA_SIZE, r12
     376        add r25 = 112 + STACK_SCRATCH_AREA_SIZE, r12
     377        add r26 = 0 + STACK_SCRATCH_AREA_SIZE, r12
     378        add r27 = 16 + STACK_SCRATCH_AREA_SIZE, r12
     379        add r28 = 32 + STACK_SCRATCH_AREA_SIZE, r12
     380        add r29 = 48 + STACK_SCRATCH_AREA_SIZE, r12
     381        add r30 = 64 + STACK_SCRATCH_AREA_SIZE, r12
     382        add r31 = 80 + STACK_SCRATCH_AREA_SIZE, r12 ;;
     383       
     384        stf.spill [r26] = f2, 0x80
     385        stf.spill [r27] = f3, 0x80
     386        stf.spill [r28] = f4, 0x80
     387        stf.spill [r29] = f5, 0x80
     388        stf.spill [r30] = f6, 0x80
     389        stf.spill [r31] = f7, 0x80 ;;
     390
     391        stf.spill [r24] = f8, 0x80
     392        stf.spill [r25] = f9, 0x80
     393        stf.spill [r26] = f10, 0x80
     394        stf.spill [r27] = f11, 0x80
     395        stf.spill [r28] = f12, 0x80
     396        stf.spill [r29] = f13, 0x80
     397        stf.spill [r30] = f14, 0x80
     398        stf.spill [r31] = f15, 0x80 ;;
     399
     400        stf.spill [r24] = f16, 0x80
     401        stf.spill [r25] = f17, 0x80
     402        stf.spill [r26] = f18, 0x80
     403        stf.spill [r27] = f19, 0x80
     404        stf.spill [r28] = f20, 0x80
     405        stf.spill [r29] = f21, 0x80
     406        stf.spill [r30] = f22, 0x80
     407        stf.spill [r31] = f23, 0x80 ;;
     408
     409        stf.spill [r24] = f24, 0x80
     410        stf.spill [r25] = f25, 0x80
     411        stf.spill [r26] = f26, 0x80
     412        stf.spill [r27] = f27, 0x80
     413        stf.spill [r28] = f28, 0x80
     414        stf.spill [r29] = f29, 0x80
     415        stf.spill [r30] = f30, 0x80
     416        stf.spill [r31] = f31, 0x80 ;;
    410417
    411418        mov loc47 = ar.fpsr     /* preserve floating point status register */
     
    435442
    436443    /* 13. restore general and floating-point registers */
    437         add r24 = ISTATE_OFFSET_F8 + STACK_SCRATCH_AREA_SIZE, r12
    438         add r25 = ISTATE_OFFSET_F9 + STACK_SCRATCH_AREA_SIZE, r12
    439         add r26 = ISTATE_OFFSET_F2 + STACK_SCRATCH_AREA_SIZE, r12
    440         add r27 = ISTATE_OFFSET_F3 + STACK_SCRATCH_AREA_SIZE, r12
    441         add r28 = ISTATE_OFFSET_F4 + STACK_SCRATCH_AREA_SIZE, r12
    442         add r29 = ISTATE_OFFSET_F5 + STACK_SCRATCH_AREA_SIZE, r12
    443         add r30 = ISTATE_OFFSET_F6 + STACK_SCRATCH_AREA_SIZE, r12
    444         add r31 = ISTATE_OFFSET_F7 + STACK_SCRATCH_AREA_SIZE, r12 ;;
    445 
    446         ldf.fill f2 = [r26], 8 * FLOAT_ITEM_SIZE
    447         ldf.fill f3 = [r27], 8 * FLOAT_ITEM_SIZE
    448         ldf.fill f4 = [r28], 8 * FLOAT_ITEM_SIZE
    449         ldf.fill f5 = [r29], 8 * FLOAT_ITEM_SIZE
    450         ldf.fill f6 = [r30], 8 * FLOAT_ITEM_SIZE
    451         ldf.fill f7 = [r31], 8 * FLOAT_ITEM_SIZE ;;
    452 
    453         ldf.fill f8 = [r24], 8 * FLOAT_ITEM_SIZE
    454         ldf.fill f9 = [r25], 8 * FLOAT_ITEM_SIZE
    455         ldf.fill f10 = [r26],8 * FLOAT_ITEM_SIZE
    456         ldf.fill f11 = [r27], 8 * FLOAT_ITEM_SIZE
    457         ldf.fill f12 = [r28], 8 * FLOAT_ITEM_SIZE
    458         ldf.fill f13 = [r29], 8 * FLOAT_ITEM_SIZE
    459         ldf.fill f14 = [r30], 8 * FLOAT_ITEM_SIZE
    460         ldf.fill f15 = [r31], 8 * FLOAT_ITEM_SIZE ;;
    461 
    462         ldf.fill f16 = [r24], 8 * FLOAT_ITEM_SIZE
    463         ldf.fill f17 = [r25], 8 * FLOAT_ITEM_SIZE
    464         ldf.fill f18 = [r26], 8 * FLOAT_ITEM_SIZE
    465         ldf.fill f19 = [r27], 8 * FLOAT_ITEM_SIZE
    466         ldf.fill f20 = [r28], 8 * FLOAT_ITEM_SIZE
    467         ldf.fill f21 = [r29], 8 * FLOAT_ITEM_SIZE
    468         ldf.fill f22 = [r30], 8 * FLOAT_ITEM_SIZE
    469         ldf.fill f23 = [r31], 8 * FLOAT_ITEM_SIZE ;;
    470 
    471         ldf.fill f24 = [r24]
    472         ldf.fill f25 = [r25]
    473         ldf.fill f26 = [r26]
    474         ldf.fill f27 = [r27]
    475         ldf.fill f28 = [r28]
    476         ldf.fill f29 = [r29]
    477         ldf.fill f30 = [r30]
    478         ldf.fill f31 = [r31] ;;
     444        add r24 = 96 + STACK_SCRATCH_AREA_SIZE, r12
     445        add r25 = 112 + STACK_SCRATCH_AREA_SIZE, r12
     446        add r26 = 0 + STACK_SCRATCH_AREA_SIZE, r12
     447        add r27 = 16 + STACK_SCRATCH_AREA_SIZE, r12
     448        add r28 = 32 + STACK_SCRATCH_AREA_SIZE, r12
     449        add r29 = 48 + STACK_SCRATCH_AREA_SIZE, r12
     450        add r30 = 64 + STACK_SCRATCH_AREA_SIZE, r12
     451        add r31 = 80 + STACK_SCRATCH_AREA_SIZE, r12 ;;
     452
     453        ldf.fill f2 = [r26], 0x80
     454        ldf.fill f3 = [r27], 0x80
     455        ldf.fill f4 = [r28], 0x80
     456        ldf.fill f5 = [r29], 0x80
     457        ldf.fill f6 = [r30], 0x80
     458        ldf.fill f7 = [r31], 0x80 ;;
     459
     460        ldf.fill f8 = [r24], 0x80
     461        ldf.fill f9 = [r25], 0x80
     462        ldf.fill f10 = [r26], 0x80
     463        ldf.fill f11 = [r27], 0x80
     464        ldf.fill f12 = [r28], 0x80
     465        ldf.fill f13 = [r29], 0x80
     466        ldf.fill f14 = [r30], 0x80
     467        ldf.fill f15 = [r31], 0x80 ;;
     468
     469        ldf.fill f16 = [r24], 0x80
     470        ldf.fill f17 = [r25], 0x80
     471        ldf.fill f18 = [r26], 0x80
     472        ldf.fill f19 = [r27], 0x80
     473        ldf.fill f20 = [r28], 0x80
     474        ldf.fill f21 = [r29], 0x80
     475        ldf.fill f22 = [r30], 0x80
     476        ldf.fill f23 = [r31], 0x80 ;;
     477
     478        ldf.fill f24 = [r24], 0x80
     479        ldf.fill f25 = [r25], 0x80
     480        ldf.fill f26 = [r26], 0x80
     481        ldf.fill f27 = [r27], 0x80
     482        ldf.fill f28 = [r28], 0x80
     483        ldf.fill f29 = [r29], 0x80
     484        ldf.fill f30 = [r30], 0x80
     485        ldf.fill f31 = [r31], 0x80 ;;
    479486       
    480487        mov r1 = loc17
     
    537544        mov ar.pfs = loc0
    538545        br.ret.sptk.many b0
    539 FUNCTION_END(heavyweight_handler_inner)
    540 
     546
     547.global ivt
    541548.align 32768
    542 SYMBOL(ivt)
    543         HEAVYWEIGHT_HANDLER 0x00
    544         HEAVYWEIGHT_HANDLER 0x04
    545         HEAVYWEIGHT_HANDLER 0x08
    546         HEAVYWEIGHT_HANDLER 0x0c
    547         HEAVYWEIGHT_HANDLER 0x10
    548         HEAVYWEIGHT_HANDLER 0x14
    549         HEAVYWEIGHT_HANDLER 0x18
    550         HEAVYWEIGHT_HANDLER 0x1c
    551         HEAVYWEIGHT_HANDLER 0x20
    552         HEAVYWEIGHT_HANDLER 0x24
    553         HEAVYWEIGHT_HANDLER 0x28
    554         HEAVYWEIGHT_HANDLER 0x2c break_instruction
    555         HEAVYWEIGHT_HANDLER 0x30
    556         HEAVYWEIGHT_HANDLER 0x34
    557         HEAVYWEIGHT_HANDLER 0x38
    558         HEAVYWEIGHT_HANDLER 0x3c
    559         HEAVYWEIGHT_HANDLER 0x40
    560         HEAVYWEIGHT_HANDLER 0x44
    561         HEAVYWEIGHT_HANDLER 0x48
    562         HEAVYWEIGHT_HANDLER 0x4c
    563 
    564         HEAVYWEIGHT_HANDLER 0x50
    565         HEAVYWEIGHT_HANDLER 0x51
    566         HEAVYWEIGHT_HANDLER 0x52
    567         HEAVYWEIGHT_HANDLER 0x53
    568         HEAVYWEIGHT_HANDLER 0x54
    569         HEAVYWEIGHT_HANDLER 0x55
    570         HEAVYWEIGHT_HANDLER 0x56
    571         SPECULATION_VECTOR_HANDLER 0x57
    572         HEAVYWEIGHT_HANDLER 0x58
    573         HEAVYWEIGHT_HANDLER 0x59
    574         HEAVYWEIGHT_HANDLER 0x5a
    575         HEAVYWEIGHT_HANDLER 0x5b
    576         HEAVYWEIGHT_HANDLER 0x5c
    577         HEAVYWEIGHT_HANDLER 0x5d
    578         HEAVYWEIGHT_HANDLER 0x5e
    579         HEAVYWEIGHT_HANDLER 0x5f
    580        
    581         HEAVYWEIGHT_HANDLER 0x60
    582         HEAVYWEIGHT_HANDLER 0x61
    583         HEAVYWEIGHT_HANDLER 0x62
    584         HEAVYWEIGHT_HANDLER 0x63
    585         HEAVYWEIGHT_HANDLER 0x64
    586         HEAVYWEIGHT_HANDLER 0x65
    587         HEAVYWEIGHT_HANDLER 0x66
    588         HEAVYWEIGHT_HANDLER 0x67
    589         HEAVYWEIGHT_HANDLER 0x68
    590         HEAVYWEIGHT_HANDLER 0x69
    591         HEAVYWEIGHT_HANDLER 0x6a
    592         HEAVYWEIGHT_HANDLER 0x6b
    593         HEAVYWEIGHT_HANDLER 0x6c
    594         HEAVYWEIGHT_HANDLER 0x6d
    595         HEAVYWEIGHT_HANDLER 0x6e
    596         HEAVYWEIGHT_HANDLER 0x6f
    597 
    598         HEAVYWEIGHT_HANDLER 0x70
    599         HEAVYWEIGHT_HANDLER 0x71
    600         HEAVYWEIGHT_HANDLER 0x72
    601         HEAVYWEIGHT_HANDLER 0x73
    602         HEAVYWEIGHT_HANDLER 0x74
    603         HEAVYWEIGHT_HANDLER 0x75
    604         HEAVYWEIGHT_HANDLER 0x76
    605         HEAVYWEIGHT_HANDLER 0x77
    606         HEAVYWEIGHT_HANDLER 0x78
    607         HEAVYWEIGHT_HANDLER 0x79
    608         HEAVYWEIGHT_HANDLER 0x7a
    609         HEAVYWEIGHT_HANDLER 0x7b
    610         HEAVYWEIGHT_HANDLER 0x7c
    611         HEAVYWEIGHT_HANDLER 0x7d
    612         HEAVYWEIGHT_HANDLER 0x7e
    613         HEAVYWEIGHT_HANDLER 0x7f
     549ivt:
     550        HEAVYWEIGHT_HANDLER 0x0000
     551        HEAVYWEIGHT_HANDLER 0x0400
     552        HEAVYWEIGHT_HANDLER 0x0800
     553        HEAVYWEIGHT_HANDLER 0x0c00 alternate_instruction_tlb_fault
     554        HEAVYWEIGHT_HANDLER 0x1000 alternate_data_tlb_fault
     555        HEAVYWEIGHT_HANDLER 0x1400 data_nested_tlb_fault
     556        HEAVYWEIGHT_HANDLER 0x1800
     557        HEAVYWEIGHT_HANDLER 0x1c00
     558        HEAVYWEIGHT_HANDLER 0x2000 data_dirty_bit_fault
     559        HEAVYWEIGHT_HANDLER 0x2400 instruction_access_bit_fault
     560        HEAVYWEIGHT_HANDLER 0x2800 data_access_bit_fault
     561        HEAVYWEIGHT_HANDLER 0x2c00 break_instruction
     562        HEAVYWEIGHT_HANDLER 0x3000 external_interrupt   /* For external interrupt, heavyweight handler is used. */
     563        HEAVYWEIGHT_HANDLER 0x3400
     564        HEAVYWEIGHT_HANDLER 0x3800
     565        HEAVYWEIGHT_HANDLER 0x3c00
     566        HEAVYWEIGHT_HANDLER 0x4000
     567        HEAVYWEIGHT_HANDLER 0x4400
     568        HEAVYWEIGHT_HANDLER 0x4800
     569        HEAVYWEIGHT_HANDLER 0x4c00
     570
     571        HEAVYWEIGHT_HANDLER 0x5000 page_not_present
     572        HEAVYWEIGHT_HANDLER 0x5100
     573        HEAVYWEIGHT_HANDLER 0x5200
     574        HEAVYWEIGHT_HANDLER 0x5300 data_access_rights_fault
     575        HEAVYWEIGHT_HANDLER 0x5400 general_exception
     576        HEAVYWEIGHT_HANDLER 0x5500 disabled_fp_register
     577        HEAVYWEIGHT_HANDLER 0x5600
     578        SPECULATION_VECTOR_HANDLER 0x5700
     579        HEAVYWEIGHT_HANDLER 0x5800
     580        HEAVYWEIGHT_HANDLER 0x5900
     581        HEAVYWEIGHT_HANDLER 0x5a00
     582        HEAVYWEIGHT_HANDLER 0x5b00
     583        HEAVYWEIGHT_HANDLER 0x5c00
     584        HEAVYWEIGHT_HANDLER 0x5d00
     585        HEAVYWEIGHT_HANDLER 0x5e00
     586        HEAVYWEIGHT_HANDLER 0x5f00
     587       
     588        HEAVYWEIGHT_HANDLER 0x6000
     589        HEAVYWEIGHT_HANDLER 0x6100
     590        HEAVYWEIGHT_HANDLER 0x6200
     591        HEAVYWEIGHT_HANDLER 0x6300
     592        HEAVYWEIGHT_HANDLER 0x6400
     593        HEAVYWEIGHT_HANDLER 0x6500
     594        HEAVYWEIGHT_HANDLER 0x6600
     595        HEAVYWEIGHT_HANDLER 0x6700
     596        HEAVYWEIGHT_HANDLER 0x6800
     597        HEAVYWEIGHT_HANDLER 0x6900
     598        HEAVYWEIGHT_HANDLER 0x6a00
     599        HEAVYWEIGHT_HANDLER 0x6b00
     600        HEAVYWEIGHT_HANDLER 0x6c00
     601        HEAVYWEIGHT_HANDLER 0x6d00
     602        HEAVYWEIGHT_HANDLER 0x6e00
     603        HEAVYWEIGHT_HANDLER 0x6f00
     604
     605        HEAVYWEIGHT_HANDLER 0x7000
     606        HEAVYWEIGHT_HANDLER 0x7100
     607        HEAVYWEIGHT_HANDLER 0x7200
     608        HEAVYWEIGHT_HANDLER 0x7300
     609        HEAVYWEIGHT_HANDLER 0x7400
     610        HEAVYWEIGHT_HANDLER 0x7500
     611        HEAVYWEIGHT_HANDLER 0x7600
     612        HEAVYWEIGHT_HANDLER 0x7700
     613        HEAVYWEIGHT_HANDLER 0x7800
     614        HEAVYWEIGHT_HANDLER 0x7900
     615        HEAVYWEIGHT_HANDLER 0x7a00
     616        HEAVYWEIGHT_HANDLER 0x7b00
     617        HEAVYWEIGHT_HANDLER 0x7c00
     618        HEAVYWEIGHT_HANDLER 0x7d00
     619        HEAVYWEIGHT_HANDLER 0x7e00
     620        HEAVYWEIGHT_HANDLER 0x7f00
Note: See TracChangeset for help on using the changeset viewer.