提交 05a7cabf 编写于 作者: S Simon Glass 提交者: Tom Rini

pci: swap_case: Allow compilation on 32-bit machines

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.

This makes things work correctly on 32-bit machines.
Signed-off-by: NSimon Glass <sjg@chromium.org>
上级 bbcacdf4
......@@ -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;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册