Skip to content
Snippets Groups Projects
Commit 52b67648 authored by Damien George's avatar Damien George
Browse files

py/nlrx64: Fixes to support Mac OS.

Two independent fixes:
- need to prefix symbols referenced from asm with underscore;
- need to undo the C-function prelude.
parent a64a0276
Branches
No related tags found
No related merge requests found
...@@ -61,6 +61,9 @@ unsigned int nlr_push(nlr_buf_t *nlr) { ...@@ -61,6 +61,9 @@ unsigned int nlr_push(nlr_buf_t *nlr) {
#else #else
__asm volatile ( __asm volatile (
#if defined(__APPLE__) || defined(__MACH__)
"pop %rbp \n" // undo function's prelude
#endif
"movq (%rsp), %rax \n" // load return %rip "movq (%rsp), %rax \n" // load return %rip
"movq %rax, 16(%rdi) \n" // store %rip into nlr_buf "movq %rax, 16(%rdi) \n" // store %rip into nlr_buf
"movq %rbp, 24(%rdi) \n" // store %rbp into nlr_buf "movq %rbp, 24(%rdi) \n" // store %rbp into nlr_buf
...@@ -70,7 +73,11 @@ unsigned int nlr_push(nlr_buf_t *nlr) { ...@@ -70,7 +73,11 @@ unsigned int nlr_push(nlr_buf_t *nlr) {
"movq %r13, 56(%rdi) \n" // store %r13 into nlr_buf "movq %r13, 56(%rdi) \n" // store %r13 into nlr_buf
"movq %r14, 64(%rdi) \n" // store %r14 into nlr_buf "movq %r14, 64(%rdi) \n" // store %r14 into nlr_buf
"movq %r15, 72(%rdi) \n" // store %r15 into nlr_buf "movq %r15, 72(%rdi) \n" // store %r15 into nlr_buf
#if defined(__APPLE__) || defined(__MACH__)
"jmp _nlr_push_tail \n" // do the rest in C
#else
"jmp nlr_push_tail \n" // do the rest in C "jmp nlr_push_tail \n" // do the rest in C
#endif
); );
#endif #endif
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment