On 11/30/07, Carlo Marcelo Arenas Belon <[EMAIL PROTECTED]> wrote: > On Fri, Nov 30, 2007 at 02:36:32PM +0900, Magnus Damm wrote: > > On Nov 19, 2007 6:18 AM, Carlo Marcelo Arenas Belon > > <[EMAIL PROTECTED]> wrote: > > > The following patch changes the formatting string from %08x to > > > TARGET_FMT_plx > > > to accommodate for compilation in 64bit hosts and that manifests with the > > > following warning : > > > > > > qemu/hw/sh7750.c: In function `error_access': > > > qemu/hw/sh7750.c:186: warning: unsigned int format, different type arg > > > (arg 5) > > > qemu/hw/sh7750.c: In function `ignore_access': > > > qemu/hw/sh7750.c:192: warning: unsigned int format, different type arg > > > (arg 5) > > > > This patch works fine on 32 bit x86 hosts. Please apply. > > Thanks, forgot to mention that I tested it of course as well in 32 bit x86 > where the code is equivalent as cpu-defs.h defines for 32 bit targets : > > #define TARGET_FMT_plx "%08x" > > For 64 bit targets, it will use a 64 bit type for physical addresses and > therefore a 64 bit wide format as defined by : > > #define TARGET_FMT_plx "%016" PRIx64 > > which might not be what was intended originally and might be uncovering a bug > somewhere else and based on the fact that apparently (and this gets confusing > as it seems to be inconsistently used everywhere in qemu) : > > target_phys_addr_t = physical address of the host > ram_addr_t = physical address of the guest
No, target_phys_addr_t is the physical address of the emulated target system. For host addresses ram_addr_t, unsigned long or even int is used. Host addresses are of course virtual, Qemu is a user space application until someone makes it run in bare metal without OS. > and so all this function should had been using ram_addr_t instead, and that > would need to be redefined to be 64 bit safe and have as well a new formatting > string to match that. No.