]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Ovmf/Xen: fix pointer to int cast in XenBusDxe
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Sat, 28 Feb 2015 20:32:16 +0000 (20:32 +0000)
committerlersek <lersek@Edk2>
Sat, 28 Feb 2015 20:32:16 +0000 (20:32 +0000)
On ARM, xen_pfn_t is 64 bits but the size of a pointer is only
32 bits, so casting between them needs to go via (UINTN). Also
move the xen_pfn_t cast outside the shift so that we can avoid
shifting 64-bit quantities on 32-bit architectures, which may
require runtime library support.

Contributed-under: TianoCore Contribution Agreement 1.0
Reviewed-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16968 6f19259b-4bc3-4df7-8a09-765794883524

OvmfPkg/XenBusDxe/GrantTable.c

index 37d3bf786c6485ae5a02ec8c4abec7ffd0767f09..8405edc51bc4c6c82825eabe9f18ee0b70df1fce 100644 (file)
@@ -160,7 +160,7 @@ XenGrantTableInit (
     Parameters.domid = DOMID_SELF;\r
     Parameters.idx = Index;\r
     Parameters.space = XENMAPSPACE_grant_table;\r
-    Parameters.gpfn = (((xen_pfn_t) GrantTable) >> EFI_PAGE_SHIFT) + Index;\r
+    Parameters.gpfn = (xen_pfn_t) ((UINTN) GrantTable >> EFI_PAGE_SHIFT) + Index;\r
     ReturnCode = XenHypercallMemoryOp (Dev, XENMEM_add_to_physmap, &Parameters);\r
     if (ReturnCode != 0) {\r
       DEBUG ((EFI_D_ERROR, "Xen GrantTable, add_to_physmap hypercall error: %d\n", ReturnCode));\r
@@ -182,7 +182,7 @@ XenGrantTableDeinit (
 \r
   for (Index = NR_GRANT_FRAMES - 1; Index >= 0; Index--) {\r
     Parameters.domid = DOMID_SELF;\r
-    Parameters.gpfn = (((xen_pfn_t) GrantTable) >> EFI_PAGE_SHIFT) + Index;\r
+    Parameters.gpfn = (xen_pfn_t) ((UINTN) GrantTable >> EFI_PAGE_SHIFT) + Index;\r
     DEBUG ((EFI_D_INFO, "Xen GrantTable, removing %X\n", Parameters.gpfn));\r
     ReturnCode = XenHypercallMemoryOp (Dev, XENMEM_remove_from_physmap, &Parameters);\r
     if (ReturnCode != 0) {\r