Source-Changes-HG archive

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

[src/nathanw_sa]: src/sys/arch/sparc64 make kernel compile



details:   https://anonhg.NetBSD.org/src/rev/205d71b27482
branches:  nathanw_sa
changeset: 505509:205d71b27482
user:      petrov <petrov%NetBSD.org@localhost>
date:      Thu Jan 03 06:42:33 2002 +0000

description:
make kernel compile

diffstat:

 sys/arch/sparc64/include/cpu.h               |    318 +
 sys/arch/sparc64/include/pmap.h              |    198 +
 sys/arch/sparc64/include/proc.h              |     14 +-
 sys/arch/sparc64/include/vmparam.h           |    176 +
 sys/arch/sparc64/sparc64/compat_13_machdep.c |     16 +-
 sys/arch/sparc64/sparc64/db_interface.c      |   1250 ++
 sys/arch/sparc64/sparc64/db_trace.c          |    535 +
 sys/arch/sparc64/sparc64/emul.c              |    457 +
 sys/arch/sparc64/sparc64/genassym.cf         |    282 +
 sys/arch/sparc64/sparc64/locore.s            |  12435 +++++++++++++++++++++++++
 sys/arch/sparc64/sparc64/locore2.c           |     42 +-
 sys/arch/sparc64/sparc64/machdep.c           |    139 +-
 sys/arch/sparc64/sparc64/pmap.c              |   4056 ++++++++
 sys/arch/sparc64/sparc64/process_machdep.c   |     65 +-
 sys/arch/sparc64/sparc64/sys_machdep.c       |      7 +-
 sys/arch/sparc64/sparc64/trap.c              |   2157 ++++
 sys/arch/sparc64/sparc64/vm_machdep.c        |     89 +-
 17 files changed, 22119 insertions(+), 117 deletions(-)

diffs (truncated from 22814 to 300 lines):

