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:
parent
b8493884df
commit
25f3f7c530
|
@ -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.
|
||||
*/
|
||||
|
|
|
@ -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.
|
||||
*/
|
||||
|
|
|
@ -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.
|
||||
*/
|
||||
|
|
|
@ -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.
|
||||
*/
|
||||
|
|
|
@ -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.
|
||||
*/
|
||||
|
|
|
@ -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.
|
||||
*/
|
||||
|
|
|
@ -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.
|
||||
*/
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue