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

📄 iva_table.s

📁 俄罗斯高人Mamaich的Pocket gcc编译器(运行在PocketPC上)的全部源代码。
💻 S
📖 第 1 页 / 共 2 页
字号:
	stw	%r3,R_gr3(%r1)	stw	%r4,R_gr4(%r1)	stw	%r5,R_gr5(%r1)	stw	%r6,R_gr6(%r1)	stw	%r7,R_gr7(%r1)				; don't save %r8, %r9 until restored	stw	%r10,R_gr10(%r1)	stw	%r11,R_gr11(%r1)	stw	%r12,R_gr12(%r1)	stw	%r13,R_gr13(%r1)	stw	%r14,R_gr14(%r1)	stw	%r15,R_gr15(%r1)				; don't save %r16, %r17 until restored	stw	%r18,R_gr18(%r1)	stw	%r19,R_gr19(%r1)	stw	%r20,R_gr20(%r1)	stw	%r21,R_gr21(%r1)	stw	%r22,R_gr22(%r1)	stw	%r23,R_gr23(%r1)				; don't save %r24, %r25 until restored	stw	%r26,R_gr26(%r1)	stw	%r27,R_gr27(%r1)	stw	%r28,R_gr28(%r1)	stw	%r29,R_gr29(%r1)	copy	%r25,%rp	; copy return pointer to %rp	stw	%r30,R_gr30(%r1)	copy	%r1,%r19	; save Save_area pointer in %r19	stw	%r31,R_gr31(%r1)	shdw_gr			; restore %r1 and %r25 (et al.) from shadow regs	shdw_gr	stw	%r1,R_gr1(%r19)	; save %r1	stw	%r8,R_gr8(%r19)	stw	%r9,R_gr9(%r19)	stw	%r16,R_gr16(%r19)	stw	%r17,R_gr17(%r19)	stw	%r24,R_gr24(%r19); save control registers	mfctl	%rctr,%r1	stw	%r1,R_rctr(%r19)	mfctl	%pidr1,%r1	stw	%r1,R_pidr1(%r19)	mfctl	%pidr2,%r1	stw	%r1,R_pidr2(%r19)	mfctl	%ccr,%r1	stw	%r1,R_ccr(%r19)	mfctl	%sar,%r1	stw	%r1,R_sar(%r19)	mfctl	%pidr3,%r1	stw	%r1,R_pidr3(%r19)	mfctl	%pidr4,%r1	stw	%r1,R_pidr4(%r19)	mfctl	%iva,%r1	stw	%r1,R_iva(%r19)	mfctl	%eiem,%r1	stw	%r1,R_eiem(%r19)	mfctl	%itmr,%r1	stw	%r1,R_itmr(%r19)	mfctl	%pcsq,%r1	mtctl	%r1,%pcsq	stw	%r1,R_pcsqH(%r19)	mfctl	%pcsq,%r1	mtctl	%r1,%pcsq	stw	%r1,R_pcsqT(%r19)	mfctl	%pcoq,%r1	mtctl	%r1,%pcoq	stw	%r1,R_pcoqH(%r19)	mfctl	%pcoq,%r1	mtctl	%r1,%pcoq	stw	%r1,R_pcoqT(%r19)	mfctl	%iir,%r1	stw	%r1,R_iir(%r19)	mfctl	%isr,%r1	stw	%r1,R_isr(%r19)	mfctl	%ior,%r1	stw	%r1,R_ior(%r19)	mfctl	%ipsw,%r1	stw	%r1,R_ipsw(%r19)	mfctl	%eirr,%r1	stw	%r1,R_eirr(%r19)	mfctl	%tr0,%r1	stw	%r1,R_tr0(%r19)	mfctl	%tr1,%r1	stw	%r1,R_tr1(%r19)	mfctl	%tr2,%r1	stw	%r1,R_tr2(%r19)	mfctl	%tr3,%r1	stw	%r1,R_tr3(%r19)	mfctl	%tr4,%r1	stw	%r1,R_tr4(%r19)	mfctl	%tr5,%r1	stw	%r1,R_tr5(%r19)	mfctl	%tr6,%r1	stw	%r1,R_tr6(%r19)	mfctl	%tr7,%r1	stw	%r1,R_tr7(%r19); save diagnose registers	mfcpu_c	0,%r1	mfcpu_c	0,%r1	stw	%r1,R_cpu0(%r19)#ifdef	PRINT_SPACE	stw	%r25,R_gr25(%r19); save space registers	mfsp	%sr0,%r1	stw	%r1,R_sr0(%r19)	mfsp	%sr1,%r1	stw	%r1,R_sr1(%r19)	mfsp	%sr2,%r1	stw	%r1,R_sr2(%r19)	mfsp	%sr3,%r1	stw	%r1,R_sr3(%r19)	mfsp	%sr4,%r1	stw	%r1,R_sr4(%r19)	mfsp	%sr5,%r1	stw	%r1,R_sr5(%r19)	mfsp	%sr6,%r1	stw	%r1,R_sr6(%r19)	mfsp	%sr7,%r1	bv	(%rp)	stw	%r1,R_sr7(%r19)#else	bv	(%rp)	stw	%r25,R_gr25(%r19)#endif;-------------------------------------------------------------------------------restore_to_STUB		; doesn't return--goes to STUB_RESTORE			; Note--STUB_RESTORE executes rfir,			;	so we don't need to	copy	%r1,%r8	; save exception index; %dp may be messed up, so do self-relocating to reach Save_area	bl	re_st_0,%r1	addil	L%Save_area-re_st_0,%r1re_st_0	ldo	R%Save_area-re_st_0(%r1),%r1	; r1 points to Save_area; restore general registers	ldw	R_gr2(%r1),%r2	ldw	R_gr3(%r1),%r3	ldw	R_gr4(%r1),%r4	ldw	R_gr5(%r1),%r5	ldw	R_gr6(%r1),%r6	ldw	R_gr7(%r1),%r7;	ldw	R_gr8(%r1),%r8         don't smash the exception index	ldw	R_gr9(%r1),%r9	ldw	R_gr10(%r1),%r10	ldw	R_gr11(%r1),%r11	ldw	R_gr12(%r1),%r12	ldw	R_gr13(%r1),%r13	ldw	R_gr14(%r1),%r14	ldw	R_gr15(%r1),%r15	ldw	R_gr16(%r1),%r16	ldw	R_gr17(%r1),%r17	ldw	R_gr18(%r1),%r18	ldw	R_gr19(%r1),%r19	ldw	R_gr20(%r1),%r20	ldw	R_gr21(%r1),%r21	ldw	R_gr22(%r1),%r22	ldw	R_gr23(%r1),%r23	ldw	R_gr24(%r1),%r24	ldw	R_gr25(%r1),%r25	ldw	R_gr26(%r1),%r26	ldw	R_gr27(%r1),%r27	ldw	R_gr28(%r1),%r28	ldw	R_gr29(%r1),%r29	ldw	R_gr30(%r1),%r30	ldw	R_gr31(%r1),%r31	ldw	R_gr1(%r1),%r1	b	STUB_RESTORE	copy	%r8,%r1			; restore the exception index;-------------------------------------------------------------------------------#define	HoldPtr		%r10#define	SavePtr		%r11#define	StrPtr		%r12#define	Count		%r13#define	Hold_Hold	0*4	/* First word of hold area */#define	Hold_Save	1*4	/* Second word of hold area */#define	Hold_Str	2*4	/* Third word of hold area */#define	Hold_Count	3*4	/* Fourth word of hold area */#define	Hold_rp		4*4	/* Fifth word of hold area */print_state; %dp may be messed up, so do self-relocating to reach Save_area	blr	%r0,%mrp	addil	L%Hold_area-pr_st_0,%mrppr_st_0	ldo	R%Hold_area-pr_st_0(%r1),%r1	; r1 points to Hold_area; save working registers	stw	HoldPtr,Hold_Hold(%r1)	copy	%r1,HoldPtr			; HoldPtr = &Hold_area	stw	SavePtr,Hold_Save(HoldPtr)	ldo	Save_area-Hold_area(HoldPtr),SavePtr	; SavePtr = &Save_area	stw	StrPtr,Hold_Str(HoldPtr)	addil	L%PrintLabels-pr_st_0,%mrp	stw	Count,Hold_Count(HoldPtr)	ldo	R%PrintLabels-pr_st_0(%r1),StrPtr	stw	%rp,Hold_rp(HoldPtr)#ifdef	PRINT_SPACE	ldi	68,Count#else	ldo	R_gr0(SavePtr),SavePtr	ldi	60,Count#endif; print register valuesprint_loop	bl	puts,%rp		; print label	ldo	1(StrPtr),%arg0		; advance past length byte	bl	putnum,%rp		; print register value	ldwm	4(SavePtr),%arg0	ldbs,ma	1(StrPtr),%r1	addib,>	-1,Count,print_loop	add	%r1,StrPtr,StrPtr; skip to next line	bl	puts,%rp		; print label	ldo	1(StrPtr),%arg0		; advance past length byte; restore working registers	ldw	Hold_rp(HoldPtr),%rp	ldw	Hold_Count(HoldPtr),Count	ldw	Hold_Str(HoldPtr),StrPtr	ldw	Hold_Save(HoldPtr),SavePtr	bv	(%rp)	ldw	Hold_Hold(HoldPtr),HoldPtr#undef	SavePtr#undef	HoldPtr#undef	StrPtr#undef	Count#undef	Hold_Save#undef	Hold_Scr#undef	Hold_Str#undef	Hold_Count#undef	Hold_rp;-------------------------------------------------------------------------------	.space	$PRIVATE$	.subspa	$DATA$,align=4,access=0x1f/* Used to save machine registers before printing */Save_area	.block		R_SIZE		; Used to store registers/* Used to hold callee-save registers */Hold_area	.block		8*4		; 8 words to store temp. registersHaltStr	.stringz	"\r\nHalted\r\n"RebootStr	.stringz	"\r\nRebooting . . .\r\n"Str01	.stringz	"\r\nHPMC\r\n"Str02	.stringz	"\r\nPower Fail\r\n"Str03	.stringz	"\r\nRecovery Counter Trap\r\n"Str04	.stringz	"\r\nExternal Interrupt\r\n"Str05	.stringz	"\r\nLPMC\r\n"Str06	.stringz	"\r\nITLB Miss\r\n"Str07	.stringz	"\r\nInstruction Memory Protection Trap\r\n"Str08	.stringz	"\r\nIllegal Instruction\r\n"Str09	.stringz	"\r\nBreak Trap\r\n"Str0a	.stringz	"\r\nPrivileged Operation\r\n"Str0b	.stringz	"\r\nPrivileged Register\r\n"Str0c	.stringz	"\r\nOverflow Trap\r\n"Str0d	.stringz	"\r\nConditional Trap\r\n"Str0e	.stringz	"\r\nAssist Exception\r\n"Str0f	.stringz	"\r\nData TLB Miss\r\n"Str10	.stringz	"\r\nNon-access ITLB Miss\r\n"Str11	.stringz	"\r\nNon-access DTLB Miss\r\n"Str12	.stringz	"\r\nData Memory Protection Trap\r\n"Str13	.stringz	"\r\nData Memory Break\r\n"Str14	.stringz	"\r\nTLB Dirty Bit Trap\r\n"Str15	.stringz	"\r\nPage Reference Trap\r\n"Str16	.stringz	"\r\nAssist Emulation Trap\r\n"Str17	.stringz	"\r\nHigher-privilege Trap\r\n"Str18	.stringz	"\r\nLower-privilege Trap\r\n"Str19	.stringz	"\r\nTaken Branch Trap\r\n"Str20	.stringz	"\r\nHere I am!\r\n"PrintLabels#ifdef	PRINT_SPACE	.byte		10	.stringz	"sr 0 = 0x"	.byte		13	.stringz	"sr 1 = 0x"	.byte		13	.stringz	"sr 2 = 0x"	.byte		13	.stringz	"   sr 3 = 0x"	.byte		12	.stringz	"\r\nsr 4 = 0x"	.byte		13	.stringz	"   sr 5 = 0x"	.byte		13	.stringz	"   sr 6 = 0x"	.byte		13	.stringz	"   sr 7 = 0x"	.byte		13	.stringz	"\r\n\ngr 0 = 0x"#else	.byte		10	.stringz	"gr 0 = 0x"#endif	.byte		13	.stringz	"   gr 1 = 0x"	.byte		13	.stringz	"   gr 2 = 0x"	.byte		13	.stringz	"   gr 3 = 0x"	.byte		12	.stringz	"\r\ngr 4 = 0x"	.byte		13	.stringz	"   gr 5 = 0x"	.byte		13	.stringz	"   gr 6 = 0x"	.byte		13	.stringz	"   gr 7 = 0x"	.byte		12	.stringz	"\r\ngr 8 = 0x"	.byte		13	.stringz	"   gr 9 = 0x"	.byte		13	.stringz	"   gr10 = 0x"	.byte		13	.stringz	"   gr11 = 0x"	.byte		12	.stringz	"\r\ngr12 = 0x"	.byte		13	.stringz	"   gr13 = 0x"	.byte		13	.stringz	"   gr14 = 0x"	.byte		13	.stringz	"   gr15 = 0x"	.byte		12	.stringz	"\r\ngr16 = 0x"	.byte		13	.stringz	"   gr17 = 0x"	.byte		13	.stringz	"   gr18 = 0x"	.byte		13	.stringz	"   gr19 = 0x"	.byte		12	.stringz	"\r\ngr20 = 0x"	.byte		13	.stringz	"   gr21 = 0x"	.byte		13	.stringz	"   gr22 = 0x"	.byte		13	.stringz	"   gr23 = 0x"	.byte		12	.stringz	"\r\ngr24 = 0x"	.byte		13	.stringz	"   gr25 = 0x"	.byte		13	.stringz	"   gr26 = 0x"	.byte		13	.stringz	"   gr27 = 0x"	.byte		12	.stringz	"\r\ngr28 = 0x"	.byte		13	.stringz	"   gr29 = 0x"	.byte		13	.stringz	"   gr30 = 0x"	.byte		13	.stringz	"   gr31 = 0x"	.byte		13	.stringz	"\r\n\nrctr = 0x"	.byte		53	.stringz	"                                           cpu0 = 0x"	.byte		12	.stringz	"\r\npid1 = 0x"	.byte		13	.stringz	"   pid2 = 0x"	.byte		13	.stringz	"    ccr = 0x"	.byte		13	.stringz	"    sar = 0x"	.byte		12	.stringz	"\r\npid3 = 0x"	.byte		13	.stringz	"   pid4 = 0x"	.byte		13	.stringz	"    iva = 0x"	.byte		13	.stringz	"   eiem = 0x"	.byte		12	.stringz	"\r\nitmr = 0x"	.byte		13	.stringz	"   iasq = 0x"	.byte		13	.stringz	"   iaoq = 0x"	.byte		13	.stringz	"    iir = 0x"	.byte		32	.stringz	"\r\n                    iasq = 0x"	.byte		13	.stringz	"   iaoq = 0x"	.byte		12	.stringz	"\r\n isr = 0x"	.byte		13	.stringz	"    ior = 0x"	.byte		13	.stringz	"   ipsw = 0x"	.byte		13	.stringz	"   eirr = 0x"	.byte		12	.stringz	"\r\ncr24 = 0x"	.byte		13	.stringz	"   cr25 = 0x"	.byte		13	.stringz	"   cr26 = 0x"	.byte		13	.stringz	"   cr27 = 0x"	.byte		12	.stringz	"\r\ncr28 = 0x"	.byte		13	.stringz	"   cr29 = 0x"	.byte		13	.stringz	"   cr30 = 0x"	.byte		13	.stringz	"   cr31 = 0x"	.byte		4	.stringz	"\r\n\n"	.end

⌨️ 快捷键说明

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