summaryrefslogtreecommitdiffstats
path: root/sys/arch
diff options
context:
space:
mode:
authormiod <miod@openbsd.org>2012-03-15 18:52:55 +0000
committermiod <miod@openbsd.org>2012-03-15 18:52:55 +0000
commitb15e547f0e79c7d4f23ccd40756384f1562255fc (patch)
treee6e903f925b78f1e98fca6229f58c3bb37fa0ec6 /sys/arch
parentAllow multiple backslashes at the start of a namespace path. It is pretty (diff)
downloadwireguard-openbsd-b15e547f0e79c7d4f23ccd40756384f1562255fc.tar.xz
wireguard-openbsd-b15e547f0e79c7d4f23ccd40756384f1562255fc.zip
No longer allow bus_space_barrier() to be a NULL pointer on a given
bus_space_tag on sgi, but rather always provide at least a dummy asm("sync") flavour. Saves a function pointer test at runtime.
Diffstat (limited to 'sys/arch')
-rw-r--r--sys/arch/sgi/include/bus.h7
-rw-r--r--sys/arch/sgi/localbus/macebus.c17
-rw-r--r--sys/arch/sgi/pci/macepcibridge.c17
-rw-r--r--sys/arch/sgi/xbow/xbow.c13
4 files changed, 37 insertions, 17 deletions
diff --git a/sys/arch/sgi/include/bus.h b/sys/arch/sgi/include/bus.h
index 11231ce7429..f43ef116773 100644
--- a/sys/arch/sgi/include/bus.h
+++ b/sys/arch/sgi/include/bus.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: bus.h,v 1.24 2010/08/23 16:56:15 miod Exp $ */
+/* $OpenBSD: bus.h,v 1.25 2012/03/15 18:52:55 miod Exp $ */
/*
* Copyright (c) 2003-2004 Opsycon AB Sweden. All rights reserved.
@@ -299,10 +299,7 @@ static __inline void
bus_space_barrier(bus_space_tag_t t, bus_space_handle_t h, bus_size_t offs,
bus_size_t len, int flags)
{
- if (t->_space_barrier != NULL)
- (*(t)->_space_barrier)(t, h, offs, len, flags);
- else
- __asm__ __volatile__ ("sync" ::: "memory");
+ (*(t)->_space_barrier)(t, h, offs, len, flags);
}
#define BUS_SPACE_BARRIER_READ 0x01 /* force read barrier */
diff --git a/sys/arch/sgi/localbus/macebus.c b/sys/arch/sgi/localbus/macebus.c
index 9ab9b0daf91..4ec6b54161c 100644
--- a/sys/arch/sgi/localbus/macebus.c
+++ b/sys/arch/sgi/localbus/macebus.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: macebus.c,v 1.58 2010/09/20 06:33:47 matthew Exp $ */
+/* $OpenBSD: macebus.c,v 1.59 2012/03/15 18:52:56 miod Exp $ */
/*
* Copyright (c) 2000-2004 Opsycon AB (www.opsycon.se)
@@ -95,6 +95,8 @@ int mace_space_region(bus_space_tag_t, bus_space_handle_t, bus_size_t,
bus_size_t, bus_space_handle_t *);
void *mace_space_vaddr(bus_space_tag_t, bus_space_handle_t);
+void mace_space_barrier(bus_space_tag_t, bus_space_handle_t, bus_size_t,
+ bus_size_t, int);
bus_addr_t macebus_pa_to_device(paddr_t);
paddr_t macebus_device_to_pa(bus_addr_t);
@@ -118,8 +120,7 @@ bus_space_t macebus_tag = {
mace_read_raw_4, mace_write_raw_4,
mace_read_raw_8, mace_write_raw_8,
mace_space_map, mace_space_unmap, mace_space_region,
- mace_space_vaddr,
- NULL
+ mace_space_vaddr, mace_space_barrier
};
bus_space_t crimebus_tag = {
@@ -133,8 +134,7 @@ bus_space_t crimebus_tag = {
mace_read_raw_4, mace_write_raw_4,
mace_read_raw_8, mace_write_raw_8,
mace_space_map, mace_space_unmap, mace_space_region,
- mace_space_vaddr,
- NULL
+ mace_space_vaddr, mace_space_barrier
};
bus_space_handle_t crime_h;
@@ -443,6 +443,13 @@ mace_space_vaddr(bus_space_tag_t t, bus_space_handle_t h)
return (void *)h;
}
+void
+mace_space_barrier(bus_space_tag_t t, bus_space_handle_t h, bus_size_t offs,
+ bus_size_t len, int flags)
+{
+ __asm__ __volatile__ ("sync" ::: "memory");
+}
+
/*
* Macebus bus_dma helpers.
* Mace accesses memory contiguously at 0x40000000 onwards.
diff --git a/sys/arch/sgi/pci/macepcibridge.c b/sys/arch/sgi/pci/macepcibridge.c
index fa9a1db45b0..df7e4444e94 100644
--- a/sys/arch/sgi/pci/macepcibridge.c
+++ b/sys/arch/sgi/pci/macepcibridge.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: macepcibridge.c,v 1.43 2011/10/10 19:49:16 miod Exp $ */
+/* $OpenBSD: macepcibridge.c,v 1.44 2012/03/15 18:52:56 miod Exp $ */
/*
* Copyright (c) 2009 Miodrag Vallat.
@@ -100,6 +100,8 @@ void *mace_pcibr_rbus_parent_io(struct pci_attach_args *);
void *mace_pcibr_rbus_parent_mem(struct pci_attach_args *);
void *mace_pcib_space_vaddr(bus_space_tag_t, bus_space_handle_t);
+void mace_pcib_space_barrier(bus_space_tag_t, bus_space_handle_t,
+ bus_size_t, bus_size_t, int);
bus_addr_t mace_pcibr_pa_to_device(paddr_t);
paddr_t mace_pcibr_device_to_pa(bus_addr_t);
@@ -133,8 +135,7 @@ bus_space_t mace_pcibbus_mem_tag = {
mace_pcib_read_raw_4, mace_pcib_write_raw_4,
mace_pcib_read_raw_8, mace_pcib_write_raw_8,
mace_pcib_space_map, mace_pcib_space_unmap, mace_pcib_space_region,
- mace_pcib_space_vaddr,
- NULL
+ mace_pcib_space_vaddr, mace_pcib_space_barrier
};
bus_space_t mace_pcibbus_io_tag = {
@@ -148,8 +149,7 @@ bus_space_t mace_pcibbus_io_tag = {
mace_pcib_read_raw_4, mace_pcib_write_raw_4,
mace_pcib_read_raw_8, mace_pcib_write_raw_8,
mace_pcib_space_map, mace_pcib_space_unmap, mace_pcib_space_region,
- mace_pcib_space_vaddr,
- NULL
+ mace_pcib_space_vaddr, mace_pcib_space_barrier
};
static const struct mips_pci_chipset mace_pci_chipset = {
@@ -699,6 +699,13 @@ mace_pcib_space_vaddr(bus_space_tag_t t, bus_space_handle_t h)
return (void *)h;
}
+void
+mace_pcib_space_barrier(bus_space_tag_t t, bus_space_handle_t h,
+ bus_size_t offs, bus_size_t len, int flags)
+{
+ __asm__ __volatile__ ("sync" ::: "memory");
+}
+
/*
* Mace PCI bus_dma helpers.
* The PCI bus accesses memory contiguously at 0x00000000 onwards.
diff --git a/sys/arch/sgi/xbow/xbow.c b/sys/arch/sgi/xbow/xbow.c
index 681b84c1d2f..d2d9e9f249d 100644
--- a/sys/arch/sgi/xbow/xbow.c
+++ b/sys/arch/sgi/xbow/xbow.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: xbow.c,v 1.32 2011/04/17 17:44:24 miod Exp $ */
+/* $OpenBSD: xbow.c,v 1.33 2012/03/15 18:52:57 miod Exp $ */
/*
* Copyright (c) 2008, 2009, 2011 Miodrag Vallat.
@@ -102,6 +102,8 @@ void xbow_space_unmap(bus_space_tag_t, bus_space_handle_t, bus_size_t);
int xbow_space_region(bus_space_tag_t, bus_space_handle_t, bus_size_t,
bus_size_t, bus_space_handle_t *);
void *xbow_space_vaddr(bus_space_tag_t, bus_space_handle_t);
+void xbow_space_barrier(bus_space_tag_t, bus_space_handle_t, bus_size_t,
+ bus_size_t, int);
const struct xbow_product *xbow_identify(uint32_t, uint32_t);
@@ -139,7 +141,7 @@ static const bus_space_t xbowbus_tag = {
xbow_space_unmap,
xbow_space_region,
xbow_space_vaddr,
- NULL
+ xbow_space_barrier
};
/*
@@ -635,6 +637,13 @@ xbow_space_vaddr(bus_space_tag_t t, bus_space_handle_t h)
return (void *)h;
}
+void
+xbow_space_barrier(bus_space_tag_t t, bus_space_handle_t h, bus_size_t offs,
+ bus_size_t len, int flags)
+{
+ __asm__ __volatile__ ("sync" ::: "memory");
+}
+
/*
* Interrupt handling code.
*