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