mirror of
https://github.com/reactos/reactos.git
synced 2025-01-01 03:54:02 +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