- ot(" mov r1,r4,lsl #8\n");\r
- ot(" sub r1,r1,r10,lsl #8 ;@ r1 = Old PC\n");\r
- ot(" mov r1,r1,asr #8 ;@ push sign extended\n");\r
- OpPush32();\r
+ ot(" tst r0,#0x20\n");\r
+ ot(";@ get our SP:\n");\r
+ ot(" ldr r0,[r7,#0x3c] ;@ Get A7\n");\r
+ ot(" ldreq r1,[r7,#0x48] ;@ ...or OSP as our stack pointer\n");\r
+ ot(" streq r0,[r7,#0x48]\n");\r
+ ot(" moveq r0,r1\n");\r
+\r
+ ot(" sub r1,r4,r10 ;@ r1 = Old PC\n");\r
+ ot(";@ Push r1 onto stack\n");\r
+ ot(" sub r0,r0,#4 ;@ Predecrement A7\n");\r
+ ot(" str r0,[r7,#0x3c] ;@ Save A7\n");\r
+ MemHandler(1,2);\r