OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gdb-6.8/] [sim/] [testsuite/] [sim/] [h8300/] [ldm.s] - Rev 438

Go to most recent revision | Compare with Previous | Blame | View Log

# Hitachi H8 testcase 'ldm', 'stm'
# mach(): all
# as(h8300):	--defsym sim_cpu=0
# as(h8300h):	--defsym sim_cpu=1
# as(h8300s):	--defsym sim_cpu=2
# as(h8sx):	--defsym sim_cpu=3
# ld(h8300h):	-m h8300helf
# ld(h8300s):	-m h8300self
# ld(h8sx):	-m h8300sxelf
 
	.include "testutils.inc"
	.data
	.align 4
_stack:	.long	0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0
	.long	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
	.long	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
	.long	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
_stack_top:
 
	start
 
.if (sim_cpu == h8300s || sim_cpu == h8sx)	; Earlier versions, no exr
stm_2reg:
	set_grs_a5a5
	mov	#_stack_top, er7
	mov	#2, er2
	mov	#3, er3
 
	set_ccr_zero
	stm	er2-er3, @-sp
	test_cc_clear
 
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 1
	test_h_gr32  2	er2
	test_h_gr32  3	er3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_h_gr32  _stack_top-8, er7
 
	mov	@_stack_top-4, er0
	cmp	#2, er0
	bne	fail1
 
	mov	@_stack_top-8, er0
	cmp	#3, er0
	bne	fail1
 
	mov	@_stack_top-12, er0
	cmp	#0, er0
	bne	fail1
 
stm_3reg:
	set_grs_a5a5
	mov	#_stack_top, er7
	mov	#4, er4
	mov	#5, er5
	mov	#6, er6
 
	set_ccr_zero
	stm	er4-er6, @-sp
	test_cc_clear
 
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 1
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_h_gr32  4	er4
	test_h_gr32  5	er5
	test_h_gr32  6	er6
	test_h_gr32  _stack_top-12, er7
 
	mov	@_stack_top-4, er0
	cmp	#4, er0
	bne	fail1
 
	mov	@_stack_top-8, er0
	cmp	#5, er0
	bne	fail1
 
	mov	@_stack_top-12, er0
	cmp	#6, er0
	bne	fail1
 
	mov	@_stack_top-16, er0
	cmp	#0, er0
	bne	fail1
 
stm_4reg:
	set_grs_a5a5
	mov	#_stack_top, er7
	mov	#1, er0
	mov	#2, er1
	mov	#3, er2
	mov	#4, er3
 
	set_ccr_zero
	stm	er0-er3, @-sp
	test_cc_clear
 
	test_h_gr32  1	er0
	test_h_gr32  2	er1
	test_h_gr32  3	er2
	test_h_gr32  4	er3
	test_gr_a5a5 4		; Make sure other general regs not disturbed
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_h_gr32  _stack_top-16, er7
 
	mov	@_stack_top-4, er0
	cmp	#1, er0
	bne	fail1
 
	mov	@_stack_top-8, er0
	cmp	#2, er0
	bne	fail1
 
	mov	@_stack_top-12, er0
	cmp	#3, er0
	bne	fail1
 
	mov	@_stack_top-16, er0
	cmp	#4, er0
	bne	fail1
 
	mov	@_stack_top-20, er0
	cmp	#0, er0
	bne	fail1
 
ldm_2reg:
	set_grs_a5a5
	mov	#_stack, er7
 
	set_ccr_zero
	ldm	@sp+, er2-er3
	test_cc_clear
 
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 1
	test_h_gr32  1	er2
	test_h_gr32  0	er3
	test_gr_a5a5 4
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_h_gr32  _stack+8, er7
 
ldm_3reg:
	set_grs_a5a5
	mov	#_stack+4, er7
 
	set_ccr_zero
	ldm	@sp+, er4-er6
	test_cc_clear
 
	test_gr_a5a5 0		; Make sure other general regs not disturbed
	test_gr_a5a5 1
	test_gr_a5a5 2
	test_gr_a5a5 3
	test_h_gr32  3	er4
	test_h_gr32  2	er5
	test_h_gr32  1	er6
	test_h_gr32  _stack+16, er7
 
ldm_4reg:
	set_grs_a5a5
	mov	#_stack+4, er7
 
	set_ccr_zero
	ldm	@sp+, er0-er3
	test_cc_clear
 
	test_h_gr32  4	er0
	test_h_gr32  3	er1
	test_h_gr32  2	er2
	test_h_gr32  1	er3
	test_gr_a5a5 4		; Make sure other general regs not disturbed
	test_gr_a5a5 5
	test_gr_a5a5 6
	test_h_gr32  _stack+20, er7
.endif
 
pushpop:
	set_grs_a5a5
.if (sim_cpu == h8300)
	mov	#_stack_top, r7
	mov	#12, r1
	mov	#34, r2
	mov	#56, r3
	push	r1
	push	r2
	push	r3
	pop	r4
	pop	r5
	pop	r6
 
	test_gr_a5a5 0		; Make sure other general _reg_ not disturbed
	test_h_gr16  12	r1
	test_h_gr16  34	r2
	test_h_gr16  56	r3
	test_h_gr16  56	r4
	test_h_gr16  34	r5
	test_h_gr16  12	r6
	mov	#_stack_top, r0
	cmp.w	r0, r7
	bne	fail1
.else
	mov	#_stack_top, er7
	mov	#12, er1
	mov	#34, er2
	mov	#56, er3
	push	er1
	push	er2
	push	er3
	pop	er4
	pop	er5
	pop	er6
 
	test_gr_a5a5 0		; Make sure other general _reg_ not disturbed
	test_h_gr32  12	er1
	test_h_gr32  34	er2
	test_h_gr32  56	er3
	test_h_gr32  56	er4
	test_h_gr32  34	er5
	test_h_gr32  12	er6
	test_h_gr32  _stack_top, er7
.endif
 
	pass
 
	exit 0
 
fail1:	fail
 

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.