ECHO:/* $OpenBSD: busop_c.in,v 1.1 2003/02/17 01:29:20 henric Exp $ */ ECHO: ECHO:/* ECHO: * Copyright (c) 2003 Henric Jungheim ECHO: * All rights reserved. ECHO: * ECHO: * Redistribution and use in source and binary forms, with or without ECHO: * modification, are permitted provided that the following conditions ECHO: * are met: ECHO: * 1. Redistributions of source code must retain the above copyright ECHO: * notice, this list of conditions and the following disclaimer. ECHO: * 2. Redistributions in binary form must reproduce the above copyright ECHO: * notice, this list of conditions and the following disclaimer in the ECHO: * documentation and/or other materials provided with the distribution. ECHO: * 3. The name of the author may not be used to endorse or promote products ECHO: * derived from this software without specific prior written permission. ECHO: * ECHO: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR ECHO: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ECHO: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ECHO: * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, ECHO: * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ECHO: * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ECHO: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ECHO: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ECHO: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ECHO: * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ECHO: */ ECHO: ECHO:#include ECHO:#include ECHO:#include ECHO: ECHO:#include ECHO: void bus_space_read_multi_(bus_space_tag_t t, bus_space_handle_t h, bus_size_t o, NRAW: *a, bus_size_t c) RAW: void *a, size_t c) { *p = a; BUS_SPACE_ASSERT(t, h, o, ); BUS_SPACE_TRACE(t, h, ("bsrm(%llx + %llx, %x, %x) ->", (long long)h.bh_ptr, (long long)o, t->, c)); RAW: c /= sizeof(); ++c; /* Looping on "--c" is slightly faster than on "c--" */ asi_set(t->); while (--c > 0) { r = _asi(h.bh_ptr + o); BUS_SPACE_TRACE(t, h, (" ", r)); *p++ = r; } BUS_SPACE_TRACE(t, h, ("\n")); } void bus_space_write_multi_(bus_space_tag_t t, bus_space_handle_t h, bus_size_t o, NRAW: const *a, bus_size_t c) RAW: const void *a, size_t c) { const *p = a; BUS_SPACE_ASSERT(t, h, o, ); BUS_SPACE_TRACE(t, h, ("bswm(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr, (long long)o, t->, c)); RAW: c /= sizeof(); ++c; /* Looping on "--c" is slightly faster than on "c--" */ asi_set(t->); while (--c > 0) { r = *p++; BUS_SPACE_TRACE(t, h, (" ", r)); _asi(h.bh_ptr + o, r); } BUS_SPACE_TRACE(t, h, ("\n")); } void bus_space_set_multi_(bus_space_tag_t t, bus_space_handle_t h, bus_size_t o, v, NRAW: bus_size_t c) RAW: size_t c) { BUS_SPACE_ASSERT(t, h, o, ); BUS_SPACE_TRACE(t, h, ("bssm(%llx + %llx, %x, %x) <- \n", (long long)h.bh_ptr, (long long)o, t->, c, v)); RAW: c /= sizeof(); ++c; /* Looping on "--c" is slightly faster than on "c--" */ asi_set(t->); while (--c > 0) _asi(h.bh_ptr + o, v); } void bus_space_read_region_(bus_space_tag_t t, bus_space_handle_t h, bus_size_t o, NRAW: *a, bus_size_t c) RAW: void *a, size_t c) { *p = a; paddr_t ptr = h.bh_ptr + o; BUS_SPACE_ASSERT(t, h, o, ); BUS_SPACE_TRACE(t, h, ("bsrr(%llx + %llx, %x, %x) <- \n", (long long)h.bh_ptr, (long long)o, t->, c)); RAW: c /= sizeof(); asi_set(t->); for (; c; p++, c--, ptr += ) { r = _asi(ptr); BUS_SPACE_TRACE(t, h, (" ", r)); *p = r; } BUS_SPACE_TRACE(t, h, ("\n")); } void bus_space_write_region_(bus_space_tag_t t, bus_space_handle_t h, bus_size_t o, NRAW: const *a, bus_size_t c) RAW: const void *a, size_t c) { const *p = a; paddr_t ptr = h.bh_ptr + o; BUS_SPACE_ASSERT(t, h, o, ); BUS_SPACE_TRACE(t, h, ("bswr(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr, (long long)o, t->, c)); RAW: c /= sizeof(); asi_set(t->); for (; c; p++, c--, ptr += ) { r = *p; BUS_SPACE_TRACE(t, h, (" ", r)); _asi(ptr, r); } BUS_SPACE_TRACE(t, h, ("\n")); } void bus_space_set_region_(bus_space_tag_t t, bus_space_handle_t h, bus_size_t o, v, NRAW: bus_size_t c) RAW: size_t c) { paddr_t ptr = h.bh_ptr + o; BUS_SPACE_ASSERT(t, h, o, ); BUS_SPACE_TRACE(t, h, ("bssr(%llx + %llx, %x, %x) <- \n", (long long)h.bh_ptr, (long long)o, t->, c, v)); RAW: c /= sizeof(); asi_set(t->); for (; c; c--, ptr += ) _asi(ptr, v); } void bus_space_copy_region_(bus_space_tag_t t, bus_space_handle_t h1, bus_size_t o1, bus_space_handle_t h2, bus_size_t o2, NRAW: bus_size_t c) RAW: size_t c) { paddr_t ptr1 = h1.bh_ptr + o1; paddr_t ptr2 = h2.bh_ptr + o2; BUS_SPACE_ASSERT(t, h1, o2, ); BUS_SPACE_ASSERT(t, h2, o2, ); BUS_SPACE_TRACE(t, h1, ("bscr(%llx + %llx, %llx + %llx, %x, %x) <-> \n", (long long)h1.bh_ptr, (long long)o1, (long long)h2.bh_ptr, (long long)o2, t->, c)); RAW: c /= sizeof(); asi_set(t->); for (; c; c--, ptr1 += , ptr2 += ) { r = _asi(ptr2); BUS_SPACE_TRACE(t, h1, (" ", r)); _asi(ptr1, r); } BUS_SPACE_TRACE(t, h1, ("\n")); }