summaryrefslogtreecommitdiff
path: root/sys/alpha/include
diff options
context:
space:
mode:
authorDoug Rabson <dfr@FreeBSD.org>1998-07-12 16:09:30 +0000
committerDoug Rabson <dfr@FreeBSD.org>1998-07-12 16:09:30 +0000
commit56abfaf4eb105eab7052d527bbb9f84be0a6bd95 (patch)
tree8e85dd391dbc8862ce41d903ab207cd3dd308cd7 /sys/alpha/include
parentcefd88ce75757791b10e0196cb973d29c2a463e3 (diff)
Notes
Diffstat (limited to 'sys/alpha/include')
-rw-r--r--sys/alpha/include/intr.h148
1 files changed, 35 insertions, 113 deletions
diff --git a/sys/alpha/include/intr.h b/sys/alpha/include/intr.h
index 2a5f673bb75c..9a33081a3c2f 100644
--- a/sys/alpha/include/intr.h
+++ b/sys/alpha/include/intr.h
@@ -1,124 +1,46 @@
-/* $Id$ */
-/* From: NetBSD: intr.h,v 1.11 1997/11/10 18:23:50 mjacob Exp */
-
-/*
- * Copyright (c) 1997 Christopher G. Demetriou. All rights reserved.
- * Copyright (c) 1996 Carnegie-Mellon University.
+/*-
+ * Copyright (c) 1998 Doug Rabson
* All rights reserved.
*
- * Author: Chris G. Demetriou
- *
- * Permission to use, copy, modify and distribute this software and
- * its documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
- * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
+ * 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.
*
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
*
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
- */
-
-#ifndef _ALPHA_INTR_H_
-#define _ALPHA_INTR_H_
-
-#include <sys/queue.h>
-
-#define IPL_NONE 0 /* disable only this interrupt */
-#define IPL_BIO 1 /* disable block I/O interrupts */
-#define IPL_NET 2 /* disable network interrupts */
-#define IPL_TTY 3 /* disable terminal interrupts */
-#define IPL_CLOCK 4 /* disable clock interrupts */
-#define IPL_HIGH 5 /* disable all interrupts */
-
-#define IST_UNUSABLE -1 /* interrupt cannot be used */
-#define IST_NONE 0 /* none (dummy) */
-#define IST_PULSE 1 /* pulsed */
-#define IST_EDGE 2 /* edge-triggered */
-#define IST_LEVEL 3 /* level-triggered */
-#ifdef _KERNEL
-
-/* IPL-lowering/restoring macros */
-#define splx(s) \
- ((s) == ALPHA_PSL_IPL_0 ? spl0() : alpha_pal_swpipl(s))
-#define splsoft() alpha_pal_swpipl(ALPHA_PSL_IPL_SOFT)
-#define splsoftclock() splsoft()
-#define splsoftnet() splsoft()
-
-/* IPL-raising functions/macros */
-static __inline int _splraise __P((int)) __attribute__ ((unused));
-static __inline int
-_splraise(s)
- int s;
-{
- int cur = alpha_pal_rdps() & ALPHA_PSL_IPL_MASK;
- return (s > cur ? alpha_pal_swpipl(s) : cur);
-}
-#define splnet() _splraise(ALPHA_PSL_IPL_IO)
-#define splbio() _splraise(ALPHA_PSL_IPL_IO)
-#define splimp() _splraise(ALPHA_PSL_IPL_IO)
-#define spltty() _splraise(ALPHA_PSL_IPL_IO)
-#define splclock() _splraise(ALPHA_PSL_IPL_CLOCK)
-#define splstatclock() _splraise(ALPHA_PSL_IPL_CLOCK)
-#define splhigh() _splraise(ALPHA_PSL_IPL_HIGH)
-
-/*
- * simulated software interrupt register
+ * $Id$
*/
-extern u_int64_t ssir;
-#define SIR_NET 0x1
-#define SIR_CLOCK 0x2
+#ifndef _MACHINE_INTR_H_
+#define _MACHINE_INTR_H_
-#define setsoftnet() ssir |= SIR_NET
-#define setsoftclock() ssir |= SIR_CLOCK
-
-/*
- * Alpha shared-interrupt-line common code.
- */
-
-struct alpha_shared_intrhand {
- TAILQ_ENTRY(alpha_shared_intrhand)
- ih_q;
- int (*ih_fn) __P((void *));
- void *ih_arg;
- int ih_level;
-};
+LIST_HEAD(alpha_intr_list, alpha_intr);
-struct alpha_shared_intr {
- TAILQ_HEAD(,alpha_shared_intrhand)
- intr_q;
- int intr_sharetype;
- int intr_dfltsharetype;
- int intr_nstrays;
- int intr_maxstrays;
+struct alpha_intr {
+ LIST_ENTRY(alpha_intr) list; /* chain handlers in this hash bucket */
+ int vector; /* vector to match */
+ driver_intr_t *intr; /* handler function */
+ void *arg; /* argument to handler */
};
-struct alpha_shared_intr *alpha_shared_intr_alloc __P((unsigned int));
-int alpha_shared_intr_dispatch __P((struct alpha_shared_intr *,
- unsigned int));
-void *alpha_shared_intr_establish __P((struct alpha_shared_intr *,
- unsigned int, int, int, int (*)(void *), void *, const char *));
-int alpha_shared_intr_get_sharetype __P((struct alpha_shared_intr *,
- unsigned int));
-int alpha_shared_intr_isactive __P((struct alpha_shared_intr *,
- unsigned int));
-void alpha_shared_intr_set_dfltsharetype __P((struct alpha_shared_intr *,
- unsigned int, int));
-void alpha_shared_intr_set_maxstrays __P((struct alpha_shared_intr *,
- unsigned int, int));
-void alpha_shared_intr_stray __P((struct alpha_shared_intr *, unsigned int,
- const char *));
+struct alpha_intr *alpha_create_intr(int vector,
+ driver_intr_t *intr, void *arg);
+int alpha_connect_intr(struct alpha_intr *i);
+void alpha_dispatch_intr(int vector);
-#endif
-#endif
+#endif /* !_MACHINE_INTR_H_ */