📄 ivt.s
字号:
tnat.nz p8,p0=in7 nop.i 0 mov r13=r2 // establish `current' movl r1=__gp // establish kernel global pointer ;; st8 [r16]=r8 // ensure pt_regs.r8 != 0 (see handle_syscall_error)(p13) mov in6=-1(p8) mov in7=-1 cmp.eq pSys,pNonSys=r0,r0 // set pSys=1, pNonSys=0 movl r17=FPSR_DEFAULT ;; mov.m ar.fpsr=r17 // set ar.fpsr to kernel default value(p10) mov r8=-EINVAL br.ret.sptk.many b7END(ia64_syscall_setup) .org ia64_ivt+0x3c00//////////////////////////////////////////////////////////////////////////// 0x3c00 Entry 15 (size 64 bundles) Reserved DBG_FAULT(15) FAULT(15) .org ia64_ivt+0x4000//////////////////////////////////////////////////////////////////////////// 0x4000 Entry 16 (size 64 bundles) Reserved DBG_FAULT(16) FAULT(16) // There is no particular reason for this code to be here, other // than that there happens to be space here that would go unused // otherwise. If this fault ever gets "unreserved", simply move // the following code to a more suitable spot...ENTRY(dispatch_privop_fault) SAVE_MIN_WITH_COVER ;; alloc r14=ar.pfs,0,0,4,0 // now it's safe (must be first in // insn group!) mov out0=cr.ifa adds out1=16,sp mov out2=cr.isr // FIXME: pity to make this slow access twice mov out3=cr.itir ssm psr.ic | PSR_DEFAULT_BITS ;; srlz.i // guarantee that interruption // collection is on ;;(p15) ssm psr.i // restore psr.i adds r3=8,r2 // set up second base pointer ;; SAVE_REST movl r14=ia64_leave_kernel ;; mov rp=r14 br.call.sptk.many b6=ia64_handle_privopEND(dispatch_privop_fault) .org ia64_ivt+0x4400//////////////////////////////////////////////////////////////////////////// 0x4400 Entry 17 (size 64 bundles) Reserved DBG_FAULT(17) FAULT(17) .org ia64_ivt+0x4800//////////////////////////////////////////////////////////////////////////// 0x4800 Entry 18 (size 64 bundles) Reserved DBG_FAULT(18) FAULT(18) .org ia64_ivt+0x4c00//////////////////////////////////////////////////////////////////////////// 0x4c00 Entry 19 (size 64 bundles) Reserved DBG_FAULT(19) FAULT(19) /* * There is no particular reason for this code to be here, other * than that there happens to be space here that would go unused * otherwise. If this fault ever gets "unreserved", simply move * the following code to a more suitable spot... */GLOBAL_ENTRY(dispatch_to_fault_handler) /* * Input: * psr.ic: off * r19: fault vector number (e.g., 24 for General Exception) * r31: contains saved predicates (pr) */ SAVE_MIN_WITH_COVER_R19 alloc r14=ar.pfs,0,0,5,0 mov out0=r15 mov out1=cr.isr mov out2=cr.ifa mov out3=cr.iim mov out4=cr.itir ;; ssm psr.ic | PSR_DEFAULT_BITS ;; srlz.i // guarantee that interruption // collection is on ;;(p15) ssm psr.i // restore psr.i adds r3=8,r2 // set up second base pointer for // SAVE_REST ;; SAVE_REST movl r14=ia64_leave_kernel ;; mov rp=r14 br.call.sptk.many b6=ia64_faultEND(dispatch_to_fault_handler)//// --- End of long entries, Beginning of short entries// .org ia64_ivt+0x5000//////////////////////////////////////////////////////////////////////////// 0x5000 Entry 20 (size 16 bundles) Page Not Present (10,22,49)ENTRY(page_not_present) DBG_FAULT(20) FAULT_OR_REFLECT(20)END(page_not_present) .org ia64_ivt+0x5100//////////////////////////////////////////////////////////////////////////// 0x5100 Entry 21 (size 16 bundles) Key Permission (13,25,52)ENTRY(key_permission) DBG_FAULT(21) FAULT_OR_REFLECT(21)END(key_permission) .org ia64_ivt+0x5200//////////////////////////////////////////////////////////////////////////// 0x5200 Entry 22 (size 16 bundles) Instruction Access Rights (26)ENTRY(iaccess_rights) DBG_FAULT(22) FAULT_OR_REFLECT(22)END(iaccess_rights) .org ia64_ivt+0x5300//////////////////////////////////////////////////////////////////////////// 0x5300 Entry 23 (size 16 bundles) Data Access Rights (14,53)ENTRY(daccess_rights) DBG_FAULT(23) mov r31=pr mov r16=cr.isr mov r17=cr.ifa mov r19=23 mov r20=0x5300 br.sptk.many fast_access_reflect ;;END(daccess_rights) .org ia64_ivt+0x5400//////////////////////////////////////////////////////////////////////////// 0x5400 Entry 24 (size 16 bundles) General Exception (5,32,34,36,38,39)ENTRY(general_exception) DBG_FAULT(24) mov r16=cr.isr mov r31=pr ;; cmp4.ge p6,p0=0x20,r16(p6) br.sptk.many dispatch_privop_fault ;; FAULT_OR_REFLECT(24)END(general_exception) .org ia64_ivt+0x5500//////////////////////////////////////////////////////////////////////////// 0x5500 Entry 25 (size 16 bundles) Disabled FP-Register (35)ENTRY(disabled_fp_reg) DBG_FAULT(25) FAULT_OR_REFLECT(25)END(disabled_fp_reg) .org ia64_ivt+0x5600//////////////////////////////////////////////////////////////////////////// 0x5600 Entry 26 (size 16 bundles) Nat Consumption (11,23,37,50)ENTRY(nat_consumption) DBG_FAULT(26) FAULT_OR_REFLECT(26)END(nat_consumption) .org ia64_ivt+0x5700//////////////////////////////////////////////////////////////////////////// 0x5700 Entry 27 (size 16 bundles) Speculation (40)ENTRY(speculation_vector) DBG_FAULT(27) // this probably need not reflect... FAULT_OR_REFLECT(27)END(speculation_vector) .org ia64_ivt+0x5800//////////////////////////////////////////////////////////////////////////// 0x5800 Entry 28 (size 16 bundles) Reserved DBG_FAULT(28) FAULT(28) .org ia64_ivt+0x5900//////////////////////////////////////////////////////////////////////////// 0x5900 Entry 29 (size 16 bundles) Debug (16,28,56)ENTRY(debug_vector) DBG_FAULT(29) FAULT_OR_REFLECT(29)END(debug_vector) .org ia64_ivt+0x5a00//////////////////////////////////////////////////////////////////////////// 0x5a00 Entry 30 (size 16 bundles) Unaligned Reference (57)ENTRY(unaligned_access) DBG_FAULT(30) FAULT_OR_REFLECT(30)END(unaligned_access) .org ia64_ivt+0x5b00//////////////////////////////////////////////////////////////////////////// 0x5b00 Entry 31 (size 16 bundles) Unsupported Data Reference (57)ENTRY(unsupported_data_reference) DBG_FAULT(31) FAULT_OR_REFLECT(31)END(unsupported_data_reference) .org ia64_ivt+0x5c00//////////////////////////////////////////////////////////////////////////// 0x5c00 Entry 32 (size 16 bundles) Floating-Point Fault (64)ENTRY(floating_point_fault) DBG_FAULT(32) FAULT_OR_REFLECT(32)END(floating_point_fault) .org ia64_ivt+0x5d00//////////////////////////////////////////////////////////////////////////// 0x5d00 Entry 33 (size 16 bundles) Floating Point Trap (66)ENTRY(floating_point_trap) DBG_FAULT(33) FAULT_OR_REFLECT(33)END(floating_point_trap) .org ia64_ivt+0x5e00//////////////////////////////////////////////////////////////////////////// 0x5e00 Entry 34 (size 16 bundles) Lower Privilege Transfer Trap (66)ENTRY(lower_privilege_trap) DBG_FAULT(34) FAULT_OR_REFLECT(34)END(lower_privilege_trap) .org ia64_ivt+0x5f00//////////////////////////////////////////////////////////////////////////// 0x5f00 Entry 35 (size 16 bundles) Taken Branch Trap (68)ENTRY(taken_branch_trap) DBG_FAULT(35) FAULT_OR_REFLECT(35)END(taken_branch_trap) .org ia64_ivt+0x6000//////////////////////////////////////////////////////////////////////////// 0x6000 Entry 36 (size 16 bundles) Single Step Trap (69)ENTRY(single_step_trap) DBG_FAULT(36) FAULT_OR_REFLECT(36)END(single_step_trap) .org ia64_ivt+0x6100//////////////////////////////////////////////////////////////////////////// 0x6100 Entry 37 (size 16 bundles) Reserved DBG_FAULT(37) FAULT(37) .org ia64_ivt+0x6200//////////////////////////////////////////////////////////////////////////// 0x6200 Entry 38 (size 16 bundles) Reserved DBG_FAULT(38) FAULT(38) .org ia64_ivt+0x6300//////////////////////////////////////////////////////////////////////////// 0x6300 Entry 39 (size 16 bundles) Reserved DBG_FAULT(39) FAULT(39) .org ia64_ivt+0x6400//////////////////////////////////////////////////////////////////////////// 0x6400 Entry 40 (size 16 bundles) Reserved DBG_FAULT(40) FAULT(40) .org ia64_ivt+0x6500//////////////////////////////////////////////////////////////////////////// 0x6500 Entry 41 (size 16 bundles) Reserved DBG_FAULT(41) FAULT(41) .org ia64_ivt+0x6600//////////////////////////////////////////////////////////////////////////// 0x6600 Entry 42 (size 16 bundles) Reserved DBG_FAULT(42) FAULT(42) .org ia64_ivt+0x6700//////////////////////////////////////////////////////////////////////////// 0x6700 Entry 43 (size 16 bundles) Reserved DBG_FAULT(43) FAULT(43) .org ia64_ivt+0x6800//////////////////////////////////////////////////////////////////////////// 0x6800 Entry 44 (size 16 bundles) Reserved DBG_FAULT(44) FAULT(44) .org ia64_ivt+0x6900//////////////////////////////////////////////////////////////////////////// 0x6900 Entry 45 (size 16 bundles) IA-32 Exeception (17,18,29,41,42,43,// 44,58,60,61,62,72,// 73,75,76,77)ENTRY(ia32_exception) DBG_FAULT(45) FAULT_OR_REFLECT(45)END(ia32_exception) .org ia64_ivt+0x6a00//////////////////////////////////////////////////////////////////////////// 0x6a00 Entry 46 (size 16 bundles) IA-32 Intercept (30,31,59,70,71)ENTRY(ia32_intercept) DBG_FAULT(46) FAULT_OR_REFLECT(46)END(ia32_intercept) .org ia64_ivt+0x6b00//////////////////////////////////////////////////////////////////////////// 0x6b00 Entry 47 (size 16 bundles) IA-32 Interrupt (74)ENTRY(ia32_interrupt) DBG_FAULT(47) FAULT_OR_REFLECT(47)END(ia32_interrupt) .org ia64_ivt+0x6c00//////////////////////////////////////////////////////////////////////////// 0x6c00 Entry 48 (size 16 bundles) Reserved DBG_FAULT(48) FAULT(48) .org ia64_ivt+0x6d00//////////////////////////////////////////////////////////////////////////// 0x6d00 Entry 49 (size 16 bundles) Reserved DBG_FAULT(49) FAULT(49) .org ia64_ivt+0x6e00//////////////////////////////////////////////////////////////////////////// 0x6e00 Entry 50 (size 16 bundles) Reserved DBG_FAULT(50) FAULT(50) .org ia64_ivt+0x6f00//////////////////////////////////////////////////////////////////////////// 0x6f00 Entry 51 (size 16 bundles) Reserved DBG_FAULT(51) FAULT(51) .org ia64_ivt+0x7000//////////////////////////////////////////////////////////////////////////// 0x7000 Entry 52 (size 16 bundles) Reserved DBG_FAULT(52) FAULT(52) .org ia64_ivt+0x7100//////////////////////////////////////////////////////////////////////////// 0x7100 Entry 53 (size 16 bundles) Reserved DBG_FAULT(53) FAULT(53) .org ia64_ivt+0x7200//////////////////////////////////////////////////////////////////////////// 0x7200 Entry 54 (size 16 bundles) Reserved DBG_FAULT(54) FAULT(54) .org ia64_ivt+0x7300//////////////////////////////////////////////////////////////////////////// 0x7300 Entry 55 (size 16 bundles) Reserved DBG_FAULT(55) FAULT(55) .org ia64_ivt+0x7400//////////////////////////////////////////////////////////////////////////// 0x7400 Entry 56 (size 16 bundles) Reserved DBG_FAULT(56) FAULT(56) .org ia64_ivt+0x7500//////////////////////////////////////////////////////////////////////////// 0x7500 Entry 57 (size 16 bundles) Reserved DBG_FAULT(57) FAULT(57) .org ia64_ivt+0x7600//////////////////////////////////////////////////////////////////////////// 0x7600 Entry 58 (size 16 bundles) Reserved DBG_FAULT(58) FAULT(58) .org ia64_ivt+0x7700//////////////////////////////////////////////////////////////////////////// 0x7700 Entry 59 (size 16 bundles) Reserved DBG_FAULT(59) FAULT(59) .org ia64_ivt+0x7800//////////////////////////////////////////////////////////////////////////// 0x7800 Entry 60 (size 16 bundles) Reserved DBG_FAULT(60) FAULT(60) .org ia64_ivt+0x7900//////////////////////////////////////////////////////////////////////////// 0x7900 Entry 61 (size 16 bundles) Reserved DBG_FAULT(61) FAULT(61) .org ia64_ivt+0x7a00//////////////////////////////////////////////////////////////////////////// 0x7a00 Entry 62 (size 16 bundles) Reserved DBG_FAULT(62) FAULT(62) .org ia64_ivt+0x7b00//////////////////////////////////////////////////////////////////////////// 0x7b00 Entry 63 (size 16 bundles) Reserved DBG_FAULT(63) FAULT(63) .org ia64_ivt+0x7c00//////////////////////////////////////////////////////////////////////////// 0x7c00 Entry 64 (size 16 bundles) Reserved DBG_FAULT(64) FAULT(64) .org ia64_ivt+0x7d00//////////////////////////////////////////////////////////////////////////// 0x7d00 Entry 65 (size 16 bundles) Reserved DBG_FAULT(65) FAULT(65) .org ia64_ivt+0x7e00//////////////////////////////////////////////////////////////////////////// 0x7e00 Entry 66 (size 16 bundles) Reserved DBG_FAULT(66) FAULT(66) .org ia64_ivt+0x7f00//////////////////////////////////////////////////////////////////////////// 0x7f00 Entry 67 (size 16 bundles) Reserved DBG_FAULT(67) FAULT(67) .org ia64_ivt+0x8000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -