⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ivt.s

📁 嵌入式系统设计与实例开发源码
💻 S
📖 第 1 页 / 共 3 页
字号:
	;;	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.sptk.many ia64_prepare_handle_unalignedEND(dispatch_unaligned_handler)	.align 1024/////////////////////////////////////////////////////////////////////////////////////////// 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 moved the following code to a more	 * suitable spot...	 */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//	.align 1024/////////////////////////////////////////////////////////////////////////////////////////// 0x5000 Entry 20 (size 16 bundles) Page Not Present (10,22,49)ENTRY(page_not_present)	DBG_FAULT(20)	mov r16=cr.ifa	rsm psr.dt	/*	 * The Linux page fault handler doesn't expect non-present pages to be in	 * the TLB.  Flush the existing entry now, so we meet that expectation.	 */	mov r17=PAGE_SHIFT<<2	;;	ptc.l r16,r17	;;	mov r31=pr	srlz.d	br.sptk.many page_faultEND(page_not_present)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x5100 Entry 21 (size 16 bundles) Key Permission (13,25,52)ENTRY(key_permission)	DBG_FAULT(21)	mov r16=cr.ifa	rsm psr.dt	mov r31=pr	;;	srlz.d	br.sptk.many page_faultEND(key_permission)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x5200 Entry 22 (size 16 bundles) Instruction Access Rights (26)ENTRY(iaccess_rights)	DBG_FAULT(22)	mov r16=cr.ifa	rsm psr.dt	mov r31=pr	;;	srlz.d	br.sptk.many page_faultEND(iaccess_rights)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x5300 Entry 23 (size 16 bundles) Data Access Rights (14,53)ENTRY(daccess_rights)	DBG_FAULT(23)	mov r16=cr.ifa	rsm psr.dt	mov r31=pr	;;	srlz.d	br.sptk.many page_faultEND(daccess_rights)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 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.eq p6,p0=0,r16(p6)	br.sptk.many dispatch_illegal_op_fault	;;	mov r19=24		// fault number	br.sptk.many dispatch_to_fault_handlerEND(general_exception)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x5500 Entry 25 (size 16 bundles) Disabled FP-Register (35)ENTRY(disabled_fp_reg)	DBG_FAULT(25)	rsm psr.dfh		// ensure we can access fph	;;	srlz.d	mov r31=pr	mov r19=25	br.sptk.many dispatch_to_fault_handlerEND(disabled_fp_reg)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x5600 Entry 26 (size 16 bundles) Nat Consumption (11,23,37,50)ENTRY(nat_consumption)	DBG_FAULT(26)	FAULT(26)END(nat_consumption)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x5700 Entry 27 (size 16 bundles) Speculation (40)ENTRY(speculation_vector)	DBG_FAULT(27)	/*	 * A [f]chk.[as] instruction needs to take the branch to the recovery code but	 * this part of the architecture is not implemented in hardware on some CPUs, such	 * as Itanium.  Thus, in general we need to emulate the behavior.  IIM contains	 * the relative target (not yet sign extended).  So after sign extending it we	 * simply add it to IIP.  We also need to reset the EI field of the IPSR to zero,	 * i.e., the slot to restart into.	 *	 * cr.imm contains zero_ext(imm21)	 */	mov r18=cr.iim	;;	mov r17=cr.iip	shl r18=r18,43			// put sign bit in position (43=64-21)	;;	mov r16=cr.ipsr	shr r18=r18,39			// sign extend (39=43-4)	;;	add r17=r17,r18			// now add the offset	;;	mov cr.iip=r17	dep r16=0,r16,41,2		// clear EI	;;	mov cr.ipsr=r16	;;	rfi				// and go backEND(speculation_vector)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x5800 Entry 28 (size 16 bundles) Reserved	DBG_FAULT(28)	FAULT(28)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x5900 Entry 29 (size 16 bundles) Debug (16,28,56)ENTRY(debug_vector)	DBG_FAULT(29)	FAULT(29)END(debug_vector)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x5a00 Entry 30 (size 16 bundles) Unaligned Reference (57)ENTRY(unaligned_access)	DBG_FAULT(30)	mov r16=cr.ipsr	mov r31=pr		// prepare to save predicates	;;	br.sptk.many dispatch_unaligned_handlerEND(unaligned_access)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x5b00 Entry 31 (size 16 bundles) Unsupported Data Reference (57)	DBG_FAULT(31)	FAULT(31)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x5c00 Entry 32 (size 16 bundles) Floating-Point Fault (64)	DBG_FAULT(32)	FAULT(32)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x5d00 Entry 33 (size 16 bundles) Floating Point Trap (66)	DBG_FAULT(33)	FAULT(33)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x5e00 Entry 34 (size 16 bundles) Lower Privilege Tranfer Trap (66)	DBG_FAULT(34)	FAULT(34)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x5f00 Entry 35 (size 16 bundles) Taken Branch Trap (68)	DBG_FAULT(35)	FAULT(35)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x6000 Entry 36 (size 16 bundles) Single Step Trap (69)	DBG_FAULT(36)	FAULT(36)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x6100 Entry 37 (size 16 bundles) Reserved	DBG_FAULT(37)	FAULT(37)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x6200 Entry 38 (size 16 bundles) Reserved	DBG_FAULT(38)	FAULT(38)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x6300 Entry 39 (size 16 bundles) Reserved	DBG_FAULT(39)	FAULT(39)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x6400 Entry 40 (size 16 bundles) Reserved	DBG_FAULT(40)	FAULT(40)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x6500 Entry 41 (size 16 bundles) Reserved	DBG_FAULT(41)	FAULT(41)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x6600 Entry 42 (size 16 bundles) Reserved	DBG_FAULT(42)	FAULT(42)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x6700 Entry 43 (size 16 bundles) Reserved	DBG_FAULT(43)	FAULT(43)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x6800 Entry 44 (size 16 bundles) Reserved	DBG_FAULT(44)	FAULT(44)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 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(45)END(ia32_exception)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x6a00 Entry 46 (size 16 bundles) IA-32 Intercept  (30,31,59,70,71)ENTRY(ia32_intercept)	DBG_FAULT(46)#ifdef	CONFIG_IA32_SUPPORT	mov r31=pr	mov r16=cr.isr	;;	extr.u r17=r16,16,8	// get ISR.code	mov r18=ar.eflag	mov r19=cr.iim		// old eflag value	;;	cmp.ne p6,p0=2,r17(p6)	br.cond.spnt 1f		// not a system flag fault	xor r16=r18,r19	;;	extr.u r17=r16,18,1	// get the eflags.ac bit	;;	cmp.eq p6,p0=0,r17(p6)	br.cond.spnt 1f		// eflags.ac bit didn't change	;;	mov pr=r31,-1		// restore predicate registers	rfi1:#endif	// CONFIG_IA32_SUPPORT	FAULT(46)END(ia32_intercept)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x6b00 Entry 47 (size 16 bundles) IA-32 Interrupt  (74)ENTRY(ia32_interrupt)	DBG_FAULT(47)#ifdef CONFIG_IA32_SUPPORT	mov r31=pr	br.sptk.many dispatch_to_ia32_handler#else	FAULT(47)#endifEND(ia32_interrupt)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x6c00 Entry 48 (size 16 bundles) Reserved	DBG_FAULT(48)	FAULT(48)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x6d00 Entry 49 (size 16 bundles) Reserved	DBG_FAULT(49)	FAULT(49)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x6e00 Entry 50 (size 16 bundles) Reserved	DBG_FAULT(50)	FAULT(50)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x6f00 Entry 51 (size 16 bundles) Reserved	DBG_FAULT(51)	FAULT(51)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x7000 Entry 52 (size 16 bundles) Reserved	DBG_FAULT(52)	FAULT(52)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x7100 Entry 53 (size 16 bundles) Reserved	DBG_FAULT(53)	FAULT(53)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x7200 Entry 54 (size 16 bundles) Reserved	DBG_FAULT(54)	FAULT(54)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x7300 Entry 55 (size 16 bundles) Reserved	DBG_FAULT(55)	FAULT(55)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x7400 Entry 56 (size 16 bundles) Reserved	DBG_FAULT(56)	FAULT(56)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x7500 Entry 57 (size 16 bundles) Reserved	DBG_FAULT(57)	FAULT(57)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x7600 Entry 58 (size 16 bundles) Reserved	DBG_FAULT(58)	FAULT(58)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x7700 Entry 59 (size 16 bundles) Reserved	DBG_FAULT(59)	FAULT(59)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x7800 Entry 60 (size 16 bundles) Reserved	DBG_FAULT(60)	FAULT(60)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x7900 Entry 61 (size 16 bundles) Reserved	DBG_FAULT(61)	FAULT(61)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x7a00 Entry 62 (size 16 bundles) Reserved	DBG_FAULT(62)	FAULT(62)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x7b00 Entry 63 (size 16 bundles) Reserved	DBG_FAULT(63)	FAULT(63)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x7c00 Entry 64 (size 16 bundles) Reserved	DBG_FAULT(64)	FAULT(64)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x7d00 Entry 65 (size 16 bundles) Reserved	DBG_FAULT(65)	FAULT(65)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x7e00 Entry 66 (size 16 bundles) Reserved	DBG_FAULT(66)	FAULT(66)	.align 256/////////////////////////////////////////////////////////////////////////////////////////// 0x7f00 Entry 67 (size 16 bundles) Reserved	DBG_FAULT(67)	FAULT(67)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -