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

📄 regtest.s

📁 一个航天航空用的Sparc处理器(配美国欧洲宇航局用的R_tems嵌入式操作系统)的VHDL源代码
💻 S
字号:
#include "leon.h"
#include "test.h"

	.text
	.align 4
	.global _regtest
	.proc	04

_regtest:

	! flush all register windows

	save %sp, -96, %sp
	save %sp, -96, %sp
	save %sp, -96, %sp
	save %sp, -96, %sp
	save %sp, -96, %sp
	save %sp, -96, %sp
	save %sp, -96, %sp
	save %sp, -96, %sp
	save %sp, -96, %sp
	restore
	restore
	restore
	restore
	restore
	restore
	restore
	restore

	! save global and input registers

	nop; nop
	set	regbuf, %l0
	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]
	mov	%wim, %l2
	st	%l2, [%l0+64]

	! 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
1:
	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, 7, %g0
	bne,a	1b
	inc	%g3
	
	! check values

	set	0x01010101, %g1
	mov	%g0, %g2
	mov	%g0, %g3
1:
	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, 7, %g0
	bne,a	1b
	inc	%g3
	


	subcc	%g0, 0, %g0
	bne	fail
	subcc	%g4, 4, %g0
	bne	fail
	subcc	%g5, 5, %g0
	bne	fail
	subcc	%g6, 6, %g0
	bne	fail
	subcc	%g7, 7, %g0
	bne	fail
	nop

testok:
	set	regbuf, %l0
	mov	1, %o0
	ba	exit
	st	%o0, [%l0+32]
fail:
	set	regbuf, %l0
	ba	exit
	st	%g0, [%l0+32]

exit:

	! restore state

	set	regbuf, %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
	ld	[%g1+64], %l2
	ld	[%g1+4], %g1
	mov	%l2, %wim
	nop; nop; nop


	ret
	restore

	.align 8
.common   regbuf, 80,"bss"

.align 32

⌨️ 快捷键说明

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