patrick@ pointed out that the arm64 bus_space implementation was (partly) copied from mips64. Therefore th fixes should probably be applied there as well.
Untested so far. Index: arch/loongson/include/bus.h =================================================================== RCS file: /cvs/src/sys/arch/loongson/include/bus.h,v retrieving revision 1.7 diff -u -p -r1.7 bus.h --- arch/loongson/include/bus.h 8 May 2017 00:27:45 -0000 1.7 +++ arch/loongson/include/bus.h 13 Apr 2020 21:42:14 -0000 @@ -144,8 +144,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) @@ -178,9 +180,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) @@ -196,7 +197,7 @@ CAT(bus_space_write_region_,n)(bus_space { \ while (cnt--) { \ CAT(bus_space_write_,n)(bst, bsh, ba, *x++); \ - ba += sizeof(x); \ + ba += (n); \ } \ } @@ -232,7 +233,7 @@ CAT(bus_space_set_region_,n)(bus_space_t { \ while (cnt--) { \ CAT(bus_space_write_,n)(bst, bsh, ba, x); \ - ba += sizeof(x); \ + ba += (n); \ } \ } Index: arch/octeon/include/bus.h =================================================================== RCS file: /cvs/src/sys/arch/octeon/include/bus.h,v retrieving revision 1.7 diff -u -p -r1.7 bus.h --- arch/octeon/include/bus.h 8 May 2017 00:27:45 -0000 1.7 +++ arch/octeon/include/bus.h 13 Apr 2020 21:42:15 -0000 @@ -142,8 +142,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) @@ -176,9 +178,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) @@ -194,7 +195,7 @@ CAT(bus_space_write_region_,n)(bus_space { \ while (cnt--) { \ CAT(bus_space_write_,n)(bst, bsh, ba, *x++); \ - ba += sizeof(x); \ + ba += (n); \ } \ } @@ -230,7 +231,7 @@ CAT(bus_space_set_region_,n)(bus_space_t { \ while (cnt--) { \ CAT(bus_space_write_,n)(bst, bsh, ba, x); \ - ba += sizeof(x); \ + ba += (n); \ } \ } Index: arch/sgi/include/bus.h =================================================================== RCS file: /cvs/src/sys/arch/sgi/include/bus.h,v retrieving revision 1.28 diff -u -p -r1.28 bus.h --- arch/sgi/include/bus.h 11 May 2017 15:47:45 -0000 1.28 +++ arch/sgi/include/bus.h 13 Apr 2020 21:42:15 -0000 @@ -143,8 +143,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) @@ -177,9 +179,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) @@ -195,7 +196,7 @@ CAT(bus_space_write_region_,n)(bus_space { \ while (cnt--) { \ CAT(bus_space_write_,n)(bst, bsh, ba, *x++); \ - ba += sizeof(x); \ + ba += (n); \ } \ } @@ -231,7 +232,7 @@ CAT(bus_space_set_region_,n)(bus_space_t { \ while (cnt--) { \ CAT(bus_space_write_,n)(bst, bsh, ba, x); \ - ba += sizeof(x); \ + ba += (n); \ } \ }