patch-2.4.19 linux-2.4.19/arch/sparc64/kernel/process.c
Next file: linux-2.4.19/arch/sparc64/kernel/ptrace.c
Previous file: linux-2.4.19/arch/sparc64/kernel/power.c
Back to the patch index
Back to the overall index
- Lines: 51
- Date:
Fri Aug 2 17:39:43 2002
- Orig file:
linux-2.4.18/arch/sparc64/kernel/process.c
- Orig date:
Mon Feb 25 11:37:56 2002
diff -urN linux-2.4.18/arch/sparc64/kernel/process.c linux-2.4.19/arch/sparc64/kernel/process.c
@@ -421,11 +421,15 @@
{
struct thread_struct *t = ¤t->thread;
+ if (t->flags & SPARC_FLAG_ABI_PENDING)
+ t->flags ^= (SPARC_FLAG_ABI_PENDING |
+ SPARC_FLAG_32BIT);
if (current->mm) {
+ unsigned long pgd_cache = 0UL;
+
if (t->flags & SPARC_FLAG_32BIT) {
struct mm_struct *mm = current->mm;
pgd_t *pgd0 = &mm->pgd[0];
- unsigned long pgd_cache;
if (pgd_none(*pgd0)) {
pmd_t *page = pmd_alloc_one_fast(NULL, 0);
@@ -434,13 +438,13 @@
pgd_set(pgd0, page);
}
pgd_cache = pgd_val(*pgd0) << 11UL;
- __asm__ __volatile__("stxa %0, [%1] %2\n\t"
- "membar #Sync"
- : /* no outputs */
- : "r" (pgd_cache),
- "r" (TSB_REG),
- "i" (ASI_DMMU));
}
+ __asm__ __volatile__("stxa %0, [%1] %2\n\t"
+ "membar #Sync"
+ : /* no outputs */
+ : "r" (pgd_cache),
+ "r" (TSB_REG),
+ "i" (ASI_DMMU));
}
t->w_saved = 0;
@@ -577,13 +581,6 @@
* under SunOS are nothing short of bletcherous:
* Parent --> %o0 == childs pid, %o1 == 0
* Child --> %o0 == parents pid, %o1 == 1
- *
- * NOTE: We have a separate fork kpsr/kwim because
- * the parent could change these values between
- * sys_fork invocation and when we reach here
- * if the parent should sleep while trying to
- * allocate the task_struct and kernel stack in
- * do_fork().
*/
int copy_thread(int nr, unsigned long clone_flags, unsigned long sp,
unsigned long unused,
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)