Memory-mapped I/O
These helpers expect and return little endian types (i.e. leint32_t
) which
may help with locating endianness related bugs using the sparse static analyzer.
-
leint32_t mmio_read32(void *addr)
read 4 bytes in memory-mapped register
Parameters
void *addr
memory-mapped register
Return
read value (native endian)
-
leint64_t mmio_lh_read64(void *addr)
read 8 bytes in memory-mapped register
Parameters
void *addr
memory-mapped register
Description
Read the low 4 bytes first, then the high 4 bytes.
Return
read value (native endian)
-
void mmio_write32(void *addr, leint32_t v)
write 4 bytes to memory-mapped register
Parameters
void *addr
memory-mapped register
leint32_t v
value to write (native endian)
-
void mmio_lh_write64(void *addr, leint64_t v)
write 8 bytes to memory-mapped register
Parameters
void *addr
memory-mapped register
leint64_t v
value to write (native endian)
Description
Write 8 bytes to memory-mapped register as two 4 byte writes (low bytes first, then high).
-
void mmio_hl_write64(void *addr, leint64_t v)
write 8 bytes to memory-mapped register
Parameters
void *addr
memory-mapped register
leint64_t v
value to write (native endian)
Description
Write 8 bytes to memory-mapped register as two 4 byte writes (high bytes first, then low).