summaryrefslogtreecommitdiff
path: root/sim/testsuite/sim/fr30/ret.cgs
blob: 7bfa0b230f9c8dde4e51ebee4f37670acccba481 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# fr30 testcase for ret
# mach(): fr30

	.include "testutils.inc"

	START

	.text
	.global ret

	; Test ret
	mvi_h_gr	0xdeadbeef,r9
	mvi_h_gr   	#func1,r0
	set_cc          0x0f		; condition codes shouldn't change
call1:
	call		@r0
	testr_h_gr	2,r0
	test_h_gr	0xbeefdead,r9
	pass

func1:
	test_cc		1 1 1 1
	mvi_h_gr	#call1,r7
	inci_h_gr	2,r7
	testr_h_dr	r7,rp
	save_rp

	mvi_h_gr   	#func2,r0
	set_cc          0x0f		; condition codes shouldn't change
call2:
	call:d		@r0
	ldi:8		1,r0		; Must assume this works
	testr_h_gr	2,r0
	restore_rp
	ret
func2:
	test_cc		1 1 1 1
	mvi_h_gr	#call2,r7
	inci_h_gr	4,r7
	testr_h_dr	r7,rp
	testr_h_gr	1,r0
	save_rp

	set_cc          0x0f		; condition codes shouldn't change
call3:
	call		func3
	testr_h_gr	2,r0
	restore_rp
	ret
func3:
	test_cc		1 1 1 1
	mvi_h_gr	#call3,r7
	inci_h_gr	2,r7
	testr_h_dr	r7,rp
	save_rp

	set_cc          0x0f		; condition codes shouldn't change
call4:
	call:d		func4
	ldi:8		1,r0		; Must assume this works
	testr_h_gr	3,r0
	restore_rp
	ret:d
	ldi:8		2,r0		; Must assume this works
func4:
	test_cc		1 1 1 1
	mvi_h_gr	#call4,r7
	inci_h_gr	4,r7
	testr_h_dr	r7,rp
	testr_h_gr	1,r0
	mvi_h_gr	0xbeefdead,r9
	ret:d
	ldi:8		3,r0		; Must assume this works

	fail