pci: pci bridge related clean up.
- fix bridge prefetchable memory accesser to check 64bit or not. - use pcibus_t consistently instead mixing pcibus_t and uint64_t. Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
10c9c329da
commit
d46636b883
18
hw/pci.c
18
hw/pci.c
@ -635,19 +635,23 @@ static uint32_t pci_config_get_io_base(PCIDevice *d,
|
|||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint64_t pci_config_get_memory_base(PCIDevice *d, uint32_t base)
|
static pcibus_t pci_config_get_memory_base(PCIDevice *d, uint32_t base)
|
||||||
{
|
{
|
||||||
return ((uint64_t)pci_get_word(d->config + base) & PCI_MEMORY_RANGE_MASK)
|
return ((pcibus_t)pci_get_word(d->config + base) & PCI_MEMORY_RANGE_MASK)
|
||||||
<< 16;
|
<< 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint64_t pci_config_get_pref_base(PCIDevice *d,
|
static pcibus_t pci_config_get_pref_base(PCIDevice *d,
|
||||||
uint32_t base, uint32_t upper)
|
uint32_t base, uint32_t upper)
|
||||||
{
|
{
|
||||||
uint64_t val;
|
pcibus_t tmp;
|
||||||
val = ((uint64_t)pci_get_word(d->config + base) &
|
pcibus_t val;
|
||||||
PCI_PREF_RANGE_MASK) << 16;
|
|
||||||
val |= (uint64_t)pci_get_long(d->config + upper) << 32;
|
tmp = (pcibus_t)pci_get_word(d->config + base);
|
||||||
|
val = (tmp & PCI_PREF_RANGE_MASK) << 16;
|
||||||
|
if (tmp & PCI_PREF_RANGE_TYPE_64) {
|
||||||
|
val |= (pcibus_t)pci_get_long(d->config + upper) << 32;
|
||||||
|
}
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
1
hw/pci.h
1
hw/pci.h
@ -131,6 +131,7 @@ typedef struct PCIIORegion {
|
|||||||
#define PCI_PREF_MEMORY_BASE 0x24 /* Prefetchable memory range behind */
|
#define PCI_PREF_MEMORY_BASE 0x24 /* Prefetchable memory range behind */
|
||||||
#define PCI_PREF_MEMORY_LIMIT 0x26
|
#define PCI_PREF_MEMORY_LIMIT 0x26
|
||||||
#define PCI_PREF_RANGE_MASK (~0x0fUL)
|
#define PCI_PREF_RANGE_MASK (~0x0fUL)
|
||||||
|
#define PCI_PREF_RANGE_TYPE_64 0x01
|
||||||
#define PCI_PREF_BASE_UPPER32 0x28 /* Upper half of prefetchable memory range */
|
#define PCI_PREF_BASE_UPPER32 0x28 /* Upper half of prefetchable memory range */
|
||||||
#define PCI_PREF_LIMIT_UPPER32 0x2c
|
#define PCI_PREF_LIMIT_UPPER32 0x2c
|
||||||
#define PCI_SUBSYSTEM_VENDOR_ID 0x2c /* 16 bits */
|
#define PCI_SUBSYSTEM_VENDOR_ID 0x2c /* 16 bits */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user