Patchwork hw/a9mpcore: Fix compilation failure if physaddrs are 64 bit

login
register
mail settings
Submitter Peter Maydell
Date May 22, 2012, 5:04 p.m.
Message ID <1337706275-3743-1-git-send-email-peter.maydell@linaro.org>
Download mbox | patch
Permalink /patch/160692/
State New
Headers show

Comments

Peter Maydell - May 22, 2012, 5:04 p.m.
Add a cast to a logging printf to avoid a compilation failure
if target_phys_addr_t is a 64 bit type. (This is better than
using TARGET_FMT_plx because we really don't need a full
16 digit hex string to print the offset into a device.)

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 hw/a9mpcore.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Eric Blake - May 22, 2012, 5:09 p.m.
On 05/22/2012 11:04 AM, Peter Maydell wrote:
> Add a cast to a logging printf to avoid a compilation failure
> if target_phys_addr_t is a 64 bit type. (This is better than
> using TARGET_FMT_plx because we really don't need a full
> 16 digit hex string to print the offset into a device.)
> 
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
>  hw/a9mpcore.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/hw/a9mpcore.c b/hw/a9mpcore.c
> index c2ff74d..98f52f0 100644
> --- a/hw/a9mpcore.c
> +++ b/hw/a9mpcore.c
> @@ -75,7 +75,7 @@ static void a9_scu_write(void *opaque, target_phys_addr_t offset,
>          break;
>      default:
>          fprintf(stderr, "Invalid size %u in write to a9 scu register %x\n",
> -                size, offset);
> +                size, (uint32_t)offset);

NACK.  %x and (uint32_t) are not necessarily compatible types (some
platforms implement uint32_t as long).  If you use %x, then cast to
(unsigned int) instead.
Peter Maydell - May 22, 2012, 5:15 p.m.
On 22 May 2012 18:09, Eric Blake <eblake@redhat.com> wrote:
> On 05/22/2012 11:04 AM, Peter Maydell wrote:
>> @@ -75,7 +75,7 @@ static void a9_scu_write(void *opaque, target_phys_addr_t offset,
>>          break;
>>      default:
>>          fprintf(stderr, "Invalid size %u in write to a9 scu register %x\n",
>> -                size, offset);
>> +                size, (uint32_t)offset);
>
> NACK.  %x and (uint32_t) are not necessarily compatible types (some
> platforms implement uint32_t as long).  If you use %x, then cast to
> (unsigned int) instead.

Good point, though I think from the fact we have uses of %x for uint32_t
types already in the codebase that we don't try to compile on any of
those platforms.

Patch v2 on the way.

-- PMM

Patch

diff --git a/hw/a9mpcore.c b/hw/a9mpcore.c
index c2ff74d..98f52f0 100644
--- a/hw/a9mpcore.c
+++ b/hw/a9mpcore.c
@@ -75,7 +75,7 @@  static void a9_scu_write(void *opaque, target_phys_addr_t offset,
         break;
     default:
         fprintf(stderr, "Invalid size %u in write to a9 scu register %x\n",
-                size, offset);
+                size, (uint32_t)offset);
         return;
     }