push %rbp # Save old frame pointer.
mov %rsp,%rbp # Establish new frame.
mov %rsp,ALIEN_STACK + SYMBOL_VALUE_OFFSET
+#if defined(LISP_FEATURE_DARWIN)
movq GSYM(GNAME(all_threads)),%rax
+#else
+ movq GNAME(all_threads),%rax
+#endif
mov THREAD_CONTROL_STACK_START_OFFSET(%rax) ,%rsp
/* don't think too hard about what happens if we get interrupted
* here */
push %rsi #
push %rdx #
#ifdef LISP_FEATURE_SB_THREAD
+#ifdef LISP_FEATURE_GCC_TLS
+ movq %fs:0, %rax
+ movq GNAME(current_thread)@TPOFF(%rax), %r12
+#else
+#ifdef LISP_FEATURE_DARWIN
+ mov GSYM(GNAME(specials)),%rdi
+#else
mov specials,%rdi
- call pthread_getspecific
+#endif
+ call GNAME(pthread_getspecific)
mov %rax,%r12
#endif
+#endif
pop %rcx # num args
pop %rbx # arg vector
pop %rax # function ptr/lexenv
* the undefined-function trampoline
*/
.text
- .align align_8byte,0x90
+ .align align_16byte,0x90
.globl GNAME(undefined_tramp)
TYPE(GNAME(undefined_tramp))
GNAME(undefined_tramp):
.text
- .align align_8byte,0x90
+ .align align_16byte,0x90
.globl GNAME(alloc_tramp)
TYPE(GNAME(alloc_tramp))
GNAME(alloc_tramp):
* the closure trampoline
*/
.text
- .align align_8byte,0x90
+ .align align_16byte,0x90
.globl GNAME(closure_tramp)
TYPE(GNAME(closure_tramp))
GNAME(closure_tramp):
SIZE(GNAME(closure_tramp))
.text
- .align align_8byte,0x90
+ .align align_16byte,0x90
.globl GNAME(funcallable_instance_tramp)
#if !defined(LISP_FEATURE_DARWIN)
.type GNAME(funcallable_instance_tramp),@function
*/
.text
.globl GNAME(fun_end_breakpoint_guts)
- .align align_8byte
+ .align align_16byte
GNAME(fun_end_breakpoint_guts):
/* Multiple Value return */
jc multiple_value_return
\f
.globl GNAME(do_pending_interrupt)
TYPE(GNAME(do_pending_interrupt))
- .align align_8byte,0x90
+ .align align_16byte,0x90
GNAME(do_pending_interrupt):
TRAP
.byte trap_PendingInterrupt
\f
.globl GNAME(post_signal_tramp)
TYPE(GNAME(post_signal_tramp))
- .align align_8byte,0x90
+ .align align_16byte,0x90
GNAME(post_signal_tramp):
/* this is notionally the second half of a function whose first half
* doesn't exist. This is where call_into_lisp returns when called
SIZE(GNAME(post_signal_tramp))
\f
.text
- .align align_8byte,0x90
+ .align align_16byte,0x90
.globl GNAME(fast_bzero)
TYPE(GNAME(fast_bzero))