aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorDoug Rabson <dfr@FreeBSD.org>1998-07-05 12:22:56 +0000
committerDoug Rabson <dfr@FreeBSD.org>1998-07-05 12:22:56 +0000
commit638ccebd002a99206683ace986522ae0e0156f4c (patch)
tree37f029513d83a746e0a9a31211f073c310ac8dae /sys
parent36ed9b0405cdcc16c37046ff7410d8f022eb3c0e (diff)
downloadsrc-638ccebd002a99206683ace986522ae0e0156f4c.tar.gz
src-638ccebd002a99206683ace986522ae0e0156f4c.zip
Use byte/word access in badaddr if relevant.
Notes
Notes: svn path=/head/; revision=37404
Diffstat (limited to 'sys')
-rw-r--r--sys/alpha/alpha/interrupt.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/sys/alpha/alpha/interrupt.c b/sys/alpha/alpha/interrupt.c
index e8870edafc11..42cf925e0127 100644
--- a/sys/alpha/alpha/interrupt.c
+++ b/sys/alpha/alpha/interrupt.c
@@ -1,4 +1,4 @@
-/* $Id$ */
+/* $Id: interrupt.c,v 1.2 1998/06/10 20:13:32 dfr Exp $ */
/* $NetBSD: interrupt.c,v 1.23 1998/02/24 07:38:01 thorpej Exp $ */
/*
@@ -45,6 +45,7 @@
#include <machine/reg.h>
#include <machine/frame.h>
#include <machine/cpuconf.h>
+#include <machine/bwx.h>
#if 0
#ifdef EVCNT_COUNTERS
@@ -214,11 +215,19 @@ badaddr_read(addr, size, rptr)
alpha_mb();
switch (size) {
case sizeof (u_int8_t):
- rcpt = *(volatile u_int8_t *)addr;
+ if (alpha_implver() == ALPHA_IMPLVER_EV5
+ && alpha_amask(ALPHA_AMASK_BWX) == 0)
+ rcpt = ldbu((vm_offset_t)addr);
+ else
+ rcpt = *(volatile u_int8_t *)addr;
break;
case sizeof (u_int16_t):
- rcpt = *(volatile u_int16_t *)addr;
+ if (alpha_implver() == ALPHA_IMPLVER_EV5
+ && alpha_amask(ALPHA_AMASK_BWX) == 0)
+ rcpt = ldwu((vm_offset_t)addr);
+ else
+ rcpt = *(volatile u_int16_t *)addr;
break;
case sizeof (u_int32_t):