[PATCH 3/7] pci: swap_case: Allow compilation on 32-bit machines
Heinrich Schuchardt
xypron.glpk at gmx.de
Sun Feb 7 22:34:05 CET 2021
On 2/7/21 10:27 PM, Simon Glass wrote:
> At present this driver assumes that ulong is 64-bits long. On 32-bit
> machines it is not. Use the 64-bit code only on 64-bit machines.
The commit title and message leaves it open if this is only to make
compilation work or if the code works correctly on 32-bit with this patch.
Best regards
Heinrich
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
> drivers/misc/swap_case.c | 13 +++++++++++--
> 1 file changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/misc/swap_case.c b/drivers/misc/swap_case.c
> index 3cbc8f37ec5..7093ad1cd4f 100644
> --- a/drivers/misc/swap_case.c
> +++ b/drivers/misc/swap_case.c
> @@ -302,7 +302,6 @@ static int sandbox_swap_case_write_io(struct udevice *dev, unsigned int addr,
> }
>
> static int pci_ea_bar2_magic = PCI_EA_BAR2_MAGIC;
> -static int pci_ea_bar4_magic = PCI_EA_BAR4_MAGIC;
>
> static int sandbox_swap_case_map_physmem(struct udevice *dev,
> phys_addr_t addr, unsigned long *lenp, void **ptrp)
> @@ -332,12 +331,22 @@ static int sandbox_swap_case_map_physmem(struct udevice *dev,
> *ptrp = &pci_ea_bar2_magic;
> *lenp = PCI_CAP_EA_SIZE_LO;
> break;
> +#ifdef CONFIG_HOST_64BIT
> + /*
> + * This cannot be work on a 32-bit machine since *lenp is ulong
> + * which is 32-bits, but it needs to have a 64-bit value
> + * assigned
> + */
> case (phys_addr_t)((PCI_CAP_EA_BASE_HI4 << 32) |
> - PCI_CAP_EA_BASE_LO4):
> + PCI_CAP_EA_BASE_LO4): {
> + static int pci_ea_bar4_magic = PCI_EA_BAR4_MAGIC;
> +
> *ptrp = &pci_ea_bar4_magic;
> *lenp = (PCI_CAP_EA_SIZE_HI << 32) |
> PCI_CAP_EA_SIZE_LO;
> break;
> + }
> +#endif
> default:
> return -ENOENT;
> }
>
More information about the U-Boot
mailing list