diff options
| author | Doug Rabson <dfr@FreeBSD.org> | 2000-02-12 14:57:01 +0000 |
|---|---|---|
| committer | Doug Rabson <dfr@FreeBSD.org> | 2000-02-12 14:57:01 +0000 |
| commit | eb06360f04a96fb0010bd0b774f305693bc2040d (patch) | |
| tree | 358fde6b3a41cda68958a9c57ede7e4f3a8a7e43 /lib/libio | |
| parent | 83f1e257e02a6766b65484799ad21d82c4a5c4da (diff) | |
Notes
Diffstat (limited to 'lib/libio')
| -rw-r--r-- | lib/libio/bwx.c | 6 | ||||
| -rw-r--r-- | lib/libio/io.c | 25 |
2 files changed, 26 insertions, 5 deletions
diff --git a/lib/libio/bwx.c b/lib/libio/bwx.c index bc3bbb31d629..dede88184801 100644 --- a/lib/libio/bwx.c +++ b/lib/libio/bwx.c @@ -206,21 +206,21 @@ static void bwx_writeb(void *handle, u_int32_t offset, u_int8_t val) { struct bwx_mem_handle *h = handle; - stb((vm_offset_t)h->virt1 + offset, val); + stb_nb((vm_offset_t)h->virt1 + offset, val); } static void bwx_writew(void *handle, u_int32_t offset, u_int16_t val) { struct bwx_mem_handle *h = handle; - stw((vm_offset_t)h->virt2 + offset, val); + stw_nb((vm_offset_t)h->virt2 + offset, val); } static void bwx_writel(void *handle, u_int32_t offset, u_int32_t val) { struct bwx_mem_handle *h = handle; - stl((vm_offset_t)h->virt4 + offset, val); + stl_nb((vm_offset_t)h->virt4 + offset, val); } struct io_ops bwx_io_ops = { diff --git a/lib/libio/io.c b/lib/libio/io.c index 7abfa36f6ff2..3ccce2e4b32a 100644 --- a/lib/libio/io.c +++ b/lib/libio/io.c @@ -119,18 +119,39 @@ readl(void *handle, u_int32_t offset) void writeb(void *handle, u_int32_t offset, u_int8_t val) { - return ops->writeb(handle, offset, val); + ops->writeb(handle, offset, val); + __asm__ __volatile__ ("mb"); } void writew(void *handle, u_int32_t offset, u_int16_t val) { - return ops->writew(handle, offset, val); + ops->writew(handle, offset, val); + __asm__ __volatile__ ("mb"); } void writel(void *handle, u_int32_t offset, u_int32_t val) { + ops->writel(handle, offset, val); + __asm__ __volatile__ ("mb"); +} + +void +writeb_nb(void *handle, u_int32_t offset, u_int8_t val) +{ + return ops->writeb(handle, offset, val); +} + +void +writew_nb(void *handle, u_int32_t offset, u_int16_t val) +{ + return ops->writew(handle, offset, val); +} + +void +writel_nb(void *handle, u_int32_t offset, u_int32_t val) +{ return ops->writel(handle, offset, val); } |
