#define CONTROL_STACK_ALIGNMENT_BYTES 8192 /* darwin wants page-aligned stacks */
#define THREAD_ALIGNMENT_BYTES CONTROL_STACK_ALIGNMENT_BYTES
#else
-#define THREAD_ALIGNMENT_BYTES BACKEND_PAGE_SIZE
+#define THREAD_ALIGNMENT_BYTES BACKEND_PAGE_BYTES
#define CONTROL_STACK_ALIGNMENT_BYTES 16
#endif
#define for_each_thread(th) for(th=all_threads;th;th=0)
#endif
+static inline lispobj *
+SymbolValueAddress(u64 tagged_symbol_pointer, void *thread)
+{
+ struct symbol *sym= (struct symbol *)
+ (pointer_sized_uint_t)(tagged_symbol_pointer-OTHER_POINTER_LOWTAG);
+#ifdef LISP_FEATURE_SB_THREAD
+ if(thread && sym->tls_index) {
+ lispobj *r = &(((union per_thread_data *)thread)
+ ->dynamic_values[fixnum_value(sym->tls_index)]);
+ if((*r)!=NO_TLS_VALUE_MARKER_WIDETAG) return r;
+ }
+#endif
+ return &sym->value;
+}
+
static inline lispobj
SymbolValue(u64 tagged_symbol_pointer, void *thread)
{
#define EXCEPTION_PORT_TO_THREAD_STRUCT(th) ((struct thread *) th)
#endif
-#if defined(LISP_FEATURE_SB_THREAD)
-#define thread_self pthread_self
-#define thread_kill pthread_kill
-#define thread_sigmask pthread_sigmask
-#define thread_mutex_lock(l) pthread_mutex_lock(l)
-#define thread_mutex_unlock(l) pthread_mutex_unlock(l)
-#else
-#define thread_self getpid
-#define thread_kill kill
-#define thread_sigmask sigprocmask
-#define thread_mutex_lock(l) 0
-#define thread_mutex_unlock(l) 0
-#endif
-
extern void create_initial_thread(lispobj);
extern int kill_thread_safely(os_thread_t os_thread, int signo);