diff --git a/sys/alpha/include/bus.h b/sys/alpha/include/bus.h index 7fe2726736a..1810c4b5306 100644 --- a/sys/alpha/include/bus.h +++ b/sys/alpha/include/bus.h @@ -364,6 +364,18 @@ void busspace_generic_barrier(struct alpha_busspace *space, #define bus_space_barrier(t, h, o, l, f) \ (t)->ab_ops->abo_barrier(t, (h)+(o), l, f) +#define barrier_read \ + bus_space_barrier(busspace_isa_mem, 0, BUS_SPACE_UNRESTRICTED, \ + BUS_SPACE_BARRIER_READ) + +#define barrier_write \ + bus_space_barrier(busspace_isa_mem, 0, BUS_SPACE_UNRESTRICTED, \ + BUS_SPACE_BARRIER_WRITE) + +#define barrier_rw \ + bus_space_barrier(busspace_isa_mem, 0, BUS_SPACE_UNRESTRICTED, \ + BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE) + /* * Flags used in various bus DMA methods. */ diff --git a/sys/amd64/include/bus_amd64.h b/sys/amd64/include/bus_amd64.h index 2d84400e8bd..3423e6b1ad4 100644 --- a/sys/amd64/include/bus_amd64.h +++ b/sys/amd64/include/bus_amd64.h @@ -1153,6 +1153,29 @@ bus_space_barrier(bus_space_tag_t tag, bus_space_handle_t bsh, } +/* + * Generic memory barrier functions. + */ +static __inline void +barrier_read(void) +{ + bus_space_barrier(I386_BUS_SPACE_MEM, 0, 0, ~0, BUS_SPACE_BARRIER_READ); +} + +static __inline void +barrier_write(void) +{ + bus_space_barrier(I386_BUS_SPACE_MEM, 0, 0, ~0, + BUS_SPACE_BARRIER_WRITE); +} + +static __inline void +barrier_rw(void) +{ + bus_space_barrier(I386_BUS_SPACE_MEM, 0, 0, ~0, + BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE); +} + /* * Flags used in various bus DMA methods. */ diff --git a/sys/amd64/include/bus_at386.h b/sys/amd64/include/bus_at386.h index 2d84400e8bd..3423e6b1ad4 100644 --- a/sys/amd64/include/bus_at386.h +++ b/sys/amd64/include/bus_at386.h @@ -1153,6 +1153,29 @@ bus_space_barrier(bus_space_tag_t tag, bus_space_handle_t bsh, } +/* + * Generic memory barrier functions. + */ +static __inline void +barrier_read(void) +{ + bus_space_barrier(I386_BUS_SPACE_MEM, 0, 0, ~0, BUS_SPACE_BARRIER_READ); +} + +static __inline void +barrier_write(void) +{ + bus_space_barrier(I386_BUS_SPACE_MEM, 0, 0, ~0, + BUS_SPACE_BARRIER_WRITE); +} + +static __inline void +barrier_rw(void) +{ + bus_space_barrier(I386_BUS_SPACE_MEM, 0, 0, ~0, + BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE); +} + /* * Flags used in various bus DMA methods. */ diff --git a/sys/amd64/include/bus_dma.h b/sys/amd64/include/bus_dma.h index 2d84400e8bd..3423e6b1ad4 100644 --- a/sys/amd64/include/bus_dma.h +++ b/sys/amd64/include/bus_dma.h @@ -1153,6 +1153,29 @@ bus_space_barrier(bus_space_tag_t tag, bus_space_handle_t bsh, } +/* + * Generic memory barrier functions. + */ +static __inline void +barrier_read(void) +{ + bus_space_barrier(I386_BUS_SPACE_MEM, 0, 0, ~0, BUS_SPACE_BARRIER_READ); +} + +static __inline void +barrier_write(void) +{ + bus_space_barrier(I386_BUS_SPACE_MEM, 0, 0, ~0, + BUS_SPACE_BARRIER_WRITE); +} + +static __inline void +barrier_rw(void) +{ + bus_space_barrier(I386_BUS_SPACE_MEM, 0, 0, ~0, + BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE); +} + /* * Flags used in various bus DMA methods. */ diff --git a/sys/i386/include/bus_at386.h b/sys/i386/include/bus_at386.h index 2d84400e8bd..3423e6b1ad4 100644 --- a/sys/i386/include/bus_at386.h +++ b/sys/i386/include/bus_at386.h @@ -1153,6 +1153,29 @@ bus_space_barrier(bus_space_tag_t tag, bus_space_handle_t bsh, } +/* + * Generic memory barrier functions. + */ +static __inline void +barrier_read(void) +{ + bus_space_barrier(I386_BUS_SPACE_MEM, 0, 0, ~0, BUS_SPACE_BARRIER_READ); +} + +static __inline void +barrier_write(void) +{ + bus_space_barrier(I386_BUS_SPACE_MEM, 0, 0, ~0, + BUS_SPACE_BARRIER_WRITE); +} + +static __inline void +barrier_rw(void) +{ + bus_space_barrier(I386_BUS_SPACE_MEM, 0, 0, ~0, + BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE); +} + /* * Flags used in various bus DMA methods. */ diff --git a/sys/i386/include/bus_dma.h b/sys/i386/include/bus_dma.h index 2d84400e8bd..3423e6b1ad4 100644 --- a/sys/i386/include/bus_dma.h +++ b/sys/i386/include/bus_dma.h @@ -1153,6 +1153,29 @@ bus_space_barrier(bus_space_tag_t tag, bus_space_handle_t bsh, } +/* + * Generic memory barrier functions. + */ +static __inline void +barrier_read(void) +{ + bus_space_barrier(I386_BUS_SPACE_MEM, 0, 0, ~0, BUS_SPACE_BARRIER_READ); +} + +static __inline void +barrier_write(void) +{ + bus_space_barrier(I386_BUS_SPACE_MEM, 0, 0, ~0, + BUS_SPACE_BARRIER_WRITE); +} + +static __inline void +barrier_rw(void) +{ + bus_space_barrier(I386_BUS_SPACE_MEM, 0, 0, ~0, + BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE); +} + /* * Flags used in various bus DMA methods. */ diff --git a/sys/i386/include/bus_pc98.h b/sys/i386/include/bus_pc98.h index c18029d791b..fef8b865f59 100644 --- a/sys/i386/include/bus_pc98.h +++ b/sys/i386/include/bus_pc98.h @@ -1455,6 +1455,29 @@ bus_space_barrier(bus_space_tag_t tag, bus_space_handle_t bsh, } +/* + * Generic memory barrier functions. + */ +static __inline void +barrier_read(void) +{ + bus_space_barrier(I386_BUS_SPACE_MEM, 0, 0, ~0, BUS_SPACE_BARRIER_READ); +} + +static __inline void +barrier_write(void) +{ + bus_space_barrier(I386_BUS_SPACE_MEM, 0, 0, ~0, + BUS_SPACE_BARRIER_WRITE); +} + +static __inline void +barrier_rw(void) +{ + bus_space_barrier(I386_BUS_SPACE_MEM, 0, 0, ~0, + BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE); +} + /* * Flags used in various bus DMA methods. */ diff --git a/sys/ia64/include/bus.h b/sys/ia64/include/bus.h index c05419317a5..9bb2f76ad78 100644 --- a/sys/ia64/include/bus.h +++ b/sys/ia64/include/bus.h @@ -1023,6 +1023,28 @@ bus_space_barrier(bus_space_tag_t tag, bus_space_handle_t bsh, ia64_mf(); } +/* + * Generic memory barrier functions. + */ +static __inline void +barrier_read(void) +{ + bus_space_barrier(IA64_BUS_SPACE_MEM, 0, 0, ~0, BUS_SPACE_BARRIER_READ); +} + +static __inline void +barrier_write(void) +{ + bus_space_barrier(IA64_BUS_SPACE_MEM, 0, 0, ~0, + BUS_SPACE_BARRIER_WRITE); +} + +static __inline void +barrier_rw(void) +{ + bus_space_barrier(IA64_BUS_SPACE_MEM, 0, 0, ~0, + BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE); +} /* * Flags used in various bus DMA methods. diff --git a/sys/sys/bus_dma.h b/sys/sys/bus_dma.h index 2d84400e8bd..3423e6b1ad4 100644 --- a/sys/sys/bus_dma.h +++ b/sys/sys/bus_dma.h @@ -1153,6 +1153,29 @@ bus_space_barrier(bus_space_tag_t tag, bus_space_handle_t bsh, } +/* + * Generic memory barrier functions. + */ +static __inline void +barrier_read(void) +{ + bus_space_barrier(I386_BUS_SPACE_MEM, 0, 0, ~0, BUS_SPACE_BARRIER_READ); +} + +static __inline void +barrier_write(void) +{ + bus_space_barrier(I386_BUS_SPACE_MEM, 0, 0, ~0, + BUS_SPACE_BARRIER_WRITE); +} + +static __inline void +barrier_rw(void) +{ + bus_space_barrier(I386_BUS_SPACE_MEM, 0, 0, ~0, + BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE); +} + /* * Flags used in various bus DMA methods. */