Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(364)

Unified Diff: fusl/src/setjmp/x86_64/longjmp.s

Issue 1573973002: Add a "fork" of musl as //fusl. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « fusl/src/setjmp/x32/setjmp.s ('k') | fusl/src/setjmp/x86_64/setjmp.s » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: fusl/src/setjmp/x86_64/longjmp.s
diff --git a/fusl/src/setjmp/x86_64/longjmp.s b/fusl/src/setjmp/x86_64/longjmp.s
new file mode 100644
index 0000000000000000000000000000000000000000..e175a4b9606bba41eccc8972c22244e533718f0a
--- /dev/null
+++ b/fusl/src/setjmp/x86_64/longjmp.s
@@ -0,0 +1,22 @@
+/* Copyright 2011-2012 Nicholas J. Kain, licensed under standard MIT license */
+.global _longjmp
+.global longjmp
+.type _longjmp,@function
+.type longjmp,@function
+_longjmp:
+longjmp:
+ mov %rsi,%rax /* val will be longjmp return */
+ test %rax,%rax
+ jnz 1f
+ inc %rax /* if val==0, val=1 per longjmp semantics */
+1:
+ mov (%rdi),%rbx /* rdi is the jmp_buf, restore regs from it */
+ mov 8(%rdi),%rbp
+ mov 16(%rdi),%r12
+ mov 24(%rdi),%r13
+ mov 32(%rdi),%r14
+ mov 40(%rdi),%r15
+ mov 48(%rdi),%rdx /* this ends up being the stack pointer */
+ mov %rdx,%rsp
+ mov 56(%rdi),%rdx /* this is the instruction pointer */
+ jmp *%rdx /* goto saved address without altering rsp */
« no previous file with comments | « fusl/src/setjmp/x32/setjmp.s ('k') | fusl/src/setjmp/x86_64/setjmp.s » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698