summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authordfr <dfr@FreeBSD.org>1998-07-05 12:22:56 +0000
committerdfr <dfr@FreeBSD.org>1998-07-05 12:22:56 +0000
commit49590d8c5a39306eaccde9fcb31a5b39751410da (patch)
tree7e1c7387783594824e082ecbf088a51d85506224 /sys
parentbfd0739c1c0aef72f65f2c7a9ea3464c965d353f (diff)
downloadFreeBSD-src-49590d8c5a39306eaccde9fcb31a5b39751410da.zip
FreeBSD-src-49590d8c5a39306eaccde9fcb31a5b39751410da.tar.gz
Use byte/word access in badaddr if relevant.
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 e8870ed..42cf925 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):
OpenPOWER on IntegriCloud