Hi, This series fix a bug I'v been hunting for a long time.
With BE regions, if the guest used smaller access than the region implementation, the shift value is negative, but since access_fn() uses unsigned type for shift, it result in a huge positive value, then accessors shift the value which eventually becomes 0. The fix is simply to use signed type for the shift, and shift to the opposite direction for negative values. Regards, Phil. Philippe Mathieu-Daudé (3): memory: Use MAKE_64BIT_MASK() memory: Refactor common shifting code from accessors memory: Fix access_with_adjusted_size(small size) on big-endian memory regions memory.c | 58 +++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 41 insertions(+), 17 deletions(-) -- 2.19.0