Message ID | 1285875019-14246-1-git-send-email-weil@mail.berlios.de |
---|---|
State | New |
Headers | show |
On Thu, Sep 30, 2010 at 7:55 PM, Stefan Weil <weil@mail.berlios.de> wrote: > Am 30.09.2010 21:37, schrieb Blue Swirl: >> >> On Thu, Sep 30, 2010 at 7:30 PM, Stefan Weil<weil@mail.berlios.de> wrote: >> >>> >>> TARGET_FMT_lx is not allowed here, so use type casts to unsigned >>> (which should be large enough to hold typical nvram addresses). >>> >> >> The correct format is TARGET_FMT_plx. >> > > > addr is typically less than 8192 (size of nvram). > > TARGET_FMT_plx displays addr using 16 hex characters > when the target has 64 bit addresses. That's correct but > does not look pretty. > > Do you prefer TARGET_FMT_plx nevertheless? We could also introduce a new format which does not perform zero padding.
Am 30.09.2010 22:09, schrieb Blue Swirl: > On Thu, Sep 30, 2010 at 7:55 PM, Stefan Weil <weil@mail.berlios.de> wrote: >> Am 30.09.2010 21:37, schrieb Blue Swirl: >>> >>> On Thu, Sep 30, 2010 at 7:30 PM, Stefan Weil<weil@mail.berlios.de> >>> wrote: >>> >>>> >>>> TARGET_FMT_lx is not allowed here, so use type casts to unsigned >>>> (which should be large enough to hold typical nvram addresses). >>>> >>> >>> The correct format is TARGET_FMT_plx. >>> >> >> >> addr is typically less than 8192 (size of nvram). >> >> TARGET_FMT_plx displays addr using 16 hex characters >> when the target has 64 bit addresses. That's correct but >> does not look pretty. >> >> Do you prefer TARGET_FMT_plx nevertheless? > > We could also introduce a new format which does not perform zero padding. Like PRIxTPA (TPA = Target Physical Address)? That would allow devices to print their addresses according to their needs with 1, 2, 4 or more characters. #if TARGET_PHYS_ADDR_BITS == 32 #define PRIxTPA PRIx32 #elif TARGET_PHYS_ADDR_BITS == 64 #define PRIxTPA PRIx64 #endif If that's ok for everybody, I could provide a patch for targphys.h and update the patch for ds1225y.c.
diff --git a/hw/ds1225y.c b/hw/ds1225y.c index 009d127..381ca65 100644 --- a/hw/ds1225y.c +++ b/hw/ds1225y.c @@ -45,7 +45,7 @@ static uint32_t nvram_readb (void *opaque, target_phys_addr_t addr) val = s->contents[addr]; #ifdef DEBUG_NVRAM - printf("nvram: read 0x%x at " TARGET_FMT_lx "\n", val, addr); + printf("nvram: read 0x%x at %08x\n", val, (unsigned)addr); #endif return val; } @@ -73,7 +73,7 @@ static void nvram_writeb (void *opaque, target_phys_addr_t addr, uint32_t val) ds1225y_t *s = opaque; #ifdef DEBUG_NVRAM - printf("nvram: write 0x%x at " TARGET_FMT_lx "\n", val, addr); + printf("nvram: write 0x%x at %08x\n", val, (unsigned)addr); #endif s->contents[addr] = val & 0xff; @@ -104,7 +104,7 @@ static void nvram_writeb_protected (void *opaque, target_phys_addr_t addr, uint3 if (s->protection != 7) { #ifdef DEBUG_NVRAM - printf("nvram: prevent write of 0x%x at " TARGET_FMT_lx "\n", val, addr); + printf("nvram: prevent write of 0x%x at %08x\n", val, (unsigned)addr); #endif return; }
TARGET_FMT_lx is not allowed here, so use type casts to unsigned (which should be large enough to hold typical nvram addresses). ./hw/ds1225y.c:48:35: error: attempt to use poisoned "TARGET_FMT_lx" ./hw/ds1225y.c: In function ‘nvram_readb’: ./hw/ds1225y.c:48: error: expected ‘)’ before ‘TARGET_FMT_lx’ ./hw/ds1225y.c:48: error: too few arguments for format ./hw/ds1225y.c:76:36: error: attempt to use poisoned "TARGET_FMT_lx" ./hw/ds1225y.c: In function ‘nvram_writeb’: ./hw/ds1225y.c:76: error: expected ‘)’ before ‘TARGET_FMT_lx’ ./hw/ds1225y.c:76: error: too few arguments for format ./hw/ds1225y.c:107:47: error: attempt to use poisoned "TARGET_FMT_lx" ./hw/ds1225y.c: In function ‘nvram_writeb_protected’: ./hw/ds1225y.c:107: error: expected ‘)’ before ‘TARGET_FMT_lx’ ./hw/ds1225y.c:107: error: too few arguments for format Cc: Blue Swirl <blauwirbel@gmail.com> Signed-off-by: Stefan Weil <weil@mail.berlios.de> --- hw/ds1225y.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)