X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fx86-64-assem.S;h=42d21da5e7d5cd33aa386deb92058f95a04b5c58;hb=6a0601ab48635465ad3400c290e5cfbca28e5367;hp=2e8e1c7667343a2a8e11240543b712b25aa8cfe4;hpb=37ded584cea0417c261a043301d9ea3a83916f0a;p=sbcl.git diff --git a/src/runtime/x86-64-assem.S b/src/runtime/x86-64-assem.S index 2e8e1c7..42d21da 100644 --- a/src/runtime/x86-64-assem.S +++ b/src/runtime/x86-64-assem.S @@ -182,10 +182,19 @@ Lstack: 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 @@ -267,7 +276,7 @@ GNAME(fpu_restore): * the undefined-function trampoline */ .text - .align align_8byte,0x90 + .align align_16byte,0x90 .globl GNAME(undefined_tramp) TYPE(GNAME(undefined_tramp)) GNAME(undefined_tramp): @@ -281,7 +290,7 @@ GNAME(undefined_tramp): .text - .align align_8byte,0x90 + .align align_16byte,0x90 .globl GNAME(alloc_tramp) TYPE(GNAME(alloc_tramp)) GNAME(alloc_tramp): @@ -317,7 +326,7 @@ 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): @@ -332,7 +341,7 @@ 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 @@ -350,7 +359,7 @@ GNAME(closure_tramp): */ .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 @@ -381,7 +390,7 @@ GNAME(fun_end_breakpoint_end): .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 @@ -390,7 +399,7 @@ GNAME(do_pending_interrupt): .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 @@ -416,7 +425,7 @@ GNAME(post_signal_tramp): SIZE(GNAME(post_signal_tramp)) .text - .align align_8byte,0x90 + .align align_16byte,0x90 .globl GNAME(fast_bzero) TYPE(GNAME(fast_bzero))