xref: /netbsd-src/external/gpl3/gdb/dist/sim/testsuite/frv/commitgr.cgs (revision 4b169a6ba595ae283ca507b26b15fdff40495b1c)
1*4b169a6bSchristos# frv testcase for commitgr $GRk
2*4b169a6bSchristos# mach: frv
3*4b169a6bSchristos
4*4b169a6bSchristos	.include "testutils.inc"
5*4b169a6bSchristos
6*4b169a6bSchristos	start
7*4b169a6bSchristos
8*4b169a6bSchristos	.global commitgr
9*4b169a6bSchristoscommitgr:
10*4b169a6bSchristos	and_spr_immed	-4081,tbr		; clear tbr.tt
11*4b169a6bSchristos	set_gr_spr	tbr,gr17
12*4b169a6bSchristos	inc_gr_immed	0x190,gr17		; address of exception handler
13*4b169a6bSchristos	set_bctrlr_0_0  gr17
14*4b169a6bSchristos	set_spr_immed	128,lcr
15*4b169a6bSchristos	set_psr_et	1
16*4b169a6bSchristos	set_gr_immed	0,gr15
17*4b169a6bSchristos
18*4b169a6bSchristos	nldi		@(sp,0),gr20	; Activate gr20 with nesr.fr==0
19*4b169a6bSchristos	nldfi		@(sp,0),fr20	; Activate fr20 with nesr.fr==1
20*4b169a6bSchristos	nldi		@(sp,0),gr52	; Activate gr52 with nesr.fr==0
21*4b169a6bSchristos	set_spr_immed	0x00000000,gner1
22*4b169a6bSchristos	set_spr_immed	0x00000000,gner0
23*4b169a6bSchristos	set_spr_addr	bad,lr
24*4b169a6bSchristos	commitgr	gr20		; should only clear ne flags
25*4b169a6bSchristos	test_gr_immed	0,gr15
26*4b169a6bSchristos	test_spr_immed	0x00000000,gner1
27*4b169a6bSchristos	test_spr_immed	0x00000000,gner0
28*4b169a6bSchristos	test_spr_immed	0x94800001,nesr0
29*4b169a6bSchristos	test_spr_gr	neear0,sp
30*4b169a6bSchristos	test_spr_immed	0xd4800401,nesr1
31*4b169a6bSchristos	test_spr_gr	neear1,sp
32*4b169a6bSchristos	test_spr_immed	0xb4800801,nesr2
33*4b169a6bSchristos	test_spr_gr	neear2,sp
34*4b169a6bSchristos
35*4b169a6bSchristos	or_spr_immed	0x00100000,gner1
36*4b169a6bSchristos	or_spr_immed	0x00200000,gner1
37*4b169a6bSchristos	or_spr_immed	0x00100000,gner0
38*4b169a6bSchristos	set_spr_addr	ok,lr
39*4b169a6bSchristos	set_gr_addr	com1,gr16
40*4b169a6bSchristoscom1:	commitgr	gr20
41*4b169a6bSchristos	test_gr_immed	1,gr15
42*4b169a6bSchristos
43*4b169a6bSchristos	pass
44*4b169a6bSchristos
45*4b169a6bSchristosok:	test_spr_immed	0x1,esfr1		; esr0 is active
46*4b169a6bSchristos	test_spr_gr	epcr0,gr16
47*4b169a6bSchristos	test_spr_bits	0x0001,0,0x1,esr0	; esr0 is valid
48*4b169a6bSchristos	test_spr_bits	0x003e,1,0x14,esr0	; esr0.ec is set
49*4b169a6bSchristos	test_spr_bits	0x0800,11,0x0,esr0	; esr0.eav is clear
50*4b169a6bSchristos	test_spr_bits	0x01000,12,0x0,esr0	; esr0.edv is clear
51*4b169a6bSchristos	test_spr_immed	0x00200000,gner1
52*4b169a6bSchristos	test_spr_immed	0x00100000,gner0
53*4b169a6bSchristos	test_spr_immed	0,nesr0
54*4b169a6bSchristos	test_spr_immed	0,neear0
55*4b169a6bSchristos	test_spr_immed	0xd4800401,nesr1
56*4b169a6bSchristos	test_spr_gr	neear1,sp
57*4b169a6bSchristos	test_spr_immed	0xb4800801,nesr2
58*4b169a6bSchristos	test_spr_gr	neear2,sp
59*4b169a6bSchristos	inc_gr_immed	1,gr15
60*4b169a6bSchristos	rett		0
61*4b169a6bSchristos
62*4b169a6bSchristosbad:	fail
63