blob: 5bf4aa64943d92abe6785ba50fe2ef7a670db34f [file] [log] [blame]
# mach: bfin
.include "testutils.inc"
start
r0.l = 0x1111;
r0.h = 0x0011;
r1.l = 0x2222;
r1.h = 0x0022;
r2.l = 0x3333;
r2.h = 0x0033;
r3.l = 0x4444;
r3.h = 0x0044;
r4.l = 0x5555;
r4.h = 0x0055;
r5.l = 0x6666;
r5.h = 0x0066;
r6.l = 0x7777;
r6.h = 0x0077;
r7.l = 0x8888;
r7.h = 0x0088;
p1.l = 0x5a5a;
p1.h = 0x005a;
p2.l = 0x6363;
p2.h = 0x0063;
p3.l = 0x7777;
p3.h = 0x0077;
p4.l = 0x7878;
p4.h = 0x0078;
p5.l = 0x3e3e;
p5.h = 0x003e;
sp = 0x4000(x);
jump.s prog_start;
nop;
nop; // ADD reg update to roll back
nop;
prog_start:
nop;
[--sp] = r0;
[--sp] = r1;
[--sp] = r2;
[--sp] = r3;
[--sp] = r4;
[--sp] = r5;
[--sp] = r6;
[--sp] = r7;
[--sp] = p0;
[--sp] = p1;
[--sp] = p2;
[--sp] = p3;
[--sp] = p4;
[--sp] = p5;
nop;
nop;
nop;
nop;
r0.l = 0xdead;
r0.h = 0xdead;
r1.l = 0xdead;
r1.h = 0xdead;
r2.l = 0xdead;
r2.h = 0xdead;
r3.l = 0xdead;
r3.h = 0xdead;
r4.l = 0xdead;
r4.h = 0xdead;
r5.l = 0xdead;
r5.h = 0xdead;
r6.l = 0xdead;
r6.h = 0xdead;
r7.l = 0xdead;
r7.h = 0xdead;
p1.l = 0xdead;
p1.h = 0xdead;
p2.l = 0xdead;
p2.h = 0xdead;
p3.l = 0xdead;
p3.h = 0xdead;
p4.l = 0xdead;
p4.h = 0xdead;
p5.l = 0xdead;
p5.h = 0xdead;
nop;
nop;
nop;
r0 = [sp++];
r1 = [sp++];
r2 = [sp++];
r3 = [sp++];
r4 = [sp++];
r5 = [sp++];
r6 = [sp++];
r7 = [sp++];
p0 = [sp++];
p1 = [sp++];
p2 = [sp++];
p3 = [sp++];
p4 = [sp++];
p5 = [sp++];
nop;
nop;
nop;
nop;
nop;
nop;
nop;
_tp1:
nop;
nop;
nop;
nop;
nop;
nop;
nop;
[--sp] = r0;
[--sp] = r1;
[--sp] = r2;
[--sp] = r3;
[--sp] = r4;
[--sp] = r5;
[--sp] = r6;
[--sp] = r7;
[--sp] = p0;
[--sp] = p1;
[--sp] = p2;
[--sp] = p3;
[--sp] = p4;
[--sp] = p5;
nop;
nop;
nop;
nop;
r0.l = 0xdead;
r0.h = 0xdead;
r1.l = 0xdead;
r1.h = 0xdead;
r2.l = 0xdead;
r2.h = 0xdead;
r3.l = 0xdead;
r3.h = 0xdead;
r4.l = 0xdead;
r4.h = 0xdead;
r5.l = 0xdead;
r5.h = 0xdead;
r6.l = 0xdead;
r6.h = 0xdead;
r7.l = 0xdead;
r7.h = 0xdead;
p1.l = 0xdead;
p1.h = 0xdead;
p2.l = 0xdead;
p2.h = 0xdead;
p3.l = 0xdead;
p3.h = 0xdead;
p4.l = 0xdead;
p4.h = 0xdead;
p5.l = 0xdead;
p5.h = 0xdead;
nop;
nop;
nop;
r0 = [sp++];
r1 = [sp++];
r2 = [sp++];
r3 = [sp++];
r4 = [sp++];
r5 = [sp++];
r6 = [sp++];
r7 = [sp++];
p0 = [sp++];
p1 = [sp++];
a0.x = [sp++];
a1.w = r0; //preserve r0
r0 = a0.x;
DBGA(r0.l,0x0063);
a0.w = [sp++];
r0 = a0.w;
DBGA(r0.l,0x7777);
DBGA(r0.h,0x0077);
a0 = a1; //perserver r0, still
a1.x = [sp++];
r0 = a1.x;
DBGA(r0.l,0x0078);
a1.w = [sp++];
r0 = a1.w;
DBGA(r0.l,0x3e3e);
DBGA(r0.h,0x003e);
r0 = a0.w; //restore r0
nop;
nop;
nop;
nop;
nop;
nop;
nop;
_tp2:
nop;
nop;
nop;
[--sp] = r0;
[--sp] = r1;
[--sp] = r2;
[--sp] = r3;
[--sp] = a0.x;
[--sp] = a0.w;
[--sp] = a1.x;
[--sp] = a1.w;
[--sp] = p0;
[--sp] = p1;
[--sp] = p2;
[--sp] = p3;
[--sp] = p4;
[--sp] = p5;
nop;
nop;
nop;
nop;
r0.l = 0xdead;
r0.h = 0xdead;
r1.l = 0xdead;
r1.h = 0xdead;
r2.l = 0xdead;
r2.h = 0xdead;
r3.l = 0xdead;
r3.h = 0xdead;
r4.l = 0xdead;
r4.h = 0xdead;
r5.l = 0xdead;
r5.h = 0xdead;
r6.l = 0xdead;
r6.h = 0xdead;
r7.l = 0xdead;
r7.h = 0xdead;
p1.l = 0xdead;
p1.h = 0xdead;
p2.l = 0xdead;
p2.h = 0xdead;
p3.l = 0xdead;
p3.h = 0xdead;
p4.l = 0xdead;
p4.h = 0xdead;
p5.l = 0xdead;
p5.h = 0xdead;
nop;
nop;
nop;
r0 = [sp++];
r1 = [sp++];
r2 = [sp++];
r3 = [sp++];
r4 = [sp++];
r5 = [sp++];
r6 = [sp++];
r7 = [sp++];
p0 = [sp++];
p1 = [sp++];
p2 = [sp++];
p3 = [sp++];
p4 = [sp++];
p5 = [sp++];
nop;
nop;
nop;
nop;
nop;
nop;
nop;
_tp3:
nop;
nop;
nop;
nop;
nop;
_halt:
pass;