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

📄 regtest.s

📁 sun公司的sparc v8处理器的配置代码。
💻 S
字号:
	.text	.align 4	.global _regtest, regtest	.proc	04_regtest:regtest:#ifndef _FLAT	save %sp, -96, %sp#endif#ifdef LEON2	set	0x80000024, %l2	ld	[%l2], %l2	srl	%l2, 20, %g5	and	%g5, 0x1f, %g5	ba 2f	mov	%g5, %g6#else!	ba 1f			mov %g0, %asr16	nop; nop; nop	mov %asr16, %g3	srl %g3, 14, %g6	andcc %g6, 7, %g6	subcc %g6, 0, %g0	be 1f			! no FT	nop	srl %g3, 11, %l7	and %l7, 0x7, %l7	subcc %l7, 0, %g0	! error counter should be 0	bne 1f	nop	subcc %g6, 2, %g0	bne ft1			! only test if IUFT = 2	nop	set 0x40000000, %l2	ldd [%l2], %l2		! pre-load dcache	set 0x40000000, %l2	set 0x40000104, %l4	mov %l2, %l3	mov %l2, %l5	mov %l4, %l6	mov 0x46, %asr16	! single bit error in byte 0	mov %g0, %l2	mov %g0, %l5	nop; 	mov 0x4E, %asr16	! double bit error in byte 0 & 3	mov 0x100, %l4	nop; 	mov %g0, %asr16		! test mode off	nop; nop; 		std %l4, [%l2]	subcc %l2, %l3, %g1	! %l3 should be 0 (corrected)	bne err1	subcc %l4, %l6, %g1	! %l6 should be 0 (corrected)	bne err1	nop	nop; nop		! wait until error counters are updated	mov %asr16, %g3	srl %g3, 11, %g6	andcc %g6, 0x7, %g6	subcc %g6, 5, %g6	bne err1		! error counter should be 4	mov %g0, %asr16		! test mode off	nop; nop; nop	ldd [%l2], %l4	subcc %l4, %l6, %g1	! %l3 should be 0 (corrected)	bne err1	subcc %l5, %l2, %g1	! %l6 should be 0 (corrected)	mov %g0, %l2		! clear remaining error	bne err1	nop; nop		! wait until error counters are updated	mov %asr16, %g3	srl %g3, 11, %g6	andcc %g6, 0x7, %g6	subcc %g6, 3, %g6	bne err1		! error counter should be 4	nop	ba 1f	nopft1:	subcc %g6, 1, %g0	bne ft3			! only test if IUFT = 1	set 0x40000000, %l2	ldd [%l2], %l2		! pre-load dcache	set 0x40000000, %l2	set 0x40000104, %l4	mov %l2, %l3	mov %l2, %l5	mov %l4, %l6	mov 0x46, %asr16	! single bit error in byte 0	mov %g0, %l2	mov %g0, %l5	nop; 	mov 0x4E, %asr16	! double bit error in byte 0 & 3	mov 0x100, %l4	nop; 	mov %g0, %asr16		! test mode off	nop; nop; nop	std %l4, [%l2]	subcc %l2, %l3, %g1	! %l3 should be 0 (corrected)	bne err1	subcc %l4, %l6, %g1	! %l6 should be 0 (corrected)	bne err1	nop; nop		! wait until error counters are updated	mov %asr16, %g3	srl %g3, 11, %g6	andcc %g6, 0x7, %g6	subcc %g6, 2, %g6	bne err1		! error counter should be 2	nop	ba 1f	nopft3:	subcc %g6, 3, %g0	bne 1f			! only test if IUFT = 3	mov %g0, %l3	set 0xe, %l1		! test mode enable, xor lsb of check bits	mov %l1, %asr16		! regfile EDAC test mode enable	mov %g0, %l3	mov %g0, %asr16		or %l3, 0, %l4	mov %asr16, %l5	nop	or %l3, 0, %l6	mov %asr16, %l7	subcc %l4, 0, %g0	! %l4 should be zero	bne err1	andcc %l5, 0xe00, %l5	! data-forwarding should not trigger EDAC error	subcc %l5, %g0, %g0		bne err1	subcc %l6, 0, %g0	! %l6 should be 0 (corrected)	bne err1	srl %l7, 11, %l7	and %l7, 0x7, %l7	subcc %l7, 1, %g0	! error counter should be incremented	bne err1	nop	mov %g0, %l0		! correctable EDAC error in LD	mov %l1, %asr16			mov %g0, %l3		mov %g0, %asr16		ldd [%g0], %l4	mov %g0, %l6	mov %g0, %l7	ld [%l3], %l6	ld [%l3 + 4], %l7	cmp %l4, %l6	bne err1	cmp %l5, %l7	bne err1	nop	mov %asr16, %l2	srl %l2, 11, %l2	and %l2, 0x7, %l2	subcc %l2, 1, %g0	! error counter should be incremented	bne err1	nop	mov %g0, %l0		! 2 correctable EDAC errors in LD	mov %l1, %asr16			mov %g0, %l3		mov %g0, %asr16		set 0xa, %l1		! test mode enable, xor lsb of check bits	mov %l1, %asr16			mov %g0, %l2		mov %g0, %asr16		ldd [%g0], %l4	mov %g0, %l6	mov %g0, %l7	ld [%l3 + %l2], %l6	ld [%l3 + 4], %l7	cmp %l4, %l6	bne err1	cmp %l5, %l7	bne err1	nop	mov %asr16, %l2	srl %l2, 11, %l2	and %l2, 0x7, %l2	subcc %l2, 2, %g0	! error counter should be incremented	bl err1	nop	set 0x40000000, %l0		! 4 correctable EDAC errors in STD	ldd [%l0], %l6	set 0x41000000, %l0	ldd [%l0], %l4	mov %l1, %asr16			mov %g0, %l3		mov %g0, %asr16		set 0xe, %l1		! test mode enable, xor lsb of check bits	mov %l1, %asr16			mov %l0, %l2		mov %g0, %l6		mov %g0, %l7		mov %g0, %asr16		nop; nop	std %l6, [%l2 + %l3]	mov %g0, %l6	mov %g0, %l7	ldd [%l3 + %l2], %l4	cmp %l4, %l6	bne err1	cmp %l5, %l7	bne err1	nop	mov %asr16, %l2	srl %l2, 11, %l2	and %l2, 0x7, %l2	subcc %l2, 4, %g0	! error counter should be incremented	bne err1	nop	ba 1f	noperr1:	ba last	mov %g0, %i0		! flush all register windows (maximum 32)1:	mov 	%asr17, %g5	and	%g5, 0x1f, %g5	subcc	%g5, 1, %g0	be 	4f	mov	%g5, %g6#endif2:	save %sp, -96, %sp	subcc	%g5, 1, %g5	bge	2b	nop3:	restore	subcc	%g6, 1, %g6	bge	3b	nop	! save global and input registers4:	nop; nop	sub	%sp, 128, %l0	andn	%l0, 0x7, %l0	mov	%l0, %g7	mov	%psr, %l1	st	%l1, [%l0]	st	%g1, [%l0+4]	std	%g2, [%l0+8]	std	%g4, [%l0+16]	std	%g6, [%l0+24]	std	%i0, [%l0+32]	std	%i2, [%l0+40]	std	%i4, [%l0+48]	std	%i6, [%l0+56]	std	%o0, [%l0+64]	std	%o2, [%l0+72]	std	%o4, [%l0+80]	std	%o6, [%l0+88]	mov	%wim, %l2	st	%l2, [%l0+96]	! test gloabal registers	mov	8, %g0	mov	1, %g1	mov	2, %g2	mov	3, %g3	mov	4, %g4	mov	5, %g5	mov	6, %g6!	mov	7, %g7	mov	%g0, %wim	andn	%l1, 0x1f, %l2	mov	%l2, %psr	nop; nop; nop		! fill all registers	set	0x01010101, %g1	mov	%g0, %g2	mov	%g0, %g3#ifdef LEON2	set	0x80000024, %g4	ld	[%g4], %g4	srl	%g4, 20, %g4	and	%g4, 0x1f, %g4#else	mov 	%asr17, %g4	and	%g4, 0x1f, %g4#endif	mov	%g4, %g34:	mov	%g2, %l0	add	%g1, %g2, %g2	mov	%g2, %l1	add	%g1, %g2, %g2	mov	%g2, %l2	add	%g1, %g2, %g2	mov	%g2, %l3	add	%g1, %g2, %g2	mov	%g2, %l4	add	%g1, %g2, %g2	mov	%g2, %l5	add	%g1, %g2, %g2	mov	%g2, %l6	add	%g1, %g2, %g2	mov	%g2, %l7	add	%g1, %g2, %g2	mov	%g2, %o0	add	%g1, %g2, %g2	mov	%g2, %o1	add	%g1, %g2, %g2	mov	%g2, %o2	add	%g1, %g2, %g2	mov	%g2, %o3	add	%g1, %g2, %g2	mov	%g2, %o4	add	%g1, %g2, %g2	mov	%g2, %o5	add	%g1, %g2, %g2	mov	%g2, %o6	add	%g1, %g2, %g2	mov	%g2, %o7	add	%g1, %g2, %g2	save	subcc	%g3, 1, %g3	bge	4b	nop		! check values	set	0x01010101, %g1	mov	%g0, %g2	mov	%g4, %g35:	cmp	%l0, %g2	bne	fail	add	%g1, %g2, %g2	cmp	%l1, %g2	bne	fail	add	%g1, %g2, %g2	cmp	%l2, %g2	bne	fail	add	%g1, %g2, %g2	cmp	%l3, %g2	bne	fail	add	%g1, %g2, %g2	cmp	%l4, %g2	bne	fail	add	%g1, %g2, %g2	cmp	%l5, %g2	bne	fail	add	%g1, %g2, %g2	cmp	%l6, %g2	bne	fail	add	%g1, %g2, %g2	cmp	%l7, %g2	bne	fail	add	%g1, %g2, %g2	cmp	%o0, %g2	bne	fail	add	%g1, %g2, %g2	cmp	%o1, %g2	bne	fail	add	%g1, %g2, %g2	cmp	%o2, %g2	bne	fail	add	%g1, %g2, %g2	cmp	%o3, %g2	bne	fail	add	%g1, %g2, %g2	cmp	%o4, %g2	bne	fail	add	%g1, %g2, %g2	cmp	%o5, %g2	bne	fail	add	%g1, %g2, %g2	cmp	%o6, %g2	bne	fail	add	%g1, %g2, %g2	cmp	%o7, %g2	bne	fail	add	%g1, %g2, %g2		save	subcc	%g3, 1, %g3	bge	5b	nop		subcc	%g0, 0, %g0	bne	fail	subcc	%g3, -1, %g0	bne	fail	subcc	%g5, 5, %g0	bne	fail	subcc	%g6, 6, %g0	bne	fail!	subcc	%g7, 7, %g0!	bne	fail	noptestok:	mov	%g7, %l0	ba	exit	st	%g0, [%l0+32]fail:	mov	%g7, %l0	mov	1, %o0	ba	exit	st	%o0, [%l0+32]exit:	! restore state	mov	%g7, %g1	ld	[%g1], %g2	mov	%g2, %psr	nop; nop; nop	ldd	[%g1+8], %g2	ldd	[%g1+16], %g4	ldd	[%g1+24], %g6	ldd	[%g1+32], %i0	ldd	[%g1+40], %i2	ldd	[%g1+48], %i4	ldd	[%g1+56], %i6	ldd	[%g1+64], %o0	ldd	[%g1+72], %o2	ldd	[%g1+80], %o4	ldd	[%g1+88], %o6	ld	[%g1+96], %l2	ld	[%g1+4], %g1	mov	%l2, %wim	nop; nop; noplast:	mov	%g7, %l0#ifndef _FLAT	ld	[%l0+32], %i0	ret	restore#else	retl	ld	[%l0+32], %o0#endif	.align 8!.common   regbuf, 168,"bss".align 32

⌨️ 快捷键说明

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