| |
| .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 |
| |