X-Git-Url: https://git.saurik.com/apple/libc.git/blobdiff_plain/3b2a1fe8d3d02703ddca1b0ead469074d4e47820..5b2abdfbf4211b6592cdd02b9507555a0ecbb04b:/pthreads.subproj/thread_setup.c diff --git a/pthreads.subproj/thread_setup.c b/pthreads.subproj/thread_setup.c deleted file mode 100644 index 13502dc..0000000 --- a/pthreads.subproj/thread_setup.c +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 1996 1995 by Open Software Foundation, Inc. 1997 1996 1995 1994 1993 1992 1991 - * All Rights Reserved - * - * Permission to use, copy, modify, and distribute this software and - * its documentation for any purpose and without fee is hereby granted, - * provided that the above copyright notice appears in all copies and - * that both the copyright notice and this permission notice appear in - * supporting documentation. - * - * OSF DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL OSF BE LIABLE FOR ANY SPECIAL, INDIRECT, OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - * LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT, - * NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION - * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - */ -/* - * MkLinux - */ - -/* - * Machine specific support for thread initialization - */ - -#if defined(__ppc__) -#include -#endif - -#include "pthread_internals.h" - -/* - * Set up the initial state of a MACH thread - */ -void -_pthread_setup(pthread_t thread, - void (*routine)(pthread_t), - vm_address_t vsp) -{ - kern_return_t r; - unsigned int count; -#if defined(__ppc__) - struct ppc_thread_state state; - struct ppc_thread_state *ts = &state; - - /* - * Set up PowerPC registers. - */ - count = PPC_THREAD_STATE_COUNT; - PTHREAD_MACH_CALL(thread_get_state(thread->kernel_thread, - PPC_THREAD_STATE, - (thread_state_t) &state, - &count), - r); - - ts->srr0 = (int) routine; - ts->r1 = vsp - C_ARGSAVE_LEN - C_RED_ZONE; - ts->r3 = (int)thread; - PTHREAD_MACH_CALL(thread_set_state(thread->kernel_thread, - PPC_THREAD_STATE, - (thread_state_t) &state, - PPC_THREAD_STATE_COUNT), - r); -#elif defined(__i386__) - i386_thread_state_t state; - i386_thread_state_t *ts = &state; - int *sp = (int *) vsp; - - /* - * Set up i386 registers & function call. - */ - count = i386_THREAD_STATE_COUNT; - PTHREAD_MACH_CALL(thread_get_state(thread->kernel_thread, - i386_THREAD_STATE, - (thread_state_t) &state, - &count), - r); - ts->eip = (int) routine; - *--sp = (int) thread; /* argument to function */ - *--sp = 0; /* fake return address */ - ts->esp = (int) sp; /* set stack pointer */ - PTHREAD_MACH_CALL(thread_set_state(thread->kernel_thread, - i386_THREAD_STATE, - (thread_state_t) &state, - i386_THREAD_STATE_COUNT), - r); - -#else -#error _pthread_setup not defined for this architecture -#endif -}