diff options
author | jimharris <jimharris@FreeBSD.org> | 2012-12-13 21:27:20 +0000 |
---|---|---|
committer | jimharris <jimharris@FreeBSD.org> | 2012-12-13 21:27:20 +0000 |
commit | 5e7d94235a64f85da6072462c6458acd8210728f (patch) | |
tree | 7339db7b5a9de8265372d3727f1ba433c77ee7c4 | |
parent | c032abecc8b5813f2f21c7db4c03bac389b65344 (diff) | |
download | FreeBSD-src-5e7d94235a64f85da6072462c6458acd8210728f.zip FreeBSD-src-5e7d94235a64f85da6072462c6458acd8210728f.tar.gz |
Revert r243960 based on feedback regarding keeping x86 headers unified
(mdf@, tijl@) and use of KASSERT/systm.h in bus.h (zeising@, bde@).
Alternate implementation will be made in a separate commit.
-rw-r--r-- | sys/amd64/include/bus.h | 151 | ||||
-rw-r--r-- | sys/i386/include/bus.h | 22 | ||||
-rw-r--r-- | sys/x86/include/bus.h | 38 |
3 files changed, 40 insertions, 171 deletions
diff --git a/sys/amd64/include/bus.h b/sys/amd64/include/bus.h index 7594eb4..f1af2cf 100644 --- a/sys/amd64/include/bus.h +++ b/sys/amd64/include/bus.h @@ -1,153 +1,6 @@ /*- - * Copyright (c) 2012 Intel Corporation - * Copyright (c) 2009 Marcel Moolenaar - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ + * This file is in the public domain. */ +/* $FreeBSD$ */ -#ifndef _MACHINE_BUS_H_ -#define _MACHINE_BUS_H_ - -#include <sys/systm.h> #include <x86/bus.h> - -#define KASSERT_BUS_SPACE_MEM_ONLY(tag) \ - KASSERT((tag) == X86_BUS_SPACE_MEM, \ - ("%s: can only handle mem space", __func__)) - -static __inline uint64_t -bus_space_read_8(bus_space_tag_t tag, bus_space_handle_t bsh, - bus_size_t ofs) -{ - - KASSERT_BUS_SPACE_MEM_ONLY(tag); - - return (*(volatile uint64_t *)(bsh + ofs)); -} - -static __inline void -bus_space_write_8(bus_space_tag_t tag, bus_space_handle_t bsh, - bus_size_t ofs, uint64_t val) -{ - - KASSERT_BUS_SPACE_MEM_ONLY(tag); - - *(volatile uint64_t *)(bsh + ofs) = val; -} - -static __inline void -bus_space_read_region_8(bus_space_tag_t tag, bus_space_handle_t bsh, - bus_size_t ofs, uint64_t *bufp, size_t count) -{ - volatile uint64_t *bsp; - - KASSERT_BUS_SPACE_MEM_ONLY(tag); - - bsp = (void *)(bsh + ofs); - while (count-- > 0) - *bufp++ = *bsp++; -} - -static __inline void -bus_space_write_region_8(bus_space_tag_t tag, bus_space_handle_t bsh, - bus_size_t ofs, uint64_t const *bufp, size_t count) -{ - volatile uint64_t *bsp; - - KASSERT_BUS_SPACE_MEM_ONLY(tag); - - bsp = (void *)(bsh + ofs); - while (count-- > 0) - *bsp++ = *bufp++; -} - -static __inline void -bus_space_set_region_8(bus_space_tag_t tag, bus_space_handle_t bsh, - bus_size_t ofs, uint64_t val, size_t count) -{ - volatile uint64_t *bsp; - - KASSERT_BUS_SPACE_MEM_ONLY(tag); - - bsp = (void *)(bsh + ofs); - while (count-- > 0) - *bsp++ = val; -} - -static __inline void -bus_space_copy_region_8(bus_space_tag_t tag, bus_space_handle_t sbsh, - bus_size_t sofs, bus_space_handle_t dbsh, bus_size_t dofs, size_t count) -{ - volatile uint64_t *dst, *src; - - KASSERT_BUS_SPACE_MEM_ONLY(tag); - - src = (void *)(sbsh + sofs); - dst = (void *)(dbsh + dofs); - if (src < dst) { - src += count - 1; - dst += count - 1; - while (count-- > 0) - *dst-- = *src--; - } else { - while (count-- > 0) - *dst++ = *src++; - } -} - -static __inline void -bus_space_read_multi_8(bus_space_tag_t tag, bus_space_handle_t bsh, - bus_size_t ofs, uint64_t *bufp, size_t count) -{ - - KASSERT_BUS_SPACE_MEM_ONLY(tag); - - while (count-- > 0) - *bufp++ = *(volatile uint64_t *)(bsh + ofs); -} - -static __inline void -bus_space_write_multi_8(bus_space_tag_t tag, bus_space_handle_t bsh, - bus_size_t ofs, uint64_t const *bufp, size_t count) -{ - - KASSERT_BUS_SPACE_MEM_ONLY(tag); - - while (count-- > 0) - *(volatile uint64_t *)(bsh + ofs) = *bufp++; -} - -static __inline void -bus_space_set_multi_8(bus_space_tag_t tag, bus_space_handle_t bsh, - bus_size_t ofs, uint64_t val, size_t count) -{ - - KASSERT_BUS_SPACE_MEM_ONLY(tag); - - while (count-- > 0) - *(volatile uint64_t *)(bsh + ofs) = val; -} - -#endif /*_MACHINE_BUS_H_*/ diff --git a/sys/i386/include/bus.h b/sys/i386/include/bus.h index 6d6d36f..f1af2cf 100644 --- a/sys/i386/include/bus.h +++ b/sys/i386/include/bus.h @@ -3,26 +3,4 @@ */ /* $FreeBSD$ */ -#ifndef _MACHINE_BUS_H_ -#define _MACHINE_BUS_H_ - #include <x86/bus.h> - -/* - * The functions: - * bus_space_read_8 - * bus_space_read_region_8 - * bus_space_write_8 - * bus_space_write_multi_8 - * bus_space_write_region_8 - * bus_space_set_multi_8 - * bus_space_set_region_8 - * bus_space_copy_region_8 - * bus_space_read_multi_8 - * are unimplemented for i386 because there is no way to do a 64-bit move in - * this architecture. It is possible to do two 32-bit moves, but this is - * not atomic and may have hardware dependencies that should be fully - * understood. - */ - -#endif /*_MACHINE_BUS_H_*/ diff --git a/sys/x86/include/bus.h b/sys/x86/include/bus.h index f4369d9..fb5babf 100644 --- a/sys/x86/include/bus.h +++ b/sys/x86/include/bus.h @@ -251,6 +251,10 @@ bus_space_read_4(bus_space_tag_t tag, bus_space_handle_t handle, return (*(volatile u_int32_t *)(handle + offset)); } +#if 0 /* Cause a link error for bus_space_read_8 */ +#define bus_space_read_8(t, h, o) !!! bus_space_read_8 unimplemented !!! +#endif + /* * Read `count' 1, 2, 4, or 8 byte quantities from bus space * described by tag/handle/offset and copy into buffer provided. @@ -333,6 +337,10 @@ bus_space_read_multi_4(bus_space_tag_t tag, bus_space_handle_t bsh, } } +#if 0 /* Cause a link error for bus_space_read_multi_8 */ +#define bus_space_read_multi_8 !!! bus_space_read_multi_8 unimplemented !!! +#endif + /* * Read `count' 1, 2, 4, or 8 byte quantities from bus space * described by tag/handle and starting at `offset' and copy into @@ -450,6 +458,10 @@ bus_space_read_region_4(bus_space_tag_t tag, bus_space_handle_t bsh, } } +#if 0 /* Cause a link error for bus_space_read_region_8 */ +#define bus_space_read_region_8 !!! bus_space_read_region_8 unimplemented !!! +#endif + /* * Write the 1, 2, 4, or 8 byte value `value' to bus space * described by tag/handle/offset. @@ -500,6 +512,10 @@ bus_space_write_4(bus_space_tag_t tag, bus_space_handle_t bsh, *(volatile u_int32_t *)(bsh + offset) = value; } +#if 0 /* Cause a link error for bus_space_write_8 */ +#define bus_space_write_8 !!! bus_space_write_8 not implemented !!! +#endif + /* * Write `count' 1, 2, 4, or 8 byte quantities from the buffer * provided to bus space described by tag/handle/offset. @@ -585,6 +601,11 @@ bus_space_write_multi_4(bus_space_tag_t tag, bus_space_handle_t bsh, } } +#if 0 /* Cause a link error for bus_space_write_multi_8 */ +#define bus_space_write_multi_8(t, h, o, a, c) \ + !!! bus_space_write_multi_8 unimplemented !!! +#endif + /* * Write `count' 1, 2, 4, or 8 byte quantities from the buffer provided * to bus space described by tag/handle starting at `offset'. @@ -702,6 +723,11 @@ bus_space_write_region_4(bus_space_tag_t tag, bus_space_handle_t bsh, } } +#if 0 /* Cause a link error for bus_space_write_region_8 */ +#define bus_space_write_region_8 \ + !!! bus_space_write_region_8 unimplemented !!! +#endif + /* * Write the 1, 2, 4, or 8 byte value `val' to bus space described * by tag/handle/offset `count' times. @@ -762,6 +788,10 @@ bus_space_set_multi_4(bus_space_tag_t tag, bus_space_handle_t bsh, *(volatile u_int32_t *)(addr) = value; } +#if 0 /* Cause a link error for bus_space_set_multi_8 */ +#define bus_space_set_multi_8 !!! bus_space_set_multi_8 unimplemented !!! +#endif + /* * Write `count' 1, 2, 4, or 8 byte value `val' to bus space described * by tag/handle starting at `offset'. @@ -822,6 +852,10 @@ bus_space_set_region_4(bus_space_tag_t tag, bus_space_handle_t bsh, *(volatile u_int32_t *)(addr) = value; } +#if 0 /* Cause a link error for bus_space_set_region_8 */ +#define bus_space_set_region_8 !!! bus_space_set_region_8 unimplemented !!! +#endif + /* * Copy `count' 1, 2, 4, or 8 byte values from bus space starting * at tag/bsh1/off1 to bus space starting at tag/bsh2/off2. @@ -950,6 +984,10 @@ bus_space_copy_region_4(bus_space_tag_t tag, bus_space_handle_t bsh1, } } +#if 0 /* Cause a link error for bus_space_copy_8 */ +#define bus_space_copy_region_8 !!! bus_space_copy_region_8 unimplemented !!! +#endif + /* * Bus read/write barrier methods. * |