Message ID | 1330936245-2570-4-git-send-email-i.mitsyanko@samsung.com |
---|---|
State | New |
Headers | show |
Am 05.03.2012 09:30, schrieb Igor Mitsyanko: > Pxa2xx LCD controller is intended to work with 32-bit bus and it has no knowledge > of system's physical address size, so it should not use target_phys_addr_t in it's > state. Convert three variables in DMAChannel state from target_phys_addr_t to uint32_t, > use VMSTATE_UINT32 instead of VMSTATE_UINTTL for these variables. > We can do this safely because: > 1) pxa2xx has 32-bit physical address; > 2) rest of the code in file never assumes converted variables to have any size > different from uint32_t; > 3) we shouldn't have used VMSTATE_UINTTL in the first place because this macro > is for target_ulong type (which can be different from target_phys_addr_t). > > Signed-off-by: Igor Mitsyanko <i.mitsyanko@samsung.com> > Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Andreas Färber <afaerber@suse.de> Some Coccinelle script or so to verify that also non-UINTTL fields match types would probably be nice long-term. Andreas
diff --git a/hw/pxa2xx_lcd.c b/hw/pxa2xx_lcd.c index fcbdfb3..ee8bf57 100644 --- a/hw/pxa2xx_lcd.c +++ b/hw/pxa2xx_lcd.c @@ -19,15 +19,15 @@ #include "framebuffer.h" struct DMAChannel { - target_phys_addr_t branch; + uint32_t branch; uint8_t up; uint8_t palette[1024]; uint8_t pbuffer[1024]; void (*redraw)(PXA2xxLCDState *s, target_phys_addr_t addr, int *miny, int *maxy); - target_phys_addr_t descriptor; - target_phys_addr_t source; + uint32_t descriptor; + uint32_t source; uint32_t id; uint32_t command; }; @@ -929,11 +929,11 @@ static const VMStateDescription vmstate_dma_channel = { .minimum_version_id = 0, .minimum_version_id_old = 0, .fields = (VMStateField[]) { - VMSTATE_UINTTL(branch, struct DMAChannel), + VMSTATE_UINT32(branch, struct DMAChannel), VMSTATE_UINT8(up, struct DMAChannel), VMSTATE_BUFFER(pbuffer, struct DMAChannel), - VMSTATE_UINTTL(descriptor, struct DMAChannel), - VMSTATE_UINTTL(source, struct DMAChannel), + VMSTATE_UINT32(descriptor, struct DMAChannel), + VMSTATE_UINT32(source, struct DMAChannel), VMSTATE_UINT32(id, struct DMAChannel), VMSTATE_UINT32(command, struct DMAChannel), VMSTATE_END_OF_LIST()