Home | History | Annotate | Line # | Download | only in frv
      1  1.1  christos # mach: frv fr500 fr550
      2  1.1  christos # sim: --memory-region 0xff000000,4 --memory-region 0xfe000000,00404000
      3  1.1  christos # xfail: "crashes with bad write" *-*
      4  1.1  christos 
      5  1.1  christos ; Exit with return code
      6  1.1  christos 
      7  1.1  christos 	.macro exit rc
      8  1.1  christos 	setlos.p	#1,gr7
      9  1.1  christos 	setlos          \rc,gr8
     10  1.1  christos 	tira		gr0,#0
     11  1.1  christos 	.endm
     12  1.1  christos 
     13  1.1  christos ; Pass the test case
     14  1.1  christos 	.macro pass
     15  1.1  christos pass:
     16  1.1  christos 	setlos.p	#5,gr10
     17  1.1  christos 	setlos		#1,gr8
     18  1.1  christos 	setlos		#5,gr7
     19  1.1  christos 	sethi.p		%hi(passmsg),gr9
     20  1.1  christos 	setlo		%lo(passmsg),gr9
     21  1.1  christos 	tira		gr0,#0
     22  1.1  christos 	exit		#0
     23  1.1  christos 	.endm
     24  1.1  christos 
     25  1.1  christos ; Fail the testcase
     26  1.1  christos 	.macro fail
     27  1.1  christos fail\@:
     28  1.1  christos 	setlos.p	#5,gr10
     29  1.1  christos 	setlos		#1,gr8
     30  1.1  christos 	setlos		#5,gr7
     31  1.1  christos 	sethi.p		%hi(failmsg),gr9
     32  1.1  christos 	setlo		%lo(failmsg),gr9
     33  1.1  christos 	tira		gr0,#0
     34  1.1  christos 	exit		#1
     35  1.1  christos 	.endm
     36  1.1  christos 
     37  1.1  christos 	.data
     38  1.1  christos failmsg:
     39  1.1  christos 	.ascii "fail\n"
     40  1.1  christos passmsg:
     41  1.1  christos 	.ascii "pass\n"
     42  1.1  christos 
     43  1.1  christos 	.text
     44  1.1  christos 	.global _start
     45  1.1  christos _start:
     46  1.1  christos 	movsg		hsr0,gr10	; enable insn and data caches
     47  1.1  christos 	sethi.p		0xc800,gr11	; in copy-back mode
     48  1.1  christos 	setlo		0x0000,gr11
     49  1.1  christos 	or		gr10,gr11,gr10
     50  1.1  christos 	movgs		gr10,hsr0
     51  1.1  christos 	
     52  1.1  christos 	sethi.p		0x7,sp
     53  1.1  christos 	setlo		0x0000,sp
     54  1.1  christos 
     55  1.1  christos 	; fill the cache
     56  1.1  christos 	sethi.p		%hi(done1),gr10
     57  1.1  christos 	setlo		%lo(done1),gr10
     58  1.1  christos 	movgs		gr10,lr
     59  1.1  christos 	setlos.p	0x1000,gr10
     60  1.1  christos 	setlos		0x0,gr11
     61  1.1  christos 	movgs		gr10,lcr
     62  1.1  christos write1:	st.p		gr11,@(sp,gr11)
     63  1.1  christos 	addi.p		gr11,4,gr11
     64  1.1  christos 	bctrlr.p	1,0
     65  1.1  christos 	bra		write1
     66  1.1  christos done1:
     67  1.1  christos 	; read it back
     68  1.1  christos 	sethi.p		%hi(done2),gr10
     69  1.1  christos 	setlo		%lo(done2),gr10
     70  1.1  christos 	movgs		gr10,lr
     71  1.1  christos 	setlos.p	0x1000,gr10
     72  1.1  christos 	setlos		0x0,gr11
     73  1.1  christos 	movgs		gr10,lcr
     74  1.1  christos read1:	ld		@(sp,gr11),gr12
     75  1.1  christos 	cmp		gr11,gr12,icc0
     76  1.1  christos 	bne		icc0,1,fail
     77  1.1  christos 	addi.p		gr11,4,gr11
     78  1.1  christos 	bctrlr.p	1,0
     79  1.1  christos 	bra		read1
     80  1.1  christos done2:	
     81  1.1  christos 	
     82  1.1  christos 	; fill the cache twice
     83  1.1  christos 	sethi.p		%hi(done3),gr10
     84  1.1  christos 	setlo		%lo(done3),gr10
     85  1.1  christos 	movgs		gr10,lr
     86  1.1  christos 	setlos.p	0x2000,gr10
     87  1.1  christos 	setlos		0x0,gr11
     88  1.1  christos 	movgs		gr10,lcr
     89  1.1  christos write3:	st.p		gr11,@(sp,gr11)
     90  1.1  christos 	addi.p		gr11,4,gr11
     91  1.1  christos 	bctrlr.p	1,0
     92  1.1  christos 	bra		write3
     93  1.1  christos done3:
     94  1.1  christos 	; read it back
     95  1.1  christos 	sethi.p		%hi(done4),gr10
     96  1.1  christos 	setlo		%lo(done4),gr10
     97  1.1  christos 	movgs		gr10,lr
     98  1.1  christos 	setlos.p	0x2000,gr10
     99  1.1  christos 	setlos		0x0,gr11
    100  1.1  christos 	movgs		gr10,lcr
    101  1.1  christos read4:	ld		@(sp,gr11),gr12
    102  1.1  christos 	cmp		gr11,gr12,icc0
    103  1.1  christos 	bne		icc0,1,fail
    104  1.1  christos 	addi.p		gr11,4,gr11
    105  1.1  christos 	bctrlr.p	1,0
    106  1.1  christos 	bra		read4
    107  1.1  christos done4:	
    108  1.1  christos 	; read it back in reverse
    109  1.1  christos 	sethi.p		%hi(done5),gr10
    110  1.1  christos 	setlo		%lo(done5),gr10
    111  1.1  christos 	movgs		gr10,lr
    112  1.1  christos 	setlos.p	0x2000,gr10
    113  1.1  christos 	setlos		0x7ffc,gr11
    114  1.1  christos 	movgs		gr10,lcr
    115  1.1  christos read5:	ld		@(sp,gr11),gr12
    116  1.1  christos 	cmp		gr11,gr12,icc0
    117  1.1  christos 	bne		icc0,1,fail
    118  1.1  christos 	subi.p		gr11,4,gr11
    119  1.1  christos 	bctrlr.p	1,0
    120  1.1  christos 	bra		read5
    121  1.1  christos done5:	
    122  1.1  christos 
    123  1.1  christos 	; access data and insns in non-cache areas
    124  1.1  christos 	sethi.p		0x8038,gr11		; bctrlr 0,0
    125  1.1  christos 	setlo		0x2000,gr11
    126  1.1  christos 
    127  1.1  christos 	sethi.p		0xff00,gr10		; documented area
    128  1.1  christos 	setlo		0x0000,gr10
    129  1.1  christos 	sti		gr11,@(gr10,0)
    130  1.1  christos 	jmpl		@(gr10,gr0)
    131  1.1  christos 
    132  1.1  christos 	;  enable RAM mode
    133  1.1  christos 	movsg		hsr0,gr10
    134  1.1  christos 	sethi.p		0x0040,gr12
    135  1.1  christos 	setlo		0x0000,gr12
    136  1.1  christos 	or		gr10,gr12,gr10
    137  1.1  christos 	movgs		gr10,hsr0
    138  1.1  christos 
    139  1.1  christos 	sethi.p		0xfe00,gr10		; documented area
    140  1.1  christos 	setlo		0x0400,gr10
    141  1.1  christos 	sti		gr11,@(gr10,0)
    142  1.1  christos 	jmpl		@(gr10,gr0)
    143  1.1  christos 
    144  1.1  christos 	sethi.p		0xfe40,gr10		; documented area
    145  1.1  christos 	setlo		0x0400,gr10
    146  1.1  christos 	sti		gr11,@(gr10,0)
    147  1.1  christos 	dcf		@(gr10,gr0)
    148  1.1  christos 	jmpl		@(gr10,gr0)
    149  1.1  christos 
    150  1.1  christos 	sethi.p		0x0007,gr10		; non RAM area
    151  1.1  christos 	setlo		0x0000,gr10
    152  1.1  christos 	sti		gr11,@(gr10,0)
    153  1.1  christos 	jmpl		@(gr10,gr0)
    154  1.1  christos 
    155  1.1  christos 	sethi.p		0xfe00,gr10		; insn RAM area
    156  1.1  christos 	setlo		0x0000,gr10
    157  1.1  christos 	sti		gr11,@(gr10,0)
    158  1.1  christos 	jmpl		@(gr10,gr0)
    159  1.1  christos 
    160  1.1  christos 	sethi.p		0xfe40,gr10		; data RAM area
    161  1.1  christos 	setlo		0x0000,gr10
    162  1.1  christos 	sti		gr11,@(gr10,0)
    163  1.1  christos 	dcf		@(gr10,gr0)
    164  1.1  christos 	jmpl		@(gr10,gr0)
    165  1.1  christos 	
    166  1.1  christos 	pass
    167  1.1  christos fail:
    168  1.1  christos 	fail
    169