93 lines
1.3 KiB
ArmAsm
93 lines
1.3 KiB
ArmAsm
.file "setjmp.S"
|
|
|
|
.section .text
|
|
.align 1
|
|
.global _setjmp
|
|
#ifdef __AM33__
|
|
#ifdef __AM33_2__
|
|
.am33_2
|
|
#else
|
|
.am33
|
|
#endif
|
|
#endif
|
|
_setjmp:
|
|
mov d0,a0
|
|
mov d2,(0,a0)
|
|
mov d3,(4,a0)
|
|
mov mdr,d1
|
|
mov d1,(8,a0)
|
|
mov a2,(12,a0)
|
|
mov a3,(16,a0)
|
|
mov sp,a1
|
|
mov a1,(20,a0)
|
|
#ifdef __AM33__
|
|
add 24,a0
|
|
mov r4,(a0+)
|
|
mov r5,(a0+)
|
|
mov r6,(a0+)
|
|
mov r7,(a0+)
|
|
#ifdef __AM33_2__
|
|
fmov fs4,(a0+)
|
|
fmov fs5,(a0+)
|
|
fmov fs6,(a0+)
|
|
fmov fs7,(a0+)
|
|
fmov fs8,(a0+)
|
|
fmov fs9,(a0+)
|
|
fmov fs10,(a0+)
|
|
fmov fs11,(a0+)
|
|
fmov fs12,(a0+)
|
|
fmov fs13,(a0+)
|
|
fmov fs14,(a0+)
|
|
fmov fs15,(a0+)
|
|
fmov fs16,(a0+)
|
|
fmov fs17,(a0+)
|
|
fmov fs18,(a0+)
|
|
fmov fs19,(a0+)
|
|
#endif
|
|
#endif
|
|
sub d0,d0
|
|
rets
|
|
|
|
.global _longjmp
|
|
_longjmp:
|
|
mov d0,a0
|
|
mov (8,a0),d2
|
|
mov d2,mdr
|
|
mov (0,a0),d2
|
|
mov (4,a0),d3
|
|
mov (12,a0),a2
|
|
mov (16,a0),a3
|
|
mov (20,a0),a1
|
|
mov a1,sp
|
|
#ifdef __AM33__
|
|
add 24,a0
|
|
mov (a0+),r4
|
|
mov (a0+),r5
|
|
mov (a0+),r6
|
|
mov (a0+),r7
|
|
#ifdef __AM33_2__
|
|
fmov (a0+),fs4
|
|
fmov (a0+),fs5
|
|
fmov (a0+),fs6
|
|
fmov (a0+),fs7
|
|
fmov (a0+),fs8
|
|
fmov (a0+),fs9
|
|
fmov (a0+),fs10
|
|
fmov (a0+),fs11
|
|
fmov (a0+),fs12
|
|
fmov (a0+),fs13
|
|
fmov (a0+),fs14
|
|
fmov (a0+),fs15
|
|
fmov (a0+),fs16
|
|
fmov (a0+),fs17
|
|
fmov (a0+),fs18
|
|
fmov (a0+),fs19
|
|
#endif
|
|
#endif
|
|
cmp 0,d1
|
|
bne L1
|
|
mov 1,d1
|
|
L1:
|
|
mov d1,d0
|
|
retf [],0
|