The offset that is compared against 0x3f8..0x400 is not shifted right. Adjust the pattern matching.
Cc: Pierrick Bouvier <pierrick.bouv...@linaro.org> Cc: Manos Pitsidianakis <manos.pitsidiana...@linaro.org> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> --- rust/hw/char/pl011/src/device.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/device.rs index 2a85960b81f..6556865fc22 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -182,7 +182,7 @@ pub fn read(&mut self, offset: hwaddr, _size: c_uint) -> std::ops::ControlFlow<u use RegisterOffset::*; std::ops::ControlFlow::Break(match RegisterOffset::try_from(offset) { - Err(v) if (0x3f8..0x400).contains(&v) => { + Err(v) if (0xfe0..=0xffc).contains(&v) => { u64::from(self.device_id[(offset - 0xfe0) >> 2]) } Err(_) => { -- 2.47.0