From a8f8001b386fe2eeb885121ae0f2b748ddf8e1f7 Mon Sep 17 00:00:00 2001 From: jhb Date: Fri, 14 Jan 2005 20:13:04 +0000 Subject: - Remove some OBE comments regarding cpu_exit(). cpu_exit() is no longer the last action of kern_exit(). Instead, it is a MD callout to cleanup per-process state during exit. - Add notes of concern to Alpha and ia64 about the possible need to drop fp state in cpu_thread_exit() rather than in cpu_exit() since it is per-thread state rather than per-process. --- sys/alpha/alpha/vm_machdep.c | 12 +++++------- sys/ia64/ia64/vm_machdep.c | 1 + sys/powerpc/aim/vm_machdep.c | 7 ------- sys/powerpc/powerpc/vm_machdep.c | 7 ------- 4 files changed, 6 insertions(+), 21 deletions(-) (limited to 'sys') diff --git a/sys/alpha/alpha/vm_machdep.c b/sys/alpha/alpha/vm_machdep.c index bc8bc52..17972b9 100644 --- a/sys/alpha/alpha/vm_machdep.c +++ b/sys/alpha/alpha/vm_machdep.c @@ -224,17 +224,15 @@ cpu_set_fork_handler(td, func, arg) td->td_pcb->pcb_context[2] = (u_long) arg; } -/* - * cpu_exit is called as the last action during exit. - * We release the address space of the process, block interrupts, - * and call switch_exit. switch_exit switches to proc0's PCB and stack, - * then jumps into the middle of cpu_switch, as if it were switching - * from proc0. - */ void cpu_exit(struct thread *td) { + /* + * XXX: Should this be in thread_exit instead? If so, + * alpha_fpstate_save() should be in cpu_set_upcall() + * as well. + */ alpha_fpstate_drop(td); } diff --git a/sys/ia64/ia64/vm_machdep.c b/sys/ia64/ia64/vm_machdep.c index 56dabfb..f8fdb94 100644 --- a/sys/ia64/ia64/vm_machdep.c +++ b/sys/ia64/ia64/vm_machdep.c @@ -297,6 +297,7 @@ void cpu_exit(struct thread *td) { + /* XXX: Should this be in cpu_thread_exit() instead? */ /* Throw away the high FP registers. */ ia64_highfp_drop(td); } diff --git a/sys/powerpc/aim/vm_machdep.c b/sys/powerpc/aim/vm_machdep.c index acd8645..654a4be 100644 --- a/sys/powerpc/aim/vm_machdep.c +++ b/sys/powerpc/aim/vm_machdep.c @@ -182,13 +182,6 @@ cpu_set_fork_handler(td, func, arg) cf->cf_arg0 = (register_t)arg; } -/* - * cpu_exit is called as the last action during exit. - * We release the address space of the process, block interrupts, - * and call switch_exit. switch_exit switches to proc0's PCB and stack, - * then jumps into the middle of cpu_switch, as if it were switching - * from proc0. - */ void cpu_exit(td) register struct thread *td; diff --git a/sys/powerpc/powerpc/vm_machdep.c b/sys/powerpc/powerpc/vm_machdep.c index acd8645..654a4be 100644 --- a/sys/powerpc/powerpc/vm_machdep.c +++ b/sys/powerpc/powerpc/vm_machdep.c @@ -182,13 +182,6 @@ cpu_set_fork_handler(td, func, arg) cf->cf_arg0 = (register_t)arg; } -/* - * cpu_exit is called as the last action during exit. - * We release the address space of the process, block interrupts, - * and call switch_exit. switch_exit switches to proc0's PCB and stack, - * then jumps into the middle of cpu_switch, as if it were switching - * from proc0. - */ void cpu_exit(td) register struct thread *td; -- cgit v1.1