293 lines
3.6 KiB
ArmAsm
293 lines
3.6 KiB
ArmAsm
|
# 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;
|