summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMartin Mares <mj@ucw.cz>1999-02-28 20:23:05 +0000
committerMartin Mares <mj@ucw.cz>2006-05-05 14:10:05 +0200
commitf3395cc50b6d4b1a6d7be7b9e0e775268341e659 (patch)
treea1bce3125d875d868f80e014054a13f4143cae05 /lib
parent1c31d620ede1b47e3113aefa4e4b66d3191b166a (diff)
downloadpciutils-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-xlib/configure2
-rw-r--r--lib/generic.c6
-rw-r--r--lib/pci.h15
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)
{
diff --git a/lib/pci.h b/lib/pci.h
index 71154df..da01896 100644
--- a/lib/pci.h
+++ b/lib/pci.h
@@ -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);