patch-2.4.21 linux-2.4.21/arch/m68k/sun3/sun3ints.c
Next file: linux-2.4.21/arch/m68k/sun3x/config.c
Previous file: linux-2.4.21/arch/m68k/sun3/sun3dvma.c
Back to the patch index
Back to the overall index
- Lines: 96
- Date:
2003-06-13 07:51:31.000000000 -0700
- Orig file:
linux-2.4.20/arch/m68k/sun3/sun3ints.c
- Orig date:
2002-11-28 15:53:09.000000000 -0800
diff -urN linux-2.4.20/arch/m68k/sun3/sun3ints.c linux-2.4.21/arch/m68k/sun3/sun3ints.c
@@ -17,6 +17,7 @@
#include <asm/sun3ints.h>
extern void sun3_leds (unsigned char);
+static void sun3_inthandle(int irq, void *dev_id, struct pt_regs *fp);
void sun3_disable_interrupts(void)
{
@@ -62,11 +63,6 @@
*sun3_intreg |= (1<<irq);
}
-int sun3_get_irq_list(char *buf)
-{
- return 0;
-}
-
static void sun3_int7(int irq, void *dev_id, struct pt_regs *fp)
{
sun3_do_irq(irq,fp);
@@ -93,13 +89,39 @@
/* handle requested ints, excepting 5 and 7, which always do the same
thing */
+void (*sun3_default_handler[SYS_IRQS])(int, void *, struct pt_regs *) = {
+ sun3_inthandle, sun3_inthandle, sun3_inthandle, sun3_inthandle,
+ sun3_inthandle, sun3_int5, sun3_inthandle, sun3_int7
+};
+
+static const char *dev_names[SYS_IRQS] = { NULL, NULL, NULL, NULL,
+ NULL, "timer", NULL, "int7 handler" };
static void *dev_ids[SYS_IRQS];
static void (*sun3_inthandler[SYS_IRQS])(int, void *, struct pt_regs *) = {
NULL, NULL, NULL, NULL, NULL, sun3_int5, NULL, sun3_int7
};
-static void (*sun3_vechandler[192])(int, void *, struct pt_regs *);
-static void *vec_ids[192];
-static const char *vec_names[192];
+
+static void (*sun3_vechandler[SUN3_INT_VECS])(int, void *, struct pt_regs *);
+static void *vec_ids[SUN3_INT_VECS];
+static const char *vec_names[SUN3_INT_VECS];
+static int vec_ints[SUN3_INT_VECS];
+
+
+int sun3_get_irq_list(char *buf)
+{
+ int i, len = 0;
+
+ for(i = 0; i < (SUN3_INT_VECS-1); i++) {
+ if(sun3_vechandler[i] != NULL) {
+ len += sprintf(buf+len, "vec %3d: %10u %s\n", i+64,
+ vec_ints[i],
+ (vec_names[i]) ? vec_names[i] :
+ "sun3_vechandler");
+ }
+ }
+
+ return 0;
+}
static void sun3_inthandle(int irq, void *dev_id, struct pt_regs *fp)
{
@@ -117,14 +139,6 @@
// intersil_clear();
}
-void (*sun3_default_handler[SYS_IRQS])(int, void *, struct pt_regs *) = {
- sun3_inthandle, sun3_inthandle, sun3_inthandle, sun3_inthandle,
- sun3_inthandle, sun3_int5, sun3_inthandle, sun3_int7
-};
-
-static const char *dev_names[SYS_IRQS] = { NULL, NULL, NULL, NULL,
- NULL, "timer", NULL, NULL };
-
void sun3_init_IRQ(void)
{
int i;
@@ -175,6 +189,7 @@
sun3_vechandler[vec] = handler;
vec_ids[vec] = dev_id;
vec_names[vec] = devname;
+ vec_ints[vec] = 0;
return 0;
}
@@ -221,7 +236,8 @@
vec = irq - 64;
if(sun3_vechandler[vec] == NULL)
panic ("bad interrupt vector %d received\n",irq);
-
+
+ vec_ints[vec]++;
sun3_vechandler[vec](irq, vec_ids[vec], regs);
return;
} else {
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)