summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkettenis <kettenis@openbsd.org>2020-04-13 21:34:54 +0000
committerkettenis <kettenis@openbsd.org>2020-04-13 21:34:54 +0000
commit20d3e1cb58e574bc4b60f23a1d49160287788b1c (patch)
tree5e08708f17d9676413f768e214c989f0b1501350
parentMissed a few warnings in previous. (diff)
downloadwireguard-openbsd-20d3e1cb58e574bc4b60f23a1d49160287788b1c.tar.xz
wireguard-openbsd-20d3e1cb58e574bc4b60f23a1d49160287788b1c.zip
Fix some of the more esoteric bus_space functions. The
bus_space_read_region_n, bus_space_write_region_n and bus_space_set_region_n functions were all broken. Fixes mvneta(4) on arm64. ok patrick@
-rw-r--r--sys/arch/arm64/include/bus.h15
1 files changed, 8 insertions, 7 deletions
diff --git a/sys/arch/arm64/include/bus.h b/sys/arch/arm64/include/bus.h
index 7f7d8e79dd6..73678b5bf81 100644
--- a/sys/arch/arm64/include/bus.h
+++ b/sys/arch/arm64/include/bus.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: bus.h,v 1.6 2019/06/03 13:09:56 patrick Exp $ */
+/* $OpenBSD: bus.h,v 1.7 2020/04/13 21:34:54 kettenis Exp $ */
/*
* Copyright (c) 2003-2004 Opsycon AB Sweden. All rights reserved.
*
@@ -159,8 +159,10 @@ static __inline void \
CAT(bus_space_read_region_,n)(bus_space_tag_t bst, bus_space_handle_t bsh, \
bus_addr_t ba, CAT3(u_int,m,_t) *x, size_t cnt) \
{ \
- while (cnt--) \
- *x++ = CAT(bus_space_read_,n)(bst, bsh, ba++); \
+ while (cnt--) { \
+ *x++ = CAT(bus_space_read_,n)(bst, bsh, ba); \
+ ba += (n); \
+ } \
}
bus_space_read_region(1,8)
@@ -193,9 +195,8 @@ static __inline void \
CAT(bus_space_write_multi_,n)(bus_space_tag_t bst, bus_space_handle_t bsh, \
bus_size_t o, const CAT3(u_int,m,_t) *x, size_t cnt) \
{ \
- while (cnt--) { \
+ while (cnt--) \
CAT(bus_space_write_,n)(bst, bsh, o, *x++); \
- } \
}
bus_space_write_multi(1,8)
@@ -211,7 +212,7 @@ CAT(bus_space_write_region_,n)(bus_space_tag_t bst, bus_space_handle_t bsh, \
{ \
while (cnt--) { \
CAT(bus_space_write_,n)(bst, bsh, ba, *x++); \
- ba += sizeof(x); \
+ ba += (n); \
} \
}
@@ -247,7 +248,7 @@ CAT(bus_space_set_region_,n)(bus_space_tag_t bst, bus_space_handle_t bsh, \
{ \
while (cnt--) { \
CAT(bus_space_write_,n)(bst, bsh, ba, x); \
- ba += sizeof(x); \
+ ba += (n); \
} \
}