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