1# fr30 testcase for stm0 ($reglist_low)
2# mach(): fr30
3
4	.include "testutils.inc"
5
6	START
7
8	.text
9	.global stm0
10stm0:
11	; Test stm0 ($reglist_low)
12	mvr_h_gr	sp,r8		; save stack pointer temporarily
13	mvr_h_gr	sp,r9		; save stack pointer permanently
14	mvi_h_gr   	0,r0
15	mvi_h_gr   	1,r1
16	mvi_h_gr   	2,r2
17	mvi_h_gr   	3,r3
18	mvi_h_gr   	4,r4
19	mvi_h_gr   	5,r5
20	mvi_h_gr   	6,r6
21	mvi_h_gr   	7,r7
22	set_cc          0x0f		; Condition codes should not change
23	stm0      	(r0,r2,r4,r6)
24	test_cc		1 1 1 1
25	inci_h_gr	-4,r8
26	test_h_mem	6,r8
27	inci_h_gr	-4,r8
28	test_h_mem	4,r8
29	inci_h_gr	-4,r8
30	test_h_mem	2,r8
31	inci_h_gr	-4,r8
32	test_h_mem	0,r8
33
34	mvr_h_gr	r9,sp		; restore stack pointer
35	mvr_h_gr	r9,r8		; save stack pointer temporarily
36	mvi_h_gr   	0,r0
37	mvi_h_gr   	1,r1
38	mvi_h_gr   	2,r2
39	mvi_h_gr   	3,r3
40	mvi_h_gr   	4,r4
41	mvi_h_gr   	5,r5
42	mvi_h_gr   	6,r6
43	mvi_h_gr   	7,r7
44	set_cc          0x0f		; Condition codes should not change
45	stm0      	(r1,r3,r5,r7)
46	test_cc		1 1 1 1
47	inci_h_gr	-4,r8
48	test_h_mem	7,r8
49	inci_h_gr	-4,r8
50	test_h_mem	5,r8
51	inci_h_gr	-4,r8
52	test_h_mem	3,r8
53	inci_h_gr	-4,r8
54	test_h_mem	1,r8
55
56	mvr_h_gr	r9,sp		; restore stack pointer
57	mvr_h_gr	r9,r8		; save stack pointer temporarily
58	mvi_h_gr   	0,r0
59	mvi_h_gr   	1,r1
60	mvi_h_gr   	2,r2
61	mvi_h_gr   	3,r3
62	mvi_h_gr   	4,r4
63	mvi_h_gr   	5,r5
64	mvi_h_gr   	6,r6
65	mvi_h_gr   	7,r7
66	set_cc          0x0f		; Condition codes should not change
67	stm0      	(r1,r5,r7,r3)	; Order specified should not matter
68	test_cc		1 1 1 1
69	inci_h_gr	-4,r8
70	test_h_mem	7,r8
71	inci_h_gr	-4,r8
72	test_h_mem	5,r8
73	inci_h_gr	-4,r8
74	test_h_mem	3,r8
75	inci_h_gr	-4,r8
76	test_h_mem	1,r8
77
78	mvr_h_gr	r9,sp		; restore stack pointer
79	mvr_h_gr	r9,r8		; save stack pointer temporarily
80	mvi_h_gr   	9,r0
81	mvi_h_gr   	9,r1
82	mvi_h_gr   	9,r2
83	mvi_h_gr   	9,r3
84	mvi_h_gr   	9,r4
85	mvi_h_gr   	9,r5
86	mvi_h_gr   	9,r6
87	mvi_h_gr   	9,r7
88	set_cc          0x0f		; Condition codes should not change
89	stm0      	()		; should do nothing
90	test_cc		1 1 1 1
91	testr_h_gr	r9,sp
92	inci_h_gr	-4,r8
93	test_h_mem	7,r8
94	inci_h_gr	-4,r8
95	test_h_mem	5,r8
96	inci_h_gr	-4,r8
97	test_h_mem	3,r8
98	inci_h_gr	-4,r8
99	test_h_mem	1,r8
100
101	pass
102