Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/arc/arc Moved from /cvsroot/syssrc/sys/arch/pica/pi...



details:   https://anonhg.NetBSD.org/src/rev/15cb4e3e093d
branches:  trunk
changeset: 481116:15cb4e3e093d
user:      soda <soda%NetBSD.org@localhost>
date:      Sun Jan 23 20:09:19 2000 +0000

description:
Moved from /cvsroot/syssrc/sys/arch/pica/pica/trap.c,v

diffstat:

 sys/arch/arc/arc/trap.c |  1741 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 1741 insertions(+), 0 deletions(-)

diffs (truncated from 1745 to 300 lines):

diff -r fde3c33e3af0 -r 15cb4e3e093d sys/arch/arc/arc/trap.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/arch/arc/arc/trap.c   Sun Jan 23 20:09:19 2000 +0000
@@ -0,0 +1,1741 @@
+/*     $NetBSD: trap.c,v 1.18 2000/01/23 20:09:20 soda Exp $   */
+
+/*
+ * Copyright (c) 1988 University of Utah.
+ * Copyright (c) 1992, 1993
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * the Systems Programming Group of the University of Utah Computer
+ * Science Department and Ralph Campbell.
+ *
+ * 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.
+ *
+ * from: Utah Hdr: trap.c 1.32 91/04/06
+ *
+ *     @(#)trap.c      8.5 (Berkeley) 1/11/94
+ */
+
+#include "opt_inet.h"
+#include "opt_atalk.h"
+#include "opt_iso.h"
+#include "opt_ns.h"
+#include "opt_ktrace.h"
+
+#if #defined(CPU_R4000) && !defined(CPU_R3000)
+#error Must define at least one of CPU_R3000 or CPU_R4000.
+#endif
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/device.h>
+#include <sys/proc.h>
+#include <sys/kernel.h>
+#include <sys/signalvar.h>
+#include <sys/syscall.h>
+#include <sys/user.h>
+#include <sys/buf.h>
+#ifdef KTRACE
+#include <sys/ktrace.h>
+#endif
+#include <net/netisr.h>
+
+#include <mips/locore.h>
+
+#include <machine/trap.h>
+#include <machine/psl.h>
+#include <machine/reg.h>
+#include <machine/cpu.h>
+#include <machine/pio.h>
+#include <machine/autoconf.h>
+#include <machine/pte.h>
+#include <machine/pmap.h>
+#include <machine/mips_opcode.h>
+
+#include <vm/vm.h>
+#include <vm/vm_kern.h>
+#include <vm/vm_page.h>
+
+#include <sys/cdefs.h>
+#include <sys/syslog.h>
+#include <miscfs/procfs/procfs.h>
+
+/* all this to get prototypes for ipintr() and arpintr() */
+#include <sys/socket.h>
+#include <net/if.h>
+#include <netinet/in.h>
+#include <netinet/if_inarp.h>
+#include <netinet/ip_var.h>
+
+#ifdef INET6
+# if 0 /*ifndef INET*/
+#  include <netinet/in.h>
+# endif
+#include <netinet6/ip6.h>
+#include <netinet6/ip6_var.h>
+#endif
+
+#ifdef NETATALK
+#include <netatalk/at_extern.h>
+#endif
+
+struct proc *machFPCurProcPtr;         /* pointer to last proc to use FP */
+
+/*
+ * Port-specific hardware interrupt handler
+ */
+
+int (*mips_hardware_intr) __P((u_int mask, u_int pc, u_int status,
+                              u_int cause)) =
+       ( int (*) __P((u_int, u_int, u_int, u_int)) ) 0;
+
+/*
+ * Exception-handling functions, called via machExceptionTable from locore
+ */
+extern void MachTLBModException __P((void));
+extern void MachTLBInvalidException __P((void));
+extern unsigned MachEmulateBranch __P((unsigned *regsPtr,
+                            unsigned instPC,
+                            unsigned fpcCSR,
+                            int allowNonBranch));
+
+extern void mips_r2000_KernGenException __P((void));
+extern void mips_r2000_UserGenException __P((void));
+extern void mips_r2000_KernIntr __P((void));
+extern void mips_r2000_UserIntr __P((void));
+extern void mips_r2000_TLBModException  __P((void));
+extern void mips_r2000_TLBMissException __P((void));
+
+
+extern void mips_r4000_KernGenException __P((void));
+extern void mips_r4000_UserGenException __P((void));
+extern void mips_r4000_KernIntr __P((void));
+extern void mips_r4000_UserIntr __P((void));
+extern void mips_r4000_TLBModException  __P((void));
+extern void mips_r4000_TLBMissException __P((void));
+extern void mips_r4000_TLBInvalidException __P((void));
+
+
+void (*mips_r4000_ExceptionTable[]) __P((void)) = {
+/*
+ * The kernel exception handlers.
+ */
+       mips_r4000_KernIntr,                    /* external interrupt */
+       mips_r4000_KernGenException,            /* TLB modification */
+       mips_r4000_TLBInvalidException, /* TLB miss (load or instr. fetch) */
+       mips_r4000_TLBInvalidException, /* TLB miss (store) */
+       mips_r4000_KernGenException,            /* address error (load or I-fetch) */
+       mips_r4000_KernGenException,            /* address error (store) */
+       mips_r4000_KernGenException,            /* bus error (I-fetch) */
+       mips_r4000_KernGenException,            /* bus error (load or store) */
+       mips_r4000_KernGenException,            /* system call */
+       mips_r4000_KernGenException,            /* breakpoint */
+       mips_r4000_KernGenException,            /* reserved instruction */
+       mips_r4000_KernGenException,            /* coprocessor unusable */
+       mips_r4000_KernGenException,            /* arithmetic overflow */
+       mips_r4000_KernGenException,            /* trap exception */
+       mips_r4000_KernGenException,            /* virtual coherence exception inst */
+       mips_r4000_KernGenException,            /* floating point exception */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* watch exception */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* virtual coherence exception data */
+/*
+ * The user exception handlers.
+ */
+       mips_r4000_UserIntr,                    /*  0 */
+       mips_r4000_UserGenException,            /*  1 */
+       mips_r4000_UserGenException,            /*  2 */
+       mips_r4000_UserGenException,            /*  3 */
+       mips_r4000_UserGenException,            /*  4 */
+       mips_r4000_UserGenException,            /*  5 */
+       mips_r4000_UserGenException,            /*  6 */
+       mips_r4000_UserGenException,            /*  7 */
+       mips_r4000_UserGenException,            /*  8 */
+       mips_r4000_UserGenException,            /*  9 */
+       mips_r4000_UserGenException,            /* 10 */
+       mips_r4000_UserGenException,            /* 11 */
+       mips_r4000_UserGenException,            /* 12 */
+       mips_r4000_UserGenException,            /* 13 */
+       mips_r4000_UserGenException,            /* 14 */
+       mips_r4000_UserGenException,            /* 15 */
+       mips_r4000_UserGenException,            /* 16 */
+       mips_r4000_UserGenException,            /* 17 */
+       mips_r4000_UserGenException,            /* 18 */
+       mips_r4000_UserGenException,            /* 19 */
+       mips_r4000_UserGenException,            /* 20 */
+       mips_r4000_UserGenException,            /* 21 */
+       mips_r4000_UserGenException,            /* 22 */
+       mips_r4000_UserGenException,            /* 23 */
+       mips_r4000_UserGenException,            /* 24 */
+       mips_r4000_UserGenException,            /* 25 */
+       mips_r4000_UserGenException,            /* 26 */
+       mips_r4000_UserGenException,            /* 27 */
+       mips_r4000_UserGenException,            /* 28 */
+       mips_r4000_UserGenException,            /* 29 */
+       mips_r4000_UserGenException,            /* 20 */
+       mips_r4000_UserGenException,            /* 31 */
+};
+
+/*
+ * XXX bug compatibility. Some versions of the locore code still refer
+ * to the exception vector by the Sprite name.
+ * Note these are all different from the r2000 equivalents. At the very
+ * least,  the MIPS-1 returns from an exception using rfe, and the
+ * MIPS-III uses eret.
+*/
+
+void (*machExceptionTable[]) __P((void)) = {
+/*
+ * The kernel exception handlers.
+ */
+       mips_r4000_KernIntr,                    /* external interrupt */
+       mips_r4000_KernGenException,            /* TLB modification */
+       mips_r4000_TLBInvalidException, /* TLB miss (load or instr. fetch) */
+       mips_r4000_TLBInvalidException, /* TLB miss (store) */
+       mips_r4000_KernGenException,            /* address error (load or I-fetch) */
+       mips_r4000_KernGenException,            /* address error (store) */
+       mips_r4000_KernGenException,            /* bus error (I-fetch) */
+       mips_r4000_KernGenException,            /* bus error (load or store) */
+       mips_r4000_KernGenException,            /* system call */
+       mips_r4000_KernGenException,            /* breakpoint */
+       mips_r4000_KernGenException,            /* reserved instruction */
+       mips_r4000_KernGenException,            /* coprocessor unusable */
+       mips_r4000_KernGenException,            /* arithmetic overflow */
+       mips_r4000_KernGenException,            /* trap exception */
+       mips_r4000_KernGenException,            /* virtual coherence exception inst */
+       mips_r4000_KernGenException,            /* floating point exception */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* watch exception */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* reserved */
+       mips_r4000_KernGenException,            /* virtual coherence exception data */
+/*
+ * The user exception handlers.
+ */
+       mips_r4000_UserIntr,                    /*  0 */
+       mips_r4000_UserGenException,            /*  1 */
+       mips_r4000_UserGenException,            /*  2 */
+       mips_r4000_UserGenException,            /*  3 */
+       mips_r4000_UserGenException,            /*  4 */
+       mips_r4000_UserGenException,            /*  5 */
+       mips_r4000_UserGenException,            /*  6 */
+       mips_r4000_UserGenException,            /*  7 */
+       mips_r4000_UserGenException,            /*  8 */
+       mips_r4000_UserGenException,            /*  9 */
+       mips_r4000_UserGenException,            /* 10 */
+       mips_r4000_UserGenException,            /* 11 */
+       mips_r4000_UserGenException,            /* 12 */
+       mips_r4000_UserGenException,            /* 13 */
+       mips_r4000_UserGenException,            /* 14 */
+       mips_r4000_UserGenException,            /* 15 */
+       mips_r4000_UserGenException,            /* 16 */
+       mips_r4000_UserGenException,            /* 17 */
+       mips_r4000_UserGenException,            /* 18 */
+       mips_r4000_UserGenException,            /* 19 */
+       mips_r4000_UserGenException,            /* 20 */
+       mips_r4000_UserGenException,            /* 21 */
+       mips_r4000_UserGenException,            /* 22 */
+       mips_r4000_UserGenException,            /* 23 */
+       mips_r4000_UserGenException,            /* 24 */
+       mips_r4000_UserGenException,            /* 25 */
+       mips_r4000_UserGenException,            /* 26 */
+       mips_r4000_UserGenException,            /* 27 */
+       mips_r4000_UserGenException,            /* 28 */
+       mips_r4000_UserGenException,            /* 29 */
+       mips_r4000_UserGenException,            /* 20 */
+       mips_r4000_UserGenException,            /* 31 */



Home | Main Index | Thread Index | Old Index