Ignore:
File:
1 edited

Legend:

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

    r2277e03 r27f67f5  
    2828#
    2929
     30#include <abi/asmtool.h>
    3031#include <arch/stack.h>
    3132#include <arch/register.h>
    3233#include <arch/mm/page.h>
     34#include <arch/interrupt.h>
     35#include <arch/istate_struct.h>
    3336#include <align.h>
    3437
    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
     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)
    4441
    4542/** Partitioning of bank 0 registers. */
    46 #define R_OFFS          r16
     43#define R_VECTOR        r16
    4744#define R_HANDLER       r17
    4845#define R_RET           r18
    49 #define R_TMP           r19
    5046#define R_KSTACK_BSP    r22     /* keep in sync with before_thread_runs_arch() */
    5147#define R_KSTACK        r23     /* keep in sync with before_thread_runs_arch() */
    5248
    5349/* Speculation vector handler */
    54 .macro SPECULATION_VECTOR_HANDLER offs
    55     .org ivt + \offs
     50.macro SPECULATION_VECTOR_HANDLER vector
     51    .org ivt + \vector * 0x100
    5652
    5753    /* 1. Save predicates, IIM, IIP, IPSR and ISR CR's in bank 0 registers. */
     
    9995 * @param handler Interrupt handler address.
    10096 */
    101 .macro HEAVYWEIGHT_HANDLER offs, handler=universal_handler
    102     .org ivt + \offs
    103         mov R_OFFS = \offs
     97.macro HEAVYWEIGHT_HANDLER vector, handler=exc_dispatch
     98    .org ivt + \vector * 0x100
     99        mov R_VECTOR = \vector
    104100        movl R_HANDLER = \handler ;;
    105101        br heavyweight_handler
    106102.endm
    107103
    108 .global heavyweight_handler
    109 heavyweight_handler:
     104SYMBOL(heavyweight_handler)
    110105    /* 1. copy interrupt registers into bank 0 */
    111106   
     
    120115        mov r27 = ~PSR_DFH_MASK ;;
    121116        and r26 = r25, r26
    122         and r24 = r24, r27;;
    123         or r24 = r24, r26;;
    124         mov psr.l = r24;;
     117        and r24 = r24, r27 ;;
     118        or r24 = r24, r26 ;;
     119        mov psr.l = r24 ;;
    125120        srlz.i
    126         srlz.d;;
     121        srlz.d ;;
    127122
    128123        mov r24 = cr.iip
     
    161156(p4)    mov r12 = R_KSTACK ;;
    162157       
    163         add r31 = -STACK_FRAME_BIAS, r12 ;;
    164         add r12 = -STACK_FRAME_SIZE, r12
     158        add r12 = -STACK_FRAME_SIZE, r12 ;;
     159        add r31 = STACK_SCRATCH_AREA_SIZE + ISTATE_OFFSET_IN6, r12
    165160
    166161    /* 4. save registers in bank 0 into memory stack */
     
    170165         * copy input parameters to stack.
    171166         */
    172         mov R_TMP = 0x2c00 ;;
    173         cmp.eq p6, p5 = R_OFFS, R_TMP ;;
     167        cmp.eq p6, p5 = EXC_BREAK_INSTRUCTION, R_VECTOR ;;
    174168       
    175169        /*
     
    179173         */
    180174
    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 ;;
     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 ;;
    189183   
    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 */
     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 */
    199193
    200194    /* 5. RSE switch from interrupted context */
     
    204198        mov r26 = cr.ifs
    205199       
    206         st8 [r31] = r24, -8 ;;          /* save ar.rsc */
    207         st8 [r31] = r25, -8 ;;          /* save ar.pfs */
    208         st8 [r31] = r26, -8             /* save ar.ifs */
     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 */
    209203       
    210204        and r24 = ~(RSC_PL_MASK), r24 ;;
     
    231225        mov r29 = ar.bsp
    232226       
    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 */
     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 */
    237231       
    238232        mov ar.rsc = r24                /* restore RSE's setting + kernel privileges */
     
    246240        cover                           /* allocate zero size frame (step 1 (from Intel Docs)) */
    247241
    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 */
     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 */
    253247        sub r27 = r30 , r28 ;;          /* calculate loadrs (step 2) */
    254248        shl r27 = r27, 16
     
    261255        loadrs                          /* (step 3) */
    262256
    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 */
     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 */
    267261
    268262        mov ar.bspstore = r29 ;;        /* (step 4) */
     
    275269
    276270    /* 17. restore interruption state from memory stack */
    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 */
     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 */
    282276
    283277        mov cr.iip = r24;;
     
    292286        and r25 = r25, r27
    293287        and r24 = r24, r26 ;;
    294         or r25 = r25, r24;;
     288        or r25 = r25, r24 ;;
    295289        mov cr.ipsr = r25
    296290
    297291    /* 18. restore predicate registers from memory stack */
    298         ld8 r29 = [r31], +8 ;;          /* load predicate registers */
     292        ld8 r29 = [r31], +STACK_ITEM_SIZE ;;    /* load predicate registers */
    299293        mov pr = r29
    300294       
    301295    /* 19. return from interruption */
    302         ld8 r12 = [r31]                 /* load stack pointer */
     296        ld8 r12 = [r31]                         /* load stack pointer */
    303297        rfi ;;
    304298
    305 .global heavyweight_handler_inner
    306 heavyweight_handler_inner:
     299FUNCTION_BEGIN(heavyweight_handler_inner)
    307300        /*
    308301         * From this point, the rest of the interrupted context
     
    314307        mov loc1 = R_RET        /* b0 belonging to interrupted context */
    315308        mov loc2 = R_HANDLER
    316         mov out0 = R_OFFS
     309        mov out0 = R_VECTOR
    317310       
    318311        add out1 = STACK_SCRATCH_AREA_SIZE, r12
     
    373366        mov loc46 = r31
    374367
    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 ;;
     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 ;;
    417410
    418411        mov loc47 = ar.fpsr     /* preserve floating point status register */
     
    442435
    443436    /* 13. restore general and floating-point registers */
    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 ;;
     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] ;;
    486479       
    487480        mov r1 = loc17
     
    544537        mov ar.pfs = loc0
    545538        br.ret.sptk.many b0
    546 
    547 .global ivt
     539FUNCTION_END(heavyweight_handler_inner)
     540
    548541.align 32768
    549 ivt:
    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
     542SYMBOL(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
Note: See TracChangeset for help on using the changeset viewer.