Ooops, that was one level of indirection to much.

This commit is contained in:
oliverschmidt 2007-04-03 18:37:15 +00:00
parent c8190f55e6
commit d41c0671d9

View file

@ -30,7 +30,7 @@
* *
* Author: Oliver Schmidt <ol.sc@web.de> * Author: Oliver Schmidt <ol.sc@web.de>
* *
* $Id: mtarch.c,v 1.1 2007/04/03 00:40:51 oliverschmidt Exp $ * $Id: mtarch.c,v 1.2 2007/04/03 18:37:15 oliverschmidt Exp $
*/ */
#ifdef __CYGWIN__ #ifdef __CYGWIN__
@ -92,13 +92,13 @@ mtarch_start(struct mtarch_thread *thread,
thread->mt_thread = malloc(sizeof(struct mtarch_t)); thread->mt_thread = malloc(sizeof(struct mtarch_t));
getcontext(&((struct mtarch_t *)&thread->mt_thread)->context); getcontext(&((struct mtarch_t *)thread->mt_thread)->context);
((struct mtarch_t *)&thread->mt_thread)->context.uc_link = NULL; ((struct mtarch_t *)thread->mt_thread)->context.uc_link = NULL;
((struct mtarch_t *)&thread->mt_thread)->context.uc_stack.ss_sp = ((struct mtarch_t *)thread->mt_thread)->context.uc_stack.ss_sp =
((struct mtarch_t *)&thread->mt_thread)->stack; ((struct mtarch_t *)thread->mt_thread)->stack;
((struct mtarch_t *)&thread->mt_thread)->context.uc_stack.ss_size = ((struct mtarch_t *)thread->mt_thread)->context.uc_stack.ss_size =
sizeof(((struct mtarch_t *)&thread->mt_thread)->stack); sizeof(((struct mtarch_t *)thread->mt_thread)->stack);
/* Some notes: /* Some notes:
- If a CPU needs stronger alignment for the stack than malloc() - If a CPU needs stronger alignment for the stack than malloc()
@ -115,7 +115,7 @@ mtarch_start(struct mtarch_thread *thread,
the only way to stay independent from the CPU architecture. But the only way to stay independent from the CPU architecture. But
Solaris prior to release 10 interprets ss_sp as highest stack Solaris prior to release 10 interprets ss_sp as highest stack
address thus requiring special handling. */ address thus requiring special handling. */
makecontext(&((struct mtarch_t *)&thread->mt_thread)->context, makecontext(&((struct mtarch_t *)thread->mt_thread)->context,
(void (*)(void))function, 1, data); (void (*)(void))function, 1, data);
#endif /* __CYGWIN__ */ #endif /* __CYGWIN__ */
@ -144,7 +144,7 @@ mtarch_exec(struct mtarch_thread *thread)
#else /* __CYGWIN__ */ #else /* __CYGWIN__ */
running_context = &((struct mtarch_t *)&thread->mt_thread)->context; running_context = &((struct mtarch_t *)thread->mt_thread)->context;
swapcontext(&main_context, running_context); swapcontext(&main_context, running_context);
running_context = NULL; running_context = NULL;