xref: /netbsd-src/external/gpl3/gdb/dist/sim/testsuite/frv/commitfr.cgs (revision 4b169a6ba595ae283ca507b26b15fdff40495b1c)
1*4b169a6bSchristos# frv testcase for commitfr $FRk
2*4b169a6bSchristos# mach: frv
3*4b169a6bSchristos
4*4b169a6bSchristos	.include "testutils.inc"
5*4b169a6bSchristos
6*4b169a6bSchristos	start
7*4b169a6bSchristos
8*4b169a6bSchristos	.global commitfr
9*4b169a6bSchristoscommitfr:
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	nldfi		@(sp,0),fr20	; Activate fr20 with nesr.fr==1
19*4b169a6bSchristos	nldi		@(sp,0),gr20	; Activate gr20 with nesr.fr==0
20*4b169a6bSchristos	nldfi		@(sp,0),fr52	; Activate fr52 with nesr.fr==1
21*4b169a6bSchristos	set_spr_immed	0x00000000,fner1
22*4b169a6bSchristos	set_spr_immed	0x00000000,fner0
23*4b169a6bSchristos	set_spr_addr	bad,lr
24*4b169a6bSchristos	commitfr	fr20		; should be nop
25*4b169a6bSchristos	test_spr_immed	0x00000000,fner1
26*4b169a6bSchristos	test_spr_immed	0x00000000,fner0
27*4b169a6bSchristos	test_spr_immed	0xd4800001,nesr0
28*4b169a6bSchristos	test_spr_gr	neear0,sp
29*4b169a6bSchristos	test_spr_immed	0x94800401,nesr1
30*4b169a6bSchristos	test_spr_gr	neear1,sp
31*4b169a6bSchristos	test_spr_immed	0xf4800801,nesr2
32*4b169a6bSchristos	test_spr_gr	neear2,sp
33*4b169a6bSchristos
34*4b169a6bSchristos	or_spr_immed	0x00100000,fner1
35*4b169a6bSchristos	or_spr_immed	0x00200000,fner1
36*4b169a6bSchristos	or_spr_immed	0x00100000,fner0
37*4b169a6bSchristos	set_spr_addr	ok,lr
38*4b169a6bSchristos	set_gr_addr	com1,gr16
39*4b169a6bSchristoscom1:	commitfr	fr20
40*4b169a6bSchristos	test_gr_immed	1,gr15
41*4b169a6bSchristos
42*4b169a6bSchristos	pass
43*4b169a6bSchristos
44*4b169a6bSchristosok:	test_spr_immed	0x1,esfr1		; esr0 is active
45*4b169a6bSchristos	test_spr_gr	epcr0,gr16
46*4b169a6bSchristos	test_spr_bits	0x0001,0,0x1,esr0	; esr0 is valid
47*4b169a6bSchristos	test_spr_bits	0x003e,1,0x14,esr0	; esr0.ec is set
48*4b169a6bSchristos	test_spr_bits	0x0800,11,0x0,esr0	; esr0.eav is clear
49*4b169a6bSchristos	test_spr_bits	0x01000,12,0x0,esr0	; esr0.edv is clear
50*4b169a6bSchristos	test_spr_immed	0x00200000,fner1
51*4b169a6bSchristos	test_spr_immed	0x00100000,fner0
52*4b169a6bSchristos	test_spr_immed	0,nesr0
53*4b169a6bSchristos	test_spr_immed	0,neear0
54*4b169a6bSchristos	test_spr_immed	0x94800401,nesr1
55*4b169a6bSchristos	test_spr_gr	neear1,sp
56*4b169a6bSchristos	test_spr_immed	0xf4800801,nesr2
57*4b169a6bSchristos	test_spr_gr	neear2,sp
58*4b169a6bSchristos	inc_gr_immed	1,gr15
59*4b169a6bSchristos	rett		0
60*4b169a6bSchristos
61*4b169a6bSchristosbad:	fail
62