Skip to content

Commit 1648a3d

Browse files
author
Bob Abeles
committed
Fix IO register stores of multiple words
1 parent ab59e36 commit 1648a3d

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

ports/raspberrypi/common-hal/memorymap/AddressRange.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,9 @@ void common_hal_memorymap_addressrange_set_bytes(const memorymap_addressrange_ob
9494
} else {
9595
// Aligned access and length, use 32-bit writes
9696
uint32_t *dest_addr32 = (uint32_t *)dest_addr;
97-
size_t len32 = len >> 2;
98-
for (size_t i = 0; i < len32; i++) {
99-
*dest_addr32++ = ((uint32_t *)values)[i << 2];
97+
size_t access_count = len >> 2;
98+
for (size_t i = 0; i < access_count; i++) {
99+
*dest_addr32++ = ((uint32_t *)values)[i];
100100
}
101101
}
102102
break;
@@ -124,10 +124,10 @@ void common_hal_memorymap_addressrange_get_bytes(const memorymap_addressrange_ob
124124
// Unaligned access or unaligned length not supported by RP2 for IO registers
125125
mp_raise_RuntimeError(translate("Unable to access unaliged IO register"));
126126
} else {
127-
// Aligned access and length, use 32-bit writes
127+
// Aligned access and length, use 32-bit reads
128128
uint32_t *src_addr32 = (uint32_t *)src_addr;
129-
size_t len32 = len >> 2;
130-
for (size_t i = 0; i < len32; i++) {
129+
size_t access_count = len >> 2;
130+
for (size_t i = 0; i < access_count; i++) {
131131
((uint32_t *)values)[i] = *src_addr32++;
132132
}
133133
}

0 commit comments

Comments
 (0)