diff -r 86d9adccfdd8 -r 205d71b27482 sys/arch/sparc64/include/cpu.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/sparc64/include/cpu.h    Thu Jan 03 06:42:33 2002 +0000
@@ -0,0 +1,318 @@
+/*     $NetBSD: cpu.h,v 1.29.6.2 2002/01/03 06:42:33 petrov Exp $ */
+
+/*
+ * Copyright (c) 1992, 1993
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * This software was developed by the Computer Systems Engineering group
+ * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
+ * contributed to Berkeley.
+ *
+ * All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Lawrence Berkeley Laboratory.
+ *
+ * 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 the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 THE REGENTS 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.
+ *
+ *     @(#)cpu.h       8.4 (Berkeley) 1/5/94
+ */
+
+#ifndef _CPU_H_
+#define _CPU_H_
+
+/*
+ * CTL_MACHDEP definitions.
+ */
+#define        CPU_BOOTED_KERNEL       1       /* string: booted kernel name */
+#define        CPU_MAXID               2       /* number of valid machdep ids */
+
+#define        CTL_MACHDEP_NAMES {                     \
+       { 0, 0 },                               \
+       { "booted_kernel", CTLTYPE_STRING },    \
+}
+
+#ifdef _KERNEL
+/*
+ * Exported definitions unique to SPARC cpu support.
+ */
+
+#if !defined(_LKM)
+#include "opt_multiprocessor.h"
+#include "opt_lockdebug.h"
+#endif
+
+#include <machine/psl.h>
+#include <machine/reg.h>
+#include <machine/intr.h>
+#include <sparc64/sparc64/intreg.h>
+
+#include <sys/sched.h>
+/*
+ * The cpu_info structure is part of a 64KB structure mapped both the kernel
+ * pmap and a single locked TTE a CPUINFO_VA for that particular processor.
+ * Each processor's cpu_info is accessible at CPUINFO_VA only for that
+ * processor.  Other processors can access that through an additional mapping
+ * in the kernel pmap.
+ *
+ * The 64KB page contains:
+ *
+ * cpu_info
+ * interrupt stack (all remaining space)
+ * idle PCB
+ * idle stack (STACKSPACE - sizeof(PCB))
+ * 32KB TSB
+ */
+
+struct cpu_info {
+       /* Most important fields first */
+       struct proc             *ci_curproc;
+       struct pcb              *ci_cpcb;       /* also initial stack */
+       struct cpu_info         *ci_next;
+
+       struct proc             *ci_fpproc;
+       int                     ci_number;
+       int                     ci_upaid;
+       struct schedstate_percpu ci_schedstate; /* scheduler state */
+
+       /* DEBUG/DIAGNOSTIC stuff */
+       u_long                  ci_spin_locks;  /* # of spin locks held */
+       u_long                  ci_simple_locks;/* # of simple locks held */
+
+       /* Spinning up the CPU */
+       void                    (*ci_spinup) __P((void)); /* spinup routine */
+       void                    *ci_initstack;
+       paddr_t                 ci_paddr;       /* Phys addr of this structure. */
+};
+
+extern struct cpu_info *cpus;
+extern struct cpu_info cpu_info_store;
+
+#if 1
+#define        curcpu()        (&cpu_info_store)
+#else
+#define        curcpu()        ((struct cpu_info *)CPUINFO_VA)
+#endif
+
+/*
+ * definitions of cpu-dependent requirements
+ * referenced in generic code
+ */
+#define        cpu_swapin(p)   /* nothing */
+#define        cpu_swapout(p)  /* nothing */
+#define        cpu_wait(p)     /* nothing */
+#if 1
+#define cpu_number()   0
+#else
+#define        cpu_number()    (curcpu()->ci_number)
+#endif
+
+#define        cpu_proc_fork(p1, p2)   /* nothing */
+
+/*
+ * Arguments to hardclock, softclock and gatherstats encapsulate the
+ * previous machine state in an opaque clockframe.  The ipl is here
+ * as well for strayintr (see locore.s:interrupt and intr.c:strayintr).
+ * Note that CLKF_INTR is valid only if CLKF_USERMODE is false.
+ */
+extern int intstack[];
+extern int eintstack[];
+struct clockframe {
+       struct trapframe64 t;
+};
+
+#define        CLKF_USERMODE(framep)   (((framep)->t.tf_tstate & TSTATE_PRIV) == 0)
+#define        CLKF_BASEPRI(framep)    (((framep)->t.tf_oldpil) == 0)
+#define        CLKF_PC(framep)         ((framep)->t.tf_pc)
+#define        CLKF_INTR(framep)       ((!CLKF_USERMODE(framep))&&\
+                               (((framep)->t.tf_kstack < (vaddr_t)EINTSTACK)&&\
+                               ((framep)->t.tf_kstack > (vaddr_t)INTSTACK)))
+
+/*
+ * Software interrupt request `register'.
+ */
+#ifdef DEPRECATED
+union sir {
+       int     sir_any;
+       char    sir_which[4];
+} sir;
+
+#define SIR_NET                0
+#define SIR_CLOCK      1
+#endif
+
+extern struct intrhand soft01intr, soft01net, soft01clock;
+
+#if 0
+#define setsoftint()   send_softint(-1, IPL_SOFTINT, &soft01intr)
+#define setsoftnet()   send_softint(-1, IPL_SOFTNET, &soft01net)
+#else
+void setsoftint __P((void));
+void setsoftnet __P((void));
+#endif
+
+int    want_ast;
+
+/*
+ * Preempt the current process if in interrupt from user mode,
+ * or after the current trap/syscall if in system mode.
+ */
+int    want_resched;           /* resched() was called */
+#define        need_resched(ci)        (want_resched = 1, want_ast = 1)
+
+/*
+ * Give a profiling tick to the current process when the user profiling
+ * buffer pages are invalid.  On the sparc, request an ast to send us
+ * through trap(), marking the proc as needing a profiling tick.
+ */
+#define        need_proftick(p)        ((p)->p_flag |= P_OWEUPC, want_ast = 1)
+
+/*
+ * Notify the current process (p) that it has a signal pending,
+ * process as soon as possible.
+ */
+#define        signotify(p)            (want_ast = 1)
+
+/*
+ * Only one process may own the FPU state.
+ *
+ * XXX this must be per-cpu (eventually)
+ */
+struct lwp *fpproc;            /* FPU owner */
+int    foundfpu;               /* true => we have an FPU */
+
+/*
+ * Interrupt handler chains.  Interrupt handlers should return 0 for
+ * ``not me'' or 1 (``I took care of it'').  intr_establish() inserts a
+ * handler into the list.  The handler is called with its (single)
+ * argument, or with a pointer to a clockframe if ih_arg is NULL.
+ */
+struct intrhand {
+       int                     (*ih_fun) __P((void *));
+       void                    *ih_arg;
+       short                   ih_number;      /* interrupt number */
+                                               /* the H/W provides */
+       char                    ih_pil;         /* interrupt priority */
+       struct intrhand         *ih_next;       /* global list */
+       struct intrhand         *ih_pending;    /* interrupt queued */
+       volatile u_int64_t      *ih_map;        /* Interrupt map reg */
+       volatile u_int64_t      *ih_clr;        /* clear interrupt reg */
+};
+extern struct intrhand *intrhand[];
+extern struct intrhand *intrlev[MAXINTNUM];
+
+void   intr_establish __P((int level, struct intrhand *));
+
+/* cpu.c */
+paddr_t cpu_alloc __P((void));
+u_int64_t cpu_init __P((paddr_t, int));
+/* disksubr.c */
+struct dkbad;
+int isbad __P((struct dkbad *bt, int, int, int));
+/* machdep.c */
+int    ldcontrolb __P((caddr_t));
+void   dumpconf __P((void));
+caddr_t        reserve_dumppages __P((caddr_t));
+/* clock.c */
+struct timeval;
+int    tickintr __P((void *)); /* level 10 (tick) interrupt code */
+int    clockintr __P((void *));/* level 10 (clock) interrupt code */
+int    statintr __P((void *)); /* level 14 (statclock) interrupt code */
+/* locore.s */
+struct fpstate64;
+void   savefpstate __P((struct fpstate64 *));
+void   loadfpstate __P((struct fpstate64 *));
+u_int64_t      probeget __P((paddr_t, int, int));
+int    probeset __P((paddr_t, int, int, u_int64_t));
+#if 0
+void   write_all_windows __P((void));
+void   write_user_windows __P((void));
+#else
+#define         write_all_windows() __asm __volatile("flushw" : : )
+#define         write_user_windows() __asm __volatile("flushw" : : )
+#endif
+void   proc_trampoline __P((void));
+struct pcb;
+void   snapshot __P((struct pcb *));
+struct frame *getfp __P((void));
+int    xldcontrolb __P((caddr_t, struct pcb *));
+void   copywords __P((const void *, void *, size_t));
+void   qcopy __P((const void *, void *, size_t));
+void   qzero __P((void *, size_t));
+void   switchtoctx __P((int));
+/* locore2.c */
+void   remrq __P((struct proc *));
+/* trap.c */
+void   kill_user_windows __P((struct lwp *));
+int    rwindow_save __P((struct lwp *));
+/* amd7930intr.s */
+void   amd7930_trap __P((void));
+/* cons.c */
+int    cnrom __P((void));
+/* zs.c */
+void zsconsole __P((struct tty *, int, int, void (**)(struct tty *, int)));
+#ifdef KGDB
+void zs_kgdb_init __P((void));
+#endif
+/* fb.c */
+void   fb_unblank __P((void));
+/* kgdb_stub.c */
+#ifdef KGDB
+void kgdb_attach __P((int (*)(void *), void (*)(void *, int), void *));
+void kgdb_connect __P((int));
+void kgdb_panic __P((void));
+#endif
+/* emul.c */
+int    fixalign __P((struct lwp *, struct trapframe64 *));
+int    emulinstr __P((vaddr_t, struct trapframe64 *));
+
+/*
+ *



Home | Main Index | Thread Index | Old Index