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