1# mach: bfin 2 3.include "testutils.inc" 4 start 5 6 7 r0.l = 0x1111; 8 r0.h = 0x0011; 9 r1.l = 0x2222; 10 r1.h = 0x0022; 11 r2.l = 0x3333; 12 r2.h = 0x0033; 13 r3.l = 0x4444; 14 r3.h = 0x0044; 15 r4.l = 0x5555; 16 r4.h = 0x0055; 17 r5.l = 0x6666; 18 r5.h = 0x0066; 19 r6.l = 0x7777; 20 r6.h = 0x0077; 21 r7.l = 0x8888; 22 r7.h = 0x0088; 23 p1.l = 0x5a5a; 24 p1.h = 0x005a; 25 p2.l = 0x6363; 26 p2.h = 0x0063; 27 p3.l = 0x7777; 28 p3.h = 0x0077; 29 p4.l = 0x7878; 30 p4.h = 0x0078; 31 p5.l = 0x3e3e; 32 p5.h = 0x003e; 33 sp = 0x4000(x); 34 35 jump.s prog_start; 36 37 nop; 38 nop; // ADD reg update to roll back 39 nop; 40 41prog_start: 42 nop; 43 [--sp] = r0; 44 [--sp] = r1; 45 [--sp] = r2; 46 [--sp] = r3; 47 [--sp] = r4; 48 [--sp] = r5; 49 [--sp] = r6; 50 [--sp] = r7; 51 [--sp] = p0; 52 [--sp] = p1; 53 [--sp] = p2; 54 [--sp] = p3; 55 [--sp] = p4; 56 [--sp] = p5; 57 58 nop; 59 nop; 60 nop; 61 nop; 62 r0.l = 0xdead; 63 r0.h = 0xdead; 64 r1.l = 0xdead; 65 r1.h = 0xdead; 66 r2.l = 0xdead; 67 r2.h = 0xdead; 68 r3.l = 0xdead; 69 r3.h = 0xdead; 70 r4.l = 0xdead; 71 r4.h = 0xdead; 72 r5.l = 0xdead; 73 r5.h = 0xdead; 74 r6.l = 0xdead; 75 r6.h = 0xdead; 76 r7.l = 0xdead; 77 r7.h = 0xdead; 78 p1.l = 0xdead; 79 p1.h = 0xdead; 80 p2.l = 0xdead; 81 p2.h = 0xdead; 82 p3.l = 0xdead; 83 p3.h = 0xdead; 84 p4.l = 0xdead; 85 p4.h = 0xdead; 86 p5.l = 0xdead; 87 p5.h = 0xdead; 88 nop; 89 nop; 90 nop; 91 r0 = [sp++]; 92 r1 = [sp++]; 93 r2 = [sp++]; 94 r3 = [sp++]; 95 r4 = [sp++]; 96 r5 = [sp++]; 97 r6 = [sp++]; 98 r7 = [sp++]; 99 p0 = [sp++]; 100 p1 = [sp++]; 101 p2 = [sp++]; 102 p3 = [sp++]; 103 p4 = [sp++]; 104 p5 = [sp++]; 105 106 nop; 107 nop; 108 nop; 109 nop; 110 nop; 111 nop; 112 nop; 113_tp1: 114 nop; 115 nop; 116 nop; 117 nop; 118 nop; 119 nop; 120 nop; 121 [--sp] = r0; 122 [--sp] = r1; 123 [--sp] = r2; 124 [--sp] = r3; 125 [--sp] = r4; 126 [--sp] = r5; 127 [--sp] = r6; 128 [--sp] = r7; 129 [--sp] = p0; 130 [--sp] = p1; 131 [--sp] = p2; 132 [--sp] = p3; 133 [--sp] = p4; 134 [--sp] = p5; 135 136 nop; 137 nop; 138 nop; 139 nop; 140 r0.l = 0xdead; 141 r0.h = 0xdead; 142 r1.l = 0xdead; 143 r1.h = 0xdead; 144 r2.l = 0xdead; 145 r2.h = 0xdead; 146 r3.l = 0xdead; 147 r3.h = 0xdead; 148 r4.l = 0xdead; 149 r4.h = 0xdead; 150 r5.l = 0xdead; 151 r5.h = 0xdead; 152 r6.l = 0xdead; 153 r6.h = 0xdead; 154 r7.l = 0xdead; 155 r7.h = 0xdead; 156 p1.l = 0xdead; 157 p1.h = 0xdead; 158 p2.l = 0xdead; 159 p2.h = 0xdead; 160 p3.l = 0xdead; 161 p3.h = 0xdead; 162 p4.l = 0xdead; 163 p4.h = 0xdead; 164 p5.l = 0xdead; 165 p5.h = 0xdead; 166 nop; 167 nop; 168 nop; 169 r0 = [sp++]; 170 r1 = [sp++]; 171 r2 = [sp++]; 172 r3 = [sp++]; 173 r4 = [sp++]; 174 r5 = [sp++]; 175 r6 = [sp++]; 176 r7 = [sp++]; 177 p0 = [sp++]; 178 p1 = [sp++]; 179 a0.x = [sp++]; 180 181 a1.w = r0; //preserve r0 182 183 r0 = a0.x; 184 DBGA(r0.l,0x0063); 185 186 a0.w = [sp++]; 187 r0 = a0.w; 188 DBGA(r0.l,0x7777); 189 DBGA(r0.h,0x0077); 190 191 a0 = a1; //perserver r0, still 192 193 a1.x = [sp++]; 194 r0 = a1.x; 195 DBGA(r0.l,0x0078); 196 197 a1.w = [sp++]; 198 r0 = a1.w; 199 DBGA(r0.l,0x3e3e); 200 DBGA(r0.h,0x003e); 201 202 r0 = a0.w; //restore r0 203 204 nop; 205 nop; 206 nop; 207 nop; 208 nop; 209 nop; 210 nop; 211_tp2: 212 nop; 213 nop; 214 nop; 215 [--sp] = r0; 216 [--sp] = r1; 217 [--sp] = r2; 218 [--sp] = r3; 219 [--sp] = a0.x; 220 [--sp] = a0.w; 221 [--sp] = a1.x; 222 [--sp] = a1.w; 223 [--sp] = p0; 224 [--sp] = p1; 225 [--sp] = p2; 226 [--sp] = p3; 227 [--sp] = p4; 228 [--sp] = p5; 229 230 nop; 231 nop; 232 nop; 233 nop; 234 r0.l = 0xdead; 235 r0.h = 0xdead; 236 r1.l = 0xdead; 237 r1.h = 0xdead; 238 r2.l = 0xdead; 239 r2.h = 0xdead; 240 r3.l = 0xdead; 241 r3.h = 0xdead; 242 r4.l = 0xdead; 243 r4.h = 0xdead; 244 r5.l = 0xdead; 245 r5.h = 0xdead; 246 r6.l = 0xdead; 247 r6.h = 0xdead; 248 r7.l = 0xdead; 249 r7.h = 0xdead; 250 p1.l = 0xdead; 251 p1.h = 0xdead; 252 p2.l = 0xdead; 253 p2.h = 0xdead; 254 p3.l = 0xdead; 255 p3.h = 0xdead; 256 p4.l = 0xdead; 257 p4.h = 0xdead; 258 p5.l = 0xdead; 259 p5.h = 0xdead; 260 nop; 261 nop; 262 nop; 263 r0 = [sp++]; 264 r1 = [sp++]; 265 r2 = [sp++]; 266 r3 = [sp++]; 267 r4 = [sp++]; 268 r5 = [sp++]; 269 r6 = [sp++]; 270 r7 = [sp++]; 271 p0 = [sp++]; 272 p1 = [sp++]; 273 p2 = [sp++]; 274 p3 = [sp++]; 275 p4 = [sp++]; 276 p5 = [sp++]; 277 278 nop; 279 nop; 280 nop; 281 nop; 282 nop; 283 nop; 284 nop; 285_tp3: 286 nop; 287 nop; 288 nop; 289 nop; 290 nop; 291_halt: 292 pass; 293