diff options
Diffstat (limited to 'sys/arch/mvme88k/mvme88k/m197_machdep.c')
-rw-r--r-- | sys/arch/mvme88k/mvme88k/m197_machdep.c | 22 |
1 files changed, 4 insertions, 18 deletions
diff --git a/sys/arch/mvme88k/mvme88k/m197_machdep.c b/sys/arch/mvme88k/mvme88k/m197_machdep.c index a2ae7d4b909..1cf9e2786d4 100644 --- a/sys/arch/mvme88k/mvme88k/m197_machdep.c +++ b/sys/arch/mvme88k/mvme88k/m197_machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: m197_machdep.c,v 1.7 2005/04/30 16:42:37 miod Exp $ */ +/* $OpenBSD: m197_machdep.c,v 1.8 2006/04/13 21:16:17 miod Exp $ */ /* * Copyright (c) 1998, 1999, 2000, 2001 Steve Murphree, Jr. * Copyright (c) 1996 Nivas Madhur @@ -67,7 +67,6 @@ u_int m197_getipl(void); vaddr_t m197_memsize(void); u_int m197_raiseipl(u_int); u_int m197_setipl(u_int); -void m197_setupiackvectors(void); void m197_startup(void); vaddr_t obiova; @@ -147,21 +146,6 @@ m197_startup() panic("obiova %lx: OBIO not free", obiova); } -void -m197_setupiackvectors() -{ - u_int8_t *vaddr = (u_int8_t *)M197_IACK; - - ivec[0] = vaddr + 0x03; /* We dont use level 0 */ - ivec[1] = vaddr + 0x07; - ivec[2] = vaddr + 0x0b; - ivec[3] = vaddr + 0x0f; - ivec[4] = vaddr + 0x13; - ivec[5] = vaddr + 0x17; - ivec[6] = vaddr + 0x1b; - ivec[7] = vaddr + 0x1f; -} - /* * Device interrupt handler for MVME197 */ @@ -173,6 +157,7 @@ m197_ext_int(u_int v, struct trapframe *eframe) struct intrhand *intr; intrhand_t *list; int ret; + vaddr_t ivec; u_int8_t vec; mask = *(u_int8_t *)M197_IMASK & 0x07; @@ -183,7 +168,8 @@ m197_ext_int(u_int v, struct trapframe *eframe) } else { level = *(u_int8_t *)M197_ILEVEL & 0x07; /* generate IACK and get the vector */ - vec = *ivec[level]; + ivec = M197_IACK + (level << 2) + 0x03; + vec = *(volatile u_int8_t *)ivec; } uvmexp.intrs++; |