| Index: fusl/src/setjmp/x86_64/setjmp.s
|
| diff --git a/fusl/src/setjmp/x86_64/setjmp.s b/fusl/src/setjmp/x86_64/setjmp.s
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..98f58b8d6551e391f426fc53c81678a03ac89074
|
| --- /dev/null
|
| +++ b/fusl/src/setjmp/x86_64/setjmp.s
|
| @@ -0,0 +1,22 @@
|
| +/* Copyright 2011-2012 Nicholas J. Kain, licensed under standard MIT license */
|
| +.global __setjmp
|
| +.global _setjmp
|
| +.global setjmp
|
| +.type __setjmp,@function
|
| +.type _setjmp,@function
|
| +.type setjmp,@function
|
| +__setjmp:
|
| +_setjmp:
|
| +setjmp:
|
| + mov %rbx,(%rdi) /* rdi is jmp_buf, move registers onto it */
|
| + mov %rbp,8(%rdi)
|
| + mov %r12,16(%rdi)
|
| + mov %r13,24(%rdi)
|
| + mov %r14,32(%rdi)
|
| + mov %r15,40(%rdi)
|
| + lea 8(%rsp),%rdx /* this is our rsp WITHOUT current ret addr */
|
| + mov %rdx,48(%rdi)
|
| + mov (%rsp),%rdx /* save return addr ptr for new rip */
|
| + mov %rdx,56(%rdi)
|
| + xor %rax,%rax /* always return 0 */
|
| + ret
|
|
|