From 56b6a77a908eea1194bbcb970e212bbb2eab2671 Mon Sep 17 00:00:00 2001 From: benno Date: Tue, 28 May 2002 07:36:36 +0000 Subject: Move the kcopy() function from trap.c to machdep.c. Add a prototype. --- sys/powerpc/aim/machdep.c | 30 ++++++++++++++++++++++++++++++ sys/powerpc/aim/trap.c | 30 ------------------------------ sys/powerpc/include/cpu.h | 1 + sys/powerpc/powerpc/machdep.c | 30 ++++++++++++++++++++++++++++++ sys/powerpc/powerpc/trap.c | 30 ------------------------------ 5 files changed, 61 insertions(+), 60 deletions(-) diff --git a/sys/powerpc/aim/machdep.c b/sys/powerpc/aim/machdep.c index ac35d8f..cedcf73 100644 --- a/sys/powerpc/aim/machdep.c +++ b/sys/powerpc/aim/machdep.c @@ -961,3 +961,33 @@ cpu_pcpu_init(struct pcpu *pcpu, int cpuid, size_t sz) pcpu->pc_current_asngen = 1; } + +/* + * kcopy(const void *src, void *dst, size_t len); + * + * Copy len bytes from src to dst, aborting if we encounter a fatal + * page fault. + * + * kcopy() _must_ save and restore the old fault handler since it is + * called by uiomove(), which may be in the path of servicing a non-fatal + * page fault. + */ +int +kcopy(const void *src, void *dst, size_t len) +{ + struct thread *td; + faultbuf env, *oldfault; + int rv; + + td = PCPU_GET(curthread); + oldfault = td->td_pcb->pcb_onfault; + if ((rv = setfault(env)) != 0) { + td->td_pcb->pcb_onfault = oldfault; + return rv; + } + + memcpy(dst, src, len); + + td->td_pcb->pcb_onfault = oldfault; + return (0); +} diff --git a/sys/powerpc/aim/trap.c b/sys/powerpc/aim/trap.c index a93e24b..7cac790 100644 --- a/sys/powerpc/aim/trap.c +++ b/sys/powerpc/aim/trap.c @@ -570,36 +570,6 @@ setusr(u_int content) :: "n"(USER_SR), "r"(content)); } -/* - * kcopy(const void *src, void *dst, size_t len); - * - * Copy len bytes from src to dst, aborting if we encounter a fatal - * page fault. - * - * kcopy() _must_ save and restore the old fault handler since it is - * called by uiomove(), which may be in the path of servicing a non-fatal - * page fault. - */ -int -kcopy(const void *src, void *dst, size_t len) -{ - struct thread *td; - faultbuf env, *oldfault; - int rv; - - td = PCPU_GET(curthread); - oldfault = td->td_pcb->pcb_onfault; - if ((rv = setfault(env)) != 0) { - td->td_pcb->pcb_onfault = oldfault; - return rv; - } - - memcpy(dst, src, len); - - td->td_pcb->pcb_onfault = oldfault; - return (0); -} - int badaddr(void *addr, size_t size) { diff --git a/sys/powerpc/include/cpu.h b/sys/powerpc/include/cpu.h index 1258887..36fc196 100644 --- a/sys/powerpc/include/cpu.h +++ b/sys/powerpc/include/cpu.h @@ -92,5 +92,6 @@ get_cyclecount(void) void savectx(struct pcb *); void fork_trampoline(void); +int kcopy(const void *, void *, size_t); #endif /* _MACHINE_CPU_H_ */ diff --git a/sys/powerpc/powerpc/machdep.c b/sys/powerpc/powerpc/machdep.c index ac35d8f..cedcf73 100644 --- a/sys/powerpc/powerpc/machdep.c +++ b/sys/powerpc/powerpc/machdep.c @@ -961,3 +961,33 @@ cpu_pcpu_init(struct pcpu *pcpu, int cpuid, size_t sz) pcpu->pc_current_asngen = 1; } + +/* + * kcopy(const void *src, void *dst, size_t len); + * + * Copy len bytes from src to dst, aborting if we encounter a fatal + * page fault. + * + * kcopy() _must_ save and restore the old fault handler since it is + * called by uiomove(), which may be in the path of servicing a non-fatal + * page fault. + */ +int +kcopy(const void *src, void *dst, size_t len) +{ + struct thread *td; + faultbuf env, *oldfault; + int rv; + + td = PCPU_GET(curthread); + oldfault = td->td_pcb->pcb_onfault; + if ((rv = setfault(env)) != 0) { + td->td_pcb->pcb_onfault = oldfault; + return rv; + } + + memcpy(dst, src, len); + + td->td_pcb->pcb_onfault = oldfault; + return (0); +} diff --git a/sys/powerpc/powerpc/trap.c b/sys/powerpc/powerpc/trap.c index a93e24b..7cac790 100644 --- a/sys/powerpc/powerpc/trap.c +++ b/sys/powerpc/powerpc/trap.c @@ -570,36 +570,6 @@ setusr(u_int content) :: "n"(USER_SR), "r"(content)); } -/* - * kcopy(const void *src, void *dst, size_t len); - * - * Copy len bytes from src to dst, aborting if we encounter a fatal - * page fault. - * - * kcopy() _must_ save and restore the old fault handler since it is - * called by uiomove(), which may be in the path of servicing a non-fatal - * page fault. - */ -int -kcopy(const void *src, void *dst, size_t len) -{ - struct thread *td; - faultbuf env, *oldfault; - int rv; - - td = PCPU_GET(curthread); - oldfault = td->td_pcb->pcb_onfault; - if ((rv = setfault(env)) != 0) { - td->td_pcb->pcb_onfault = oldfault; - return rv; - } - - memcpy(dst, src, len); - - td->td_pcb->pcb_onfault = oldfault; - return (0); -} - int badaddr(void *addr, size_t size) { -- cgit v1.1