diff options
author | Martin Mares <mj@ucw.cz> | 1999-02-28 20:23:05 +0000 |
---|---|---|
committer | Martin Mares <mj@ucw.cz> | 2006-05-05 14:10:05 +0200 |
commit | f3395cc50b6d4b1a6d7be7b9e0e775268341e659 (patch) | |
tree | a1bce3125d875d868f80e014054a13f4143cae05 /lib | |
parent | 1c31d620ede1b47e3113aefa4e4b66d3191b166a (diff) | |
download | pciutils-f3395cc50b6d4b1a6d7be7b9e0e775268341e659.tar.gz |
o Don't assume unsigned long to be 64-bit on 64-bit platforms. Introduced
pciaddr_t which is an integer type capable of holding a PCI address.
Can anyone with an Ultra test it?
o lspci scan mode: Don't dump functions 1--7 when scanning a real
multi-function device. (Several devices don't decode function bits at all).
o Few pci.ids additions.
Diffstat (limited to 'lib')
-rwxr-xr-x | lib/configure | 2 | ||||
-rw-r--r-- | lib/generic.c | 6 | ||||
-rw-r--r-- | lib/pci.h | 15 |
3 files changed, 16 insertions, 7 deletions
diff --git a/lib/configure b/lib/configure index eb72fb1..1858269 100755 --- a/lib/configure +++ b/lib/configure @@ -31,7 +31,7 @@ case $cpu in echo >>$c '#define HAVE_PM_SYSCALLS' ok=1 ;; - alpha|sparc64) echo >>$c '#define HAVE_64BIT_LONG_INT' + alpha|sparc64) echo >>$c '#define HAVE_64BIT_ADDRESS' # echo -n " syscalls" # echo >>$c '#define HAVE_PM_SYSCALLS' # ok=1 diff --git a/lib/generic.c b/lib/generic.c index b586c95..daecb54 100644 --- a/lib/generic.c +++ b/lib/generic.c @@ -1,5 +1,5 @@ /* - * $Id: generic.c,v 1.3 1999/01/27 14:53:03 mj Exp $ + * $Id: generic.c,v 1.4 1999/02/28 20:23:10 mj Exp $ * * The PCI Library -- Generic Direct Access Functions * @@ -127,8 +127,8 @@ pci_generic_fill_info(struct pci_dev *d, int flags) else { u32 y = pci_read_long(d, PCI_BASE_ADDRESS_0 + (++i)*4); -#ifdef HAVE_64BIT_LONG_INT - d->base_addr[i-1] |= ((unsigned long) y) << 32; +#ifdef HAVE_64BIT_ADDRESS + d->base_addr[i-1] |= ((pciaddr_t) y) << 32; #else if (y) { @@ -1,5 +1,5 @@ /* - * $Id: pci.h,v 1.2 1999/01/24 21:35:36 mj Exp $ + * $Id: pci.h,v 1.3 1999/02/28 20:23:11 mj Exp $ * * The PCI Library * @@ -31,6 +31,12 @@ typedef __u16 word; typedef __u16 u16; typedef __u32 u32; +#ifdef HAVE_64BIT_ADDRESS +typedef unsigned long long pciaddr_t; +#else +typedef unsigned long pciaddr_t; +#endif + /* * PCI Access Structure */ @@ -94,8 +100,8 @@ struct pci_dev { /* These fields are set by pci_fill_info() */ word vendor_id, device_id; /* Identity of the device */ int irq; /* IRQ number */ - unsigned long base_addr[6]; /* Base addresses */ - unsigned long rom_base_addr; /* Expansion ROM base address */ + pciaddr_t base_addr[6]; /* Base addresses */ + pciaddr_t rom_base_addr; /* Expansion ROM base address */ /* Fields used internally: */ struct pci_access *access; @@ -107,6 +113,9 @@ struct pci_dev { void *aux; /* Auxillary data */ }; +#define PCI_ADDR_IO_MASK (~(pciaddr_t) 0x3) +#define PCI_ADDR_MEM_MASK (~(pciaddr_t) 0xf) + byte pci_read_byte(struct pci_dev *, int pos); /* Access to configuration space */ word pci_read_word(struct pci_dev *, int pos); u32 pci_read_long(struct pci_dev *, int pos); |