rust: pl011: extend registers to 32 bits
authorPaolo Bonzini <pbonzini@redhat.com>
Tue, 10 Dec 2024 11:12:47 +0000 (12:12 +0100)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 19 Dec 2024 18:36:38 +0000 (19:36 +0100)
commite2e0828e0f25042a09b1cbada41a436d1258fdb8
tree9e3c8536919f502bb78cb00d914697c58955212f
parente1f9353334859ea325f25bd88e01645af63b133b
rust: pl011: extend registers to 32 bits

The PL011 Technical Reference Manual lists the "real" size of the
registers in table 3-1, and only rounds up to the next byte when
describing the registers; for example, UARTDR is listed as having
width 12/8 (12 bits read, 8 written) and only bits 15:0 are listed
in "Table 3-2 UARTDR Register".

However, in practice these are 32-bit registers, accessible only
through 32-bit MMIO accesses; preserving the fiction that they're
smaller introduces multiple casts (to go from the bilge bitfield
type to e.g u16 to u64) and more importantly it breaks the
migration stream because the Rust vmstate macros are not yet
type safe.

So, just make everything 32-bits wide.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
rust/hw/char/pl011/src/device.rs
rust/hw/char/pl011/src/lib.rs