commit - c3d31baca0a73a9e8033db8a0b47093233c636c1
commit + 329831171dd6ef81c113f101093c7b4947381003
blob - d50d3b6d9534dc67c1736fb2a4f5bbbd59fba21f (mode 644)
blob + /dev/null
--- src/libthread/Darwin-x86_64-asm.s
+++ /dev/null
-.text
-.align 8
-
-.globl _libthread_getmcontext
-_libthread_getmcontext:
- movq $1, 0*8(%rdi) // rax
- movq %rbx, 1*8(%rdi)
- movq %rcx, 2*8(%rdi)
- movq %rdx, 3*8(%rdi)
- movq %rsi, 4*8(%rdi)
- movq %rdi, 5*8(%rdi)
- movq %rbp, 6*8(%rdi)
- movq %rsp, 7*8(%rdi)
- movq %r8, 8*8(%rdi)
- movq %r9, 9*8(%rdi)
- movq %r10, 10*8(%rdi)
- movq %r11, 11*8(%rdi)
- movq %r12, 12*8(%rdi)
- movq %r13, 13*8(%rdi)
- movq %r14, 14*8(%rdi)
- movq %r15, 15*8(%rdi)
- movq $0, %rax
- ret
-
-.globl _libthread_setmcontext
-_libthread_setmcontext:
- movq 0*8(%rdi), %rax
- movq 1*8(%rdi), %rbx
- movq 2*8(%rdi), %rcx
- movq 3*8(%rdi), %rdx
- movq 4*8(%rdi), %rsi
- // %rdi later
- movq 6*8(%rdi), %rbp
- movq 7*8(%rdi), %rsp
- movq 8*8(%rdi), %r8
- movq 9*8(%rdi), %r9
- movq 10*8(%rdi), %r10
- movq 11*8(%rdi), %r11
- movq 12*8(%rdi), %r12
- movq 13*8(%rdi), %r13
- movq 14*8(%rdi), %r14
- movq 15*8(%rdi), %r15
- movq 5*8(%rdi), %rdi
- ret
blob - 20811cdfe98c9f91e9756ffda0b59c67c7cc18ff
blob + 833afbe02b779db376687b0190565bd49625129d
--- src/libthread/sysofiles.sh
+++ src/libthread/sysofiles.sh
# Various libc don't supply swapcontext, makecontext, so we do.
case "$SYSNAME-$OBJTYPE" in
-Darwin-x86_64 | Linux-arm | Linux-sparc64 | NetBSD-arm | OpenBSD-386 | OpenBSD-power | OpenBSD-x86_64)
+Linux-arm | Linux-sparc64 | NetBSD-arm | OpenBSD-386 | OpenBSD-power | OpenBSD-x86_64)
echo $OBJTYPE-ucontext.o
;;
esac
# A few libc don't supply setcontext, getcontext, so we do.
case "$SYSNAME-$OBJTYPE" in
-Darwin-x86_64 | Linux-arm | Linux-sparc64 | OpenBSD-386 | OpenBSD-power | OpenBSD-x86_64)
+Linux-arm | Linux-sparc64 | OpenBSD-386 | OpenBSD-power | OpenBSD-x86_64)
echo $SYSNAME-$OBJTYPE-asm.o
;;
esac
blob - c737384363b6a4cb708c34763c588286e5f47bf0
blob + 8d22a161c91e875f538e344c540bca3ff2f38e52
--- src/libthread/threadimpl.h
+++ src/libthread/threadimpl.h
#include <signal.h>
#if !defined(__OpenBSD__)
# if defined(__APPLE__)
-# define _XOPEN_SOURCE /* for Snow Leopard */
+# define _XOPEN_SOURCE /* for Snow Leopard */
# endif
# include <ucontext.h>
#endif
#include "libc.h"
#include "thread.h"
-#if defined(__APPLE__)
- /*
- * OS X before 10.5 (Leopard) does not provide
- * swapcontext nor makecontext, so we have to use our own.
- * In theory, Leopard does provide them, but when we use
- * them, they seg fault. Maybe we're using them wrong.
- * So just use our own versions, even on Leopard.
- */
-# define mcontext libthread_mcontext
-# define mcontext_t libthread_mcontext_t
-# define ucontext libthread_ucontext
-# define ucontext_t libthread_ucontext_t
-# define swapcontext libthread_swapcontext
-# define makecontext libthread_makecontext
-# if defined(__i386__)
-# include "386-ucontext.h"
-# elif defined(__x86_64__)
-# include "x86_64-ucontext.h"
-# elif defined(__ppc__) || defined(__power__)
-# include "power-ucontext.h"
-# else
-# error "unknown architecture"
-# endif
-#endif
-
#if defined(__OpenBSD__)
# define mcontext libthread_mcontext
# define mcontext_t libthread_mcontext_t
struct Context
{
ucontext_t uc;
-#ifdef __APPLE__
- /*
- * On Snow Leopard, etc., the context routines exist,
- * so we use them, but apparently they write past the
- * end of the ucontext_t. Sigh. We put some extra
- * scratch space here for them.
- */
- uchar buf[1024];
-#endif
};
struct Execjob