mirror of
https://github.com/reactos/reactos.git
synced 2024-12-29 10:35:28 +00:00
[CRT]
Implement _setjmp / longjmp on ARM svn path=/trunk/; revision=67511
This commit is contained in:
parent
dbdef0de20
commit
9806b6c055
1 changed files with 62 additions and 0 deletions
62
reactos/lib/sdk/crt/setjmp/arm/setjmp.s
Normal file
62
reactos/lib/sdk/crt/setjmp/arm/setjmp.s
Normal file
|
@ -0,0 +1,62 @@
|
|||
/*
|
||||
* COPYRIGHT: BSD - See COPYING.ARM in the top level directory
|
||||
* PROJECT: ReactOS CRT library
|
||||
* PURPOSE: Implementation of _setjmp / longjmp
|
||||
* PROGRAMMER: Timo Kreuzer (timo.kreuzer@reactos.org)
|
||||
*/
|
||||
|
||||
/* INCLUDES ******************************************************************/
|
||||
|
||||
#include <kxarm.h>
|
||||
|
||||
/* CODE **********************************************************************/
|
||||
TEXTAREA
|
||||
|
||||
LEAF_ENTRY _setjmp
|
||||
|
||||
mov r1, sp
|
||||
|
||||
/* Store r1 (->Frame) and r4 - r11 */
|
||||
stmia r0!, {r1,r4-r11}
|
||||
|
||||
/* Store r1 (->Sp), lr (->Pc), fp (->Fpscr) */
|
||||
stmia r0!, {r1,lr,fp}
|
||||
|
||||
/* Store NEON registers */
|
||||
vst1.64 {d0}, [r0]!
|
||||
vst1.64 {d1}, [r0]!
|
||||
vst1.64 {d2}, [r0]!
|
||||
vst1.64 {d3}, [r0]!
|
||||
vst1.64 {d4}, [r0]!
|
||||
vst1.64 {d5}, [r0]!
|
||||
vst1.64 {d6}, [r0]!
|
||||
vst1.64 {d7}, [r0]!
|
||||
|
||||
/* Return 0 */
|
||||
mov r0, #0
|
||||
bx lr
|
||||
LEAF_END _setjmp
|
||||
|
||||
LEAF_ENTRY longjmp
|
||||
|
||||
ldmia r0!, {r1,r4-r11}
|
||||
ldmia r0!, {r1,lr,fp}
|
||||
mov sp, r1
|
||||
|
||||
/* Load NEON registers */
|
||||
vld1.64 {d0}, [r0]!
|
||||
vld1.64 {d1}, [r0]!
|
||||
vld1.64 {d2}, [r0]!
|
||||
vld1.64 {d3}, [r0]!
|
||||
vld1.64 {d4}, [r0]!
|
||||
vld1.64 {d5}, [r0]!
|
||||
vld1.64 {d6}, [r0]!
|
||||
vld1.64 {d7}, [r0]!
|
||||
|
||||
/* Return 1 */
|
||||
mov r0, #1
|
||||
bx lr
|
||||
LEAF_END longjmp
|
||||
|
||||
END
|
||||
/* EOF */
|
Loading…
Reference in a new issue