Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/hpcarm Use arm/arm32/vm_machdep.c instead of hpcarm...



details:   https://anonhg.NetBSD.org/src/rev/2c9ea0aab6a2
branches:  trunk
changeset: 514707:2c9ea0aab6a2
user:      toshii <toshii%NetBSD.org@localhost>
date:      Sun Sep 09 09:59:24 2001 +0000

description:
Use arm/arm32/vm_machdep.c instead of hpcarm one.

diffstat:

 sys/arch/hpcarm/conf/files.hpcarm   |    3 +-
 sys/arch/hpcarm/hpcarm/vm_machdep.c |  471 ------------------------------------
 2 files changed, 1 insertions(+), 473 deletions(-)

diffs (truncated from 492 to 300 lines):

diff -r 9c98355aca89 -r 2c9ea0aab6a2 sys/arch/hpcarm/conf/files.hpcarm
--- a/sys/arch/hpcarm/conf/files.hpcarm Sun Sep 09 09:54:13 2001 +0000
+++ b/sys/arch/hpcarm/conf/files.hpcarm Sun Sep 09 09:59:24 2001 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: files.hpcarm,v 1.25 2001/09/03 19:38:13 matt Exp $
+#      $NetBSD: files.hpcarm,v 1.26 2001/09/09 09:59:24 toshii Exp $
 #
 # First try for arm-specific configuration info
 #
@@ -39,7 +39,6 @@
 file   arch/hpcarm/hpcarm/softintr.c
 file   arch/hpcarm/hpcarm/spl.S
 file   arch/hpcarm/hpcarm/stubs.c
-file   arch/hpcarm/hpcarm/vm_machdep.c
 
 # ARM FPE
 #file  arch/hpcarm/fpe-arm/armfpe_glue.S       armfpe
