Add in a simple API for memory barriers to machine/bus.h:

- barrier_read() enforces a memory read barrier
- barrier_write() enforces a memory write barrier
- barrier_rw() enforces a memory read/write barrier
This commit is contained in:
John Baldwin 2000-10-18 10:30:12 +00:00
parent b8493884df
commit 25f3f7c530
9 changed files with 195 additions and 0 deletions

View File

@ -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.
*/

View File

@ -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.
*/

View File

@ -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.
*/

View File

@ -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.
*/

View File

@ -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.
*/

View File

@ -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.
*/

View File

@ -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.
*/

View File

@ -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.

View File

@ -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.
*/