static void
nbsd_config(struct pci_access *a)
{
- a->method_params[PCI_ACCESS_NBSD_LIBPCI] = PATH_NBSD_DEVICE;
+ a->method_params[PCI_ACCESS_NBSD_LIBPCI] = PCI_PATH_NBSD_DEVICE;
}
static int
if (!(len == 1 || len == 2 || len == 4))
return pci_generic_block_read(d, pos, buf, len);
+ if (pos >= 256)
+ return 0;
+
shift = 8*(pos % 4);
pos &= ~3;
if (!(len == 1 || len == 2 || len == 4))
return pci_generic_block_write(d, pos, buf, len);
+ if (pos >= 256)
+ return 0;
+
/*
* BEWARE: NetBSD seems to support only 32-bit access, so we have
* to emulate byte and word writes by read-modify-write, possibly
*/
shift = 8*(pos % 4);
- pos &= 3;
+ pos &= ~3;
if (len != 4)
{
if (pcibus_conf_read(d->access->fd, d->bus, d->dev, d->func, pos, &val) < 0)
switch (len)
{
case 1:
- val = (val & ~(0xff << shift)) | buf[0];
+ val = (val & ~(0xff << shift)) | (buf[0] << shift);
break;
case 2:
- val = (val & ~(0xffff << shift)) | le16_to_cpu(*(u16*)buf);
+ val = (val & ~(0xffff << shift)) | (le16_to_cpu(*(u16*)buf) << shift);
break;
case 4:
val = le32_to_cpu(*(u32*)buf);