[...]

>> +int s390_ipl_prepare_pv_header(void)
>> +{
>> +    IplParameterBlock *ipib = s390_ipl_get_iplb_pv();
>> +    IPLBlockPV *ipib_pv = &ipib->pv;
>> +    void *hdr = g_malloc(ipib_pv->pv_header_len);
>> +    int rc;
>> +
>> +    cpu_physical_memory_read(ipib_pv->pv_header_addr, hdr,
>> +                             ipib_pv->pv_header_len);
>> +    rc = s390_pv_set_sec_parms((uint64_t)hdr,
>> +                               ipib_pv->pv_header_len);
> This causes a compiler issue when building for 32 bit x86 as follows:
> 
> /home/abuild/rpmbuild/BUILD/qemu-4.2.0/hw/s390x/ipl.c: In function
> 's390_ipl_prepare_pv_header':
> /home/abuild/rpmbuild/BUILD/qemu-4.2.0/hw/s390x/ipl.c:659:32: error:
> cast from pointer to integer of different size [-Werror=pointer-to-int-
> cast]
>   659 |     rc = s390_pv_set_sec_parms((uint64_t)hdr,
>       |                                ^

Interesting. It seems that there is no travis-ci coverage for this
case.

I guess we need something like this.

diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c
index 1d04cd5..01bdf81 100644
--- a/hw/s390x/ipl.c
+++ b/hw/s390x/ipl.c
@@ -656,7 +656,7 @@ int s390_ipl_prepare_pv_header(void)
 
     cpu_physical_memory_read(ipib_pv->pv_header_addr, hdr,
                              ipib_pv->pv_header_len);
-    rc = s390_pv_set_sec_parms((uint64_t)hdr,
+    rc = s390_pv_set_sec_parms((uint64_t)(unsigned long) hdr,
                                ipib_pv->pv_header_len);
     g_free(hdr);
     return rc;


Reply via email to