12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- #include <sysdep.h>
- #include "ucontext_i.h"
- .syntax unified
- .text
- ENTRY(__setcontext)
- mov r4, r0
- #if defined __UCLIBC_HAS_FLOATS__ && ! defined __UCLIBC_HAS_SOFT_FLOAT__
- # ifdef __VFP_FP__
-
- ldc p11, cr8, [r0], #64
-
- ldr r1, [r0], #4
-
- mcr p10, 7, r1, cr1, cr0, 0
- # endif
- #endif
- #ifdef __IWMMXT__
-
-
- ldcl p1, cr10, [r0], #8
- ldcl p1, cr11, [r0], #8
- ldcl p1, cr12, [r0], #8
- ldcl p1, cr13, [r0], #8
- ldcl p1, cr14, [r0], #8
- ldcl p1, cr15, [r0], #8
- #endif
-
- mov r0, #SIG_SETMASK
- add r1, r4, #UCONTEXT_SIGMASK
- mov r2, #0
- bl PLTJMP(sigprocmask)
-
- add r14, r4, #MCONTEXT_ARM_R0
- ldmia r14, {r0-r11}
- ldr r13, [r14, #(MCONTEXT_ARM_SP - MCONTEXT_ARM_R0)]
- add r14, r14, #(MCONTEXT_ARM_LR - MCONTEXT_ARM_R0)
- ldmia r14, {r14, pc}
- END(setcontext)
- weak_alias(__setcontext, setcontext)
-
- ENTRY(__startcontext)
- movs r0, r4
- bne PLTJMP(__setcontext)
- @ New context was 0 - exit
- b PLTJMP(_exit)
- END(__startcontext)
|