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