This kind of type cast must use uintptr_t or target_ulong to be portable for hosts with sizeof(void *) != sizeof(long).
Here the value is assigned to a variable of type target_ulong. Signed-off-by: Stefan Weil <s...@weilnetz.de> --- hw/ppc/spapr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 218ea23..6e6f6a5 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -670,7 +670,7 @@ static void spapr_cpu_reset(void *opaque) env->external_htab = spapr->htab; env->htab_base = -1; env->htab_mask = HTAB_SIZE(spapr) - 1; - env->spr[SPR_SDR1] = (unsigned long)spapr->htab | + env->spr[SPR_SDR1] = (target_ulong)spapr->htab | (spapr->htab_shift - 18); } -- 1.7.10.4