From c2b117e7dbf14ed9ff9dd4bc43f26abd162491be Mon Sep 17 00:00:00 2001 From: Jake Burkholder Date: Wed, 2 Apr 2003 08:03:42 +0000 Subject: [PATCH] Implement cpu_thread_setup. Fix cpu_set_upcall. --- sys/sparc64/sparc64/vm_machdep.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/sys/sparc64/sparc64/vm_machdep.c b/sys/sparc64/sparc64/vm_machdep.c index 70d10493615..2a3f4889861 100644 --- a/sys/sparc64/sparc64/vm_machdep.c +++ b/sys/sparc64/sparc64/vm_machdep.c @@ -138,17 +138,23 @@ cpu_thread_clean(struct thread *td) void cpu_thread_setup(struct thread *td) { + struct pcb *pcb; + + pcb = (struct pcb *)((td->td_kstack + KSTACK_PAGES * PAGE_SIZE - + sizeof(struct pcb)) & ~0x3fUL); + td->td_frame = (struct trapframe *)pcb - 1; + td->td_pcb = pcb; } void cpu_set_upcall(struct thread *td, void *v) { - struct pcb *pcb = v; struct trapframe *tf; struct frame *fr; + struct pcb *pcb; - tf = (struct trapframe *)pcb - 1; - td->td_frame = tf; + pcb = td->td_pcb; + tf = td->td_frame; fr = (struct frame *)tf - 1; fr->fr_local[0] = (u_long)fork_return; fr->fr_local[1] = (u_long)td;