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