55 lines
925 B
ArmAsm
55 lines
925 B
ArmAsm
|
|
.globl _tas
|
|
_tas:
|
|
mov r3, #0xCA000000
|
|
add r3, r3, #0xFE0000
|
|
add r3, r3, #0xBA00
|
|
add r3, r3, #0xBE
|
|
swp r3, r3, [r0]
|
|
mov r0, r3
|
|
mov pc, lr
|
|
|
|
.globl getcontext
|
|
getcontext:
|
|
add r0, r0, #148 /* walk to mcontext */
|
|
str r1, [r0,#4]
|
|
str r2, [r0,#8]
|
|
str r3, [r0,#12]
|
|
str r4, [r0,#16]
|
|
str r5, [r0,#20]
|
|
str r6, [r0,#24]
|
|
str r7, [r0,#28]
|
|
str r8, [r0,#32]
|
|
str r9, [r0,#36]
|
|
str r10, [r0,#40]
|
|
str r11, [r0,#44]
|
|
str r12, [r0,#48]
|
|
str r13, [r0,#52]
|
|
str r14, [r0,#56]
|
|
/* store 1 as r0-to-restore */
|
|
mov r1, #1
|
|
str r1, [r0]
|
|
/* return 0 */
|
|
mov r0, #0
|
|
mov pc, lr
|
|
|
|
.globl setcontext
|
|
setcontext:
|
|
add r0, r0, #148 /* walk to mcontext */
|
|
ldr r1, [r0,#4]
|
|
ldr r2, [r0,#8]
|
|
ldr r3, [r0,#12]
|
|
ldr r4, [r0,#16]
|
|
ldr r5, [r0,#20]
|
|
ldr r6, [r0,#24]
|
|
ldr r7, [r0,#28]
|
|
ldr r8, [r0,#32]
|
|
ldr r9, [r0,#36]
|
|
ldr r10, [r0,#40]
|
|
ldr r11, [r0,#44]
|
|
ldr r12, [r0,#48]
|
|
ldr r13, [r0,#52]
|
|
ldr r14, [r0,#56]
|
|
ldr r0, [r0]
|
|
mov pc, lr
|
|
|