diff -r 9c98355aca89 -r 2c9ea0aab6a2 sys/arch/hpcarm/hpcarm/vm_machdep.c
--- a/sys/arch/hpcarm/hpcarm/vm_machdep.c       Sun Sep 09 09:54:13 2001 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,471 +0,0 @@
-/*     $NetBSD: vm_machdep.c,v 1.7 2001/09/03 19:38:14 matt Exp $      */
-
-/*
- * Copyright (c) 1994-1998 Mark Brinicombe.
- * Copyright (c) 1994 Brini.
- * All rights reserved.
- *
- * This code is derived from software written for Brini by Mark Brinicombe
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by Brini.
- * 4. The name of the company nor the name of the author may be used to
- *    endorse or promote products derived from this software without specific
- *    prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY BRINI ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL BRINI OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * RiscBSD kernel project
- *
- * vm_machdep.h
- *
- * vm machine specific bits
- *
- * Created      : 08/10/94
- */
-
-#include "opt_armfpe.h"
-#include "opt_pmap_debug.h"
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/proc.h>
-#include <sys/malloc.h>
-#include <sys/vnode.h>
-#include <sys/buf.h>
-#include <sys/user.h>
-#include <sys/core.h>
-#include <sys/exec.h>
-#include <sys/syslog.h>
-
-#include <uvm/uvm_extern.h>
-
-#include <machine/cpu.h>
-#include <machine/pmap.h>
-#include <machine/reg.h>
-#include <machine/vmparam.h>
-
-#ifdef ARMFPE
-#include <arm32/fpe-arm/armfpe.h>
-#endif
-
-extern pv_addr_t systempage;
-
-#ifdef PMAP_DEBUG
-extern int pmap_debug_level;
-#endif
-
-int process_read_regs  __P((struct proc *p, struct reg *regs));
-int process_read_fpregs        __P((struct proc *p, struct fpreg *regs));
-
-void   switch_exit     __P((struct proc *p, struct proc *proc0));
-extern void proc_trampoline    __P((void));
-
-pt_entry_t *pmap_pte   __P((pmap_t, vaddr_t));
-
-/*
- * Special compilation symbols:
- *
- * STACKCHECKS - Fill undefined and supervisor stacks with a known pattern
- *              on forking and check the pattern on exit, reporting
- *              the amount of stack used.
- */
-
-/*
- * Finish a fork operation, with process p2 nearly set up.
- * Copy and update the pcb and trap frame, making the child ready to run.
- * 
- * Rig the child's kernel stack so that it will start out in
- * proc_trampoline() and call child_return() with p2 as an
- * argument. This causes the newly-created child process to go
- * directly to user level with an apparent return value of 0 from
- * fork(), while the parent process returns normally.
- *
- * p1 is the process being forked; if p1 == &proc0, we are creating
- * a kernel thread, and the return path and argument are specified with
- * `func' and `arg'.
- *
- * If an alternate user-level stack is requested (with non-zero values
- * in both the stack and stacksize args), set up the user stack pointer
- * accordingly.
- */
-void
-cpu_fork(p1, p2, stack, stacksize, func, arg)
-       struct proc *p1;
-       struct proc *p2;
-       void *stack;
-       size_t stacksize;
-       void (*func) __P((void *));
-       void *arg;
-{
-       struct pcb *pcb = (struct pcb *)&p2->p_addr->u_pcb;
-       struct trapframe *tf;
-       struct switchframe *sf;
-
-#ifdef PMAP_DEBUG
-       if (pmap_debug_level >= 0)
-               printf("cpu_fork: %p %p %p %p\n", p1, p2, curproc, &proc0);
-#endif /* PMAP_DEBUG */
-
-#if 0 /* XXX */
-       if (p1 == curproc) {
-               /* Sync the PCB before we copy it. */
-               savectx(curpcb);
-       }
-#endif
-
-       /* Copy the pcb */
-       *pcb = p1->p_addr->u_pcb;
-
-       /* 
-        * Set up the undefined stack for the process.
-        * Note: this stack is not in use if we are forking from p1
-        */
-       pcb->pcb_und_sp = (u_int)p2->p_addr + USPACE_UNDEF_STACK_TOP;
-       pcb->pcb_sp = (u_int)p2->p_addr + USPACE_SVC_STACK_TOP;
-
-#ifdef STACKCHECKS
-       /* Fill the undefined stack with a known pattern */
-       memset(((u_char *)p2->p_addr) + USPACE_UNDEF_STACK_BOTTOM, 0xdd,
-           (USPACE_UNDEF_STACK_TOP - USPACE_UNDEF_STACK_BOTTOM));
-       /* Fill the kernel stack with a known pattern */
-       memset(((u_char *)p2->p_addr) + USPACE_SVC_STACK_BOTTOM, 0xdd,
-           (USPACE_SVC_STACK_TOP - USPACE_SVC_STACK_BOTTOM));
-#endif /* STACKCHECKS */
-
-#ifdef PMAP_DEBUG
-       if (pmap_debug_level >= 0) {
-               printf("p1->procaddr=%p p1->procaddr->u_pcb=%p pid=%d pmap=%p\n",
-                   p1->p_addr, &p1->p_addr->u_pcb, p1->p_pid,
-                   p1->p_vmspace->vm_map.pmap);
-               printf("p2->procaddr=%p p2->procaddr->u_pcb=%p pid=%d pmap=%p\n",
-                   p2->p_addr, &p2->p_addr->u_pcb, p2->p_pid,
-                   p2->p_vmspace->vm_map.pmap);
-       }
-#endif /* PMAP_DEBUG */
-
-       pmap_activate(p2);
-
-#ifdef ARMFPE
-       /* Initialise a new FP context for p2 and copy the context from p1 */
-       arm_fpe_core_initcontext(FP_CONTEXT(p2));
-       arm_fpe_copycontext(FP_CONTEXT(p1), FP_CONTEXT(p2));
-#endif /* ARMFPE */
-
-       p2->p_addr->u_pcb.pcb_tf = tf = (struct trapframe *)pcb->pcb_sp - 1;
-       *tf = *p1->p_addr->u_pcb.pcb_tf;
-
-       /*
-        * If specified, give the child a different stack.
-        */
-       if (stack != NULL)
-               tf->tf_usr_sp = (u_int)stack + stacksize;
-
-       sf = (struct switchframe *)tf - 1;
-       sf->sf_spl = _SPL_0;
-       sf->sf_r4 = (u_int)func;
-       sf->sf_r5 = (u_int)arg;
-       sf->sf_pc = (u_int)proc_trampoline;
-       pcb->pcb_sp = (u_int)sf;
-}
-
-/*
- * cpu_exit is called as the last action during exit.
- *
- * We clean up a little and then call switch_exit() with the old proc as an
- * argument.  switch_exit() first switches to proc0's context, and finally
- * jumps into switch() to wait for another process to wake up.
- */
-
-void
-cpu_exit(p)
-       register struct proc *p;
-{
-#ifdef ARMFPE
-       /* Abort any active FP operation and deactivate the context */
-       arm_fpe_core_abort(FP_CONTEXT(p), NULL, NULL);
-       arm_fpe_core_changecontext(0);
-#endif /* ARMFPE */
-
-#ifdef STACKCHECKS
-       /* Report how much stack has been used - debugging */
-       if (p) {
-               u_char *ptr;
-               int loop;
-
-               ptr = ((u_char *)p2->p_addr) + USPACE_UNDEF_STACK_BOTTOM;
-               for (loop = 0; loop < (USPACE_UNDEF_STACK_TOP - USPACE_UNDEF_STACK_BOTTOM)
-                   && *ptr == 0xdd; ++loop, ++ptr) ;
-               log(LOG_INFO, "%d bytes of undefined stack fill pattern\n", loop);
-               ptr = ((u_char *)p2->p_addr) + USPACE_SVC_STACK_BOTTOM;
-               for (loop = 0; loop < (USPACE_SVC_STACK_TOP - USPACE_SVC_STACK_BOTTOM)
-                   && *ptr == 0xdd; ++loop, ++ptr) ;
-               log(LOG_INFO, "%d bytes of svc stack fill pattern\n", loop);
-       }
-#endif /* STACKCHECKS */
-       uvmexp.swtch++;
-       switch_exit(p, &proc0);
-}
-
-
-void
-cpu_swapin(p)
-       struct proc *p;
-{
-
-#ifdef PMAP_DEBUG
-       if (pmap_debug_level >= 0)
-               printf("cpu_swapin(%p, %d, %s, %p)\n", p, p->p_pid,
-                   p->p_comm, p->p_vmspace->vm_map.pmap);
-#endif /* PMAP_DEBUG */
-
-       /* Map the system page */
-       pmap_enter(p->p_vmspace->vm_map.pmap, 0x00000000, systempage.pv_pa,
-           VM_PROT_READ, VM_PROT_READ|PMAP_WIRED);
-       pmap_update();
-}
-
-
-void
-cpu_swapout(p)
-       struct proc *p;
-{
-
-#ifdef PMAP_DEBUG
-       if (pmap_debug_level >= 0)
-               printf("cpu_swapout(%p, %d, %s, %p)\n", p, p->p_pid,
-                   p->p_comm, &p->p_vmspace->vm_map.pmap);
-#endif /* PMAP_DEBUG */
-
-       /* Free the system page mapping */
-       pmap_remove(p->p_vmspace->vm_map.pmap, 0x00000000, 0x00000000 + NBPG);
-       pmap_update();
-}
-
-
-/*
- * Move pages from one kernel virtual address to another.
- * Both addresses are assumed to reside in the Sysmap,
- * and size must be a multiple of CLSIZE.
- */
-
-void
-pagemove(from, to, size)
-       caddr_t from, to;
-       size_t size;
-{
-       register pt_entry_t *fpte, *tpte;
-
-       if (size % NBPG)
-               panic("pagemove: size=%08lx", (u_long) size);



Home | Main Index | Thread Index | Old Index