Make reading PCI registers work on big-endian platforms.

ok matthieu@
This commit is contained in:
kettenis 2006-12-12 20:32:36 +00:00
parent a6c76eaa1c
commit 74759e78c0
2 changed files with 8 additions and 7 deletions

View File

@ -1,10 +1,11 @@
# $OpenBSD: Makefile,v 1.1.1.1 2006/03/25 21:53:35 matthieu Exp $
# $OpenBSD: Makefile,v 1.2 2006/12/12 20:32:36 kettenis Exp $
NOT_FOR_ARCHS= sparc m68k m88k vax
COMMENT= "PCI bus configuration register access tools"
DISTNAME= pciutils-2.2.1
PKGNAME= ${DISTNAME}p0
CATEGORIES= sysutils
HOMEPAGE= http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml

View File

@ -1,6 +1,6 @@
$OpenBSD: patch-lib_obsd-device_c,v 1.1.1.1 2006/03/25 21:53:35 matthieu Exp $
--- lib/obsd-device.c.orig Wed Mar 22 22:59:36 2006
+++ lib/obsd-device.c Wed Mar 22 22:59:36 2006
$OpenBSD: patch-lib_obsd-device_c,v 1.2 2006/12/12 20:32:37 kettenis Exp $
--- lib/obsd-device.c.orig Wed Nov 22 20:07:11 2006
+++ lib/obsd-device.c Tue Dec 12 12:03:49 2006
@@ -0,0 +1,160 @@
+/*
+ * The PCI Library -- FreeBSD /dev/pci access
@ -96,13 +96,13 @@ $OpenBSD: patch-lib_obsd-device_c,v 1.1.1.1 2006/03/25 21:53:35 matthieu Exp $
+ switch (len)
+ {
+ case 1:
+ buf[0] = (u8) u.u8[pos % 4];
+ buf[0] = (u8) (pi.pi_data >> ((pos % 4) * 8));
+ break;
+ case 2:
+ ((u16 *) buf)[0] = letoh16(u.u16[(pos % 4) / 2]);
+ ((u16 *) buf)[0] = (u16) htole16(pi.pi_data >> ((pos % 4) * 8));
+ break;
+ case 4:
+ ((u32 *) buf)[0] = (u32) letoh32(pi.pi_data);
+ ((u32 *) buf)[0] = (u32) htole32(pi.pi_data);
+ break;
+ }
+ return 1;