diff options
author | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
---|---|---|
committer | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
commit | e5888a1ffdae813d7575f5fb02275c6bb07e5199 (patch) | |
tree | d8d51eac403f07814b9e936eed0c9a79195e2450 /sys/src/ape/lib/ap/386/setjmp.s |
Import sources from 2011-03-30 iso image
Diffstat (limited to 'sys/src/ape/lib/ap/386/setjmp.s')
-rwxr-xr-x | sys/src/ape/lib/ap/386/setjmp.s | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/sys/src/ape/lib/ap/386/setjmp.s b/sys/src/ape/lib/ap/386/setjmp.s new file mode 100755 index 000000000..008a43f07 --- /dev/null +++ b/sys/src/ape/lib/ap/386/setjmp.s @@ -0,0 +1,29 @@ +TEXT longjmp(SB), $0 + MOVL r+4(FP), AX + CMPL AX, $0 + JNE ok /* ansi: "longjmp(0) => longjmp(1)" */ + MOVL $1, AX /* bless their pointed heads */ +ok: MOVL l+0(FP), BX + MOVL 0(BX), SP /* restore sp */ + MOVL 4(BX), BX /* put return pc on the stack */ + MOVL BX, 0(SP) + RET + +TEXT setjmp(SB), $0 + MOVL l+0(FP), AX + MOVL SP, 0(AX) /* store sp */ + MOVL 0(SP), BX /* store return pc */ + MOVL BX, 4(AX) + MOVL $0, AX /* return 0 */ + RET + +TEXT sigsetjmp(SB), $0 + MOVL buf+0(FP), AX + MOVL savemask+4(FP),BX + MOVL BX,0(AX) + MOVL $_psigblocked(SB),4(AX) + MOVL SP, 8(AX) /* store sp */ + MOVL 0(SP), BX /* store return pc */ + MOVL BX, 12(AX) + MOVL $0, AX /* return 0 */ + RET |