diff options
author | 2012-03-15 18:52:55 +0000 | |
---|---|---|
committer | 2012-03-15 18:52:55 +0000 | |
commit | b15e547f0e79c7d4f23ccd40756384f1562255fc (patch) | |
tree | e6e903f925b78f1e98fca6229f58c3bb37fa0ec6 /sys/arch | |
parent | Allow multiple backslashes at the start of a namespace path. It is pretty (diff) | |
download | wireguard-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.h | 7 | ||||
-rw-r--r-- | sys/arch/sgi/localbus/macebus.c | 17 | ||||
-rw-r--r-- | sys/arch/sgi/pci/macepcibridge.c | 17 | ||||
-rw-r--r-- | sys/arch/sgi/xbow/xbow.c | 13 |
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. * |