From: Nathan Neulinger Date: Tue, 10 Sep 2002 00:43:24 +0000 (+0000) Subject: parisc-linux-lwp-update-20020909 X-Git-Tag: openafs-devel-1_3_50~620 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=3226a5dba2a8d257ea6c32173740b1c0b307d829;p=packages%2Fo%2Fopenafs.git parisc-linux-lwp-update-20020909 gets all the test cases working --- diff --git a/src/lwp/lwp.c b/src/lwp/lwp.c index 92dde13f1..772dcbafc 100644 --- a/src/lwp/lwp.c +++ b/src/lwp/lwp.c @@ -69,7 +69,7 @@ extern char PRE_Block; /* from preempt.c */ #define MAXINT (~(1<<((sizeof(int)*8)-1))) #define MINSTACK 44 -#ifdef __hp9000s800 +#if defined(__hp9000s800) || defined(AFS_PARISC_LINUX24_ENV) #define MINFRAME 128 #define STACK_ALIGN 8 #else @@ -350,10 +350,13 @@ int LWP_CreateProcess(int (*ep)(), int stacksize, int priority, /* Gross hack: beware! */ PRE_Block = 1; lwp_cpptr = temp; +#if defined(AFS_PARISC_LINUX24_ENV) + savecontext(Create_Process_Part2, &temp2->context, stackptr+MINFRAME); +#else #ifdef __hp9000s800 savecontext(Create_Process_Part2, &temp2->context, stackptr+MINFRAME); #else -#if defined(AFS_SGI62_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_FBSD_ENV) || defined(AFS_PARISC_LINUX24_ENV) +#if defined(AFS_SGI62_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_FBSD_ENV) /* Need to have the sp on an 8-byte boundary for storing doubles. */ savecontext(Create_Process_Part2, &temp2->context, stackptr+stacksize-16); /* 16 = 2 * jmp_buf_type*/ @@ -372,6 +375,7 @@ int LWP_CreateProcess(int (*ep)(), int stacksize, int priority, #endif /* AFS_S390_LINUX20_ENV */ #endif /* AFS_SPARC64_LINUX20_ENV || AFS_SPARC_LINUX20_ENV */ #endif /* AFS_SGI62_ENV */ +#endif #endif /* End of gross hack */ @@ -432,15 +436,7 @@ int LWP_CreateProcess2(int (*ep)(), int stacksize, int priority, /* Gross hack: beware! */ PRE_Block = 1; lwp_cpptr = temp; -#ifdef __hp9000s800 - savecontext(Create_Process_Part2, &temp2->context, stackptr+MINFRAME); -#else -#if defined(AFS_S390_LINUX20_ENV) - savecontext(Create_Process_Part2, &temp2->context, stackptr+stacksize-MINFRAME); -#else savecontext(Create_Process_Part2, &temp2->context, stackptr+stacksize-sizeof(void *)); -#endif -#endif /* End of gross hack */ Set_LWP_RC(); @@ -485,11 +481,11 @@ int LWP_DestroyProcess(PROCESS pid) /* destroy a lightweight process */ pid -> status = DESTROYED; move(pid, &runnable[pid->priority], &blocked); temp = lwp_cpptr; -#ifdef __hp9000s800 +#if defined(__hp9000s800) || defined(AFS_PARISC_LINUX24_ENV) savecontext(Dispatcher, &(temp -> context), &(LWPANCHOR.dsptchstack[MINFRAME])); #else -#if defined(AFS_SGI62_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_FBSD_ENV) || defined(AFS_PARISC_LINUX24_ENV) +#if defined(AFS_SGI62_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_FBSD_ENV) savecontext(Dispatcher, &(temp -> context), &(LWPANCHOR.dsptchstack[(sizeof LWPANCHOR.dsptchstack)-8])); #else @@ -811,7 +807,7 @@ static int Dispatcher(void) /* Lightweight process dispatcher */ the guard word at the front of the stack being damaged and for the stack pointer being below the front of the stack. WARNING! This code assumes that stacks grow downward. */ -#ifdef __hp9000s800 +#if defined(__hp9000s800) || defined(AFS_PARISC_LINUX24_ENV) /* Fix this (stackcheck at other end of stack?) */ if (lwp_cpptr != NULL && lwp_cpptr->stack != NULL && (lwp_cpptr->stackcheck != @@ -928,7 +924,7 @@ static void Initialize_PCB(PROCESS temp, int priority, char *stack, temp -> index = lwp_nextindex++; temp -> stack = stack; temp -> stacksize = stacksize; -#ifdef __hp9000s800 +#if defined(__hp9000s800) || defined(AFS_PARISC_LINUX24_ENV) if (temp -> stack != NULL) temp -> stackcheck = *(int *) ((temp -> stack) + stacksize - 4); #else @@ -982,7 +978,7 @@ static afs_int32 Initialize_Stack(char *stackptr, int stacksize) for (i=0; i