1# fr30 testcase for ret
2# mach(): fr30
3
4	.include "testutils.inc"
5
6	START
7
8	.text
9	.global ret
10
11	; Test ret
12	mvi_h_gr	0xdeadbeef,r9
13	mvi_h_gr   	#func1,r0
14	set_cc          0x0f		; condition codes shouldn't change
15call1:
16	call		@r0
17	testr_h_gr	2,r0
18	test_h_gr	0xbeefdead,r9
19	pass
20
21func1:
22	test_cc		1 1 1 1
23	mvi_h_gr	#call1,r7
24	inci_h_gr	2,r7
25	testr_h_dr	r7,rp
26	save_rp
27
28	mvi_h_gr   	#func2,r0
29	set_cc          0x0f		; condition codes shouldn't change
30call2:
31	call:d		@r0
32	ldi:8		1,r0		; Must assume this works
33	testr_h_gr	2,r0
34	restore_rp
35	ret
36func2:
37	test_cc		1 1 1 1
38	mvi_h_gr	#call2,r7
39	inci_h_gr	4,r7
40	testr_h_dr	r7,rp
41	testr_h_gr	1,r0
42	save_rp
43
44	set_cc          0x0f		; condition codes shouldn't change
45call3:
46	call		func3
47	testr_h_gr	2,r0
48	restore_rp
49	ret
50func3:
51	test_cc		1 1 1 1
52	mvi_h_gr	#call3,r7
53	inci_h_gr	2,r7
54	testr_h_dr	r7,rp
55	save_rp
56
57	set_cc          0x0f		; condition codes shouldn't change
58call4:
59	call:d		func4
60	ldi:8		1,r0		; Must assume this works
61	testr_h_gr	3,r0
62	restore_rp
63	ret:d
64	ldi:8		2,r0		; Must assume this works
65func4:
66	test_cc		1 1 1 1
67	mvi_h_gr	#call4,r7
68	inci_h_gr	4,r7
69	testr_h_dr	r7,rp
70	testr_h_gr	1,r0
71	mvi_h_gr	0xbeefdead,r9
72	ret:d
73	ldi:8		3,r0		; Must assume this works
74
75	fail
76