home *** CD-ROM | disk | FTP | other *** search
- ; /* _jmp.s (c) Copyright 1990 H.Rogers */
-
- GET @.src.sys.s.asm_dec
-
- AREA |C$$code|,CODE,READONLY
-
- IMPORT |__fpflag|
- |__fpflag_ptr|
- DCD |__fpflag|
-
- IMPORT |__alloca_list|
- |__alloca_list_ptr|
- DCD |__alloca_list|
- IMPORT free
-
- EXPORT setjmp
-
- NAME setjmp
- setjmp
- LDR a4,[pc,#|__fpflag_ptr|-.-8]
- LDR a4,[a4,#0]
- CMP a4,#0
- ADDEQ a1,a1,#48
- BEQ |__setjmp_l1|
- STFE f4,[a1],#12
- STFE f5,[a1],#12
- STFE f6,[a1],#12
- STFE f7,[a1],#12
- |__setjmp_l1|
- LDR a4,[pc,#|__alloca_list_ptr|-.-8]
- LDR a4,[a4,#0]
- STR a4,[a1],#4
- STMIA a1,{a1,v1,v2,v3,v4,v5,v6,fp,sp,lr}
- MOV a1,#0
- MOVS pc,lr
-
- EXPORT longjmp
-
- NAME longjmp
- longjmp
- LDR a4,[pc,#|__fpflag_ptr|-.-8]
- LDR a4,[a4,#0]
- CMP a4,#0
- ADDEQ a1,a1,#48
- BEQ |__longjmp_l1|
- LDFE f4,[a1],#12
- LDFE f5,[a1],#12
- LDFE f6,[a1],#12
- LDFE f7,[a1],#12
- |__longjmp_l1|
- LDR a4,[a1],#4
- LDR ip,[pc,#|__alloca_list_ptr|-.-8]
- LDR a3,[ip,#0]
- CMP a3,a4
- BEQ |__longjmp_l3|
- STMFD sp!,{a1,a2}
- |__longjmp_l2|
- MOV a1,a3
- LDR a3,[a3,#0]
- STR a3,[ip,#0]
- STMFD sp!,{a3,a4,ip}
- BL free
- LDMFD sp!,{a3,a4,ip}
- CMP a3,a4
- BNE |__longjmp_l2|
- LDMFD sp!,{a1,a2}
- |__longjmp_l3|
- STR a2,[a1,#0]
- LDMIA a1,{a1,v1,v2,v3,v4,v5,v6,fp,sp,pc}^
-
- END
-