[BACK]Return to busop_c.in CVS log [TXT][DIR] Up to [local] / sys / arch / sparc64 / sparc64

Annotation of sys/arch/sparc64/sparc64/busop_c.in, Revision 1.1

1.1     ! nbrk        1: ECHO:/*      $OpenBSD: busop_c.in,v 1.1 2003/02/17 01:29:20 henric Exp $   */
        !             2: ECHO:
        !             3: ECHO:/*
        !             4: ECHO: * Copyright (c) 2003 Henric Jungheim
        !             5: ECHO: * All rights reserved.
        !             6: ECHO: *
        !             7: ECHO: * Redistribution and use in source and binary forms, with or without
        !             8: ECHO: * modification, are permitted provided that the following conditions
        !             9: ECHO: * are met:
        !            10: ECHO: * 1. Redistributions of source code must retain the above copyright
        !            11: ECHO: *    notice, this list of conditions and the following disclaimer.
        !            12: ECHO: * 2. Redistributions in binary form must reproduce the above copyright
        !            13: ECHO: *    notice, this list of conditions and the following disclaimer in the
        !            14: ECHO: *    documentation and/or other materials provided with the distribution.
        !            15: ECHO: * 3. The name of the author may not be used to endorse or promote products
        !            16: ECHO: *    derived from this software without specific prior written permission.
        !            17: ECHO: *
        !            18: ECHO: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
        !            19: ECHO: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
        !            20: ECHO: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
        !            21: ECHO: * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
        !            22: ECHO: * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
        !            23: ECHO: * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
        !            24: ECHO: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
        !            25: ECHO: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
        !            26: ECHO: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
        !            27: ECHO: * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        !            28: ECHO: */
        !            29: ECHO:
        !            30: ECHO:#include <sys/param.h>
        !            31: ECHO:#include <sys/systm.h>
        !            32: ECHO:#include <sys/kernel.h>
        !            33: ECHO:
        !            34: ECHO:#include <machine/bus.h>
        !            35: ECHO:
        !            36:
        !            37: void
        !            38: bus_space_read_<RAW>multi_<NUM>(bus_space_tag_t t, bus_space_handle_t h,
        !            39:     bus_size_t o,
        !            40: NRAW:    <TYPE> *a, bus_size_t c)
        !            41: RAW:    void *a, size_t c)
        !            42: {
        !            43:        <TYPE> *p = a;
        !            44:
        !            45:        BUS_SPACE_ASSERT(t, h, o, <NUM>);
        !            46:        BUS_SPACE_TRACE(t, h,
        !            47:            ("bsrm<NUM>(%llx + %llx, %x, %x) ->", (long long)h.bh_ptr,
        !            48:            (long long)o, t-><ASI>, c));
        !            49: RAW:   c /= sizeof(<TYPE>);
        !            50:
        !            51:        ++c;  /* Looping on "--c" is slightly faster than on "c--" */
        !            52:        asi_set(t-><ASI>);
        !            53:        while (--c > 0) {
        !            54:                <TYPE> r = <LOAD>_asi(h.bh_ptr + o);
        !            55:                BUS_SPACE_TRACE(t, h, (" <FMT>", r));
        !            56:                *p++ = r;
        !            57:        }
        !            58:
        !            59:        BUS_SPACE_TRACE(t, h, ("\n"));
        !            60: }
        !            61:
        !            62: void
        !            63: bus_space_write_<RAW>multi_<NUM>(bus_space_tag_t t, bus_space_handle_t h,
        !            64:     bus_size_t o,
        !            65: NRAW:    const <TYPE> *a, bus_size_t c)
        !            66: RAW:    const void *a, size_t c)
        !            67: {
        !            68:        const <TYPE> *p = a;
        !            69:
        !            70:        BUS_SPACE_ASSERT(t, h, o, <NUM>);
        !            71:        BUS_SPACE_TRACE(t, h,
        !            72:            ("bswm<NUM>(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr,
        !            73:            (long long)o, t-><ASI>, c));
        !            74: RAW:   c /= sizeof(<TYPE>);
        !            75:
        !            76:        ++c;  /* Looping on "--c" is slightly faster than on "c--" */
        !            77:        asi_set(t-><ASI>);
        !            78:        while (--c > 0) {
        !            79:                <TYPE> r = *p++;
        !            80:                BUS_SPACE_TRACE(t, h, (" <FMT>", r));
        !            81:                <STORE>_asi(h.bh_ptr + o, r);
        !            82:        }
        !            83:
        !            84:        BUS_SPACE_TRACE(t, h, ("\n"));
        !            85: }
        !            86:
        !            87: void
        !            88: bus_space_set_<RAW>multi_<NUM>(bus_space_tag_t t, bus_space_handle_t h,
        !            89:     bus_size_t o, <TYPE> v,
        !            90: NRAW:    bus_size_t c)
        !            91: RAW:    size_t c)
        !            92: {
        !            93:        BUS_SPACE_ASSERT(t, h, o, <NUM>);
        !            94:        BUS_SPACE_TRACE(t, h,
        !            95:            ("bssm<NUM>(%llx + %llx, %x, %x) <- <FMT>\n", (long long)h.bh_ptr,
        !            96:            (long long)o, t-><ASI>, c, v));
        !            97: RAW:   c /= sizeof(<TYPE>);
        !            98:
        !            99:        ++c;  /* Looping on "--c" is slightly faster than on "c--" */
        !           100:        asi_set(t-><ASI>);
        !           101:        while (--c > 0)
        !           102:                <STORE>_asi(h.bh_ptr + o, v);
        !           103: }
        !           104:
        !           105: void
        !           106: bus_space_read_<RAW>region_<NUM>(bus_space_tag_t t, bus_space_handle_t h,
        !           107:     bus_size_t o,
        !           108: NRAW:    <TYPE> *a, bus_size_t c)
        !           109: RAW:    void *a, size_t c)
        !           110: {
        !           111:        <TYPE> *p = a;
        !           112:        paddr_t ptr = h.bh_ptr + o;
        !           113:
        !           114:        BUS_SPACE_ASSERT(t, h, o, <NUM>);
        !           115:        BUS_SPACE_TRACE(t, h,
        !           116:            ("bsrr<NUM>(%llx + %llx, %x, %x) <- \n", (long long)h.bh_ptr,
        !           117:            (long long)o, t-><ASI>, c));
        !           118: RAW:   c /= sizeof(<TYPE>);
        !           119:
        !           120:        asi_set(t-><ASI>);
        !           121:        for (; c; p++, c--, ptr += <NUM>) {
        !           122:                <TYPE> r = <LOAD>_asi(ptr);
        !           123:                BUS_SPACE_TRACE(t, h, (" <FMT>", r));
        !           124:                *p = r;
        !           125:        }
        !           126:
        !           127:        BUS_SPACE_TRACE(t, h, ("\n"));
        !           128: }
        !           129:
        !           130: void
        !           131: bus_space_write_<RAW>region_<NUM>(bus_space_tag_t t, bus_space_handle_t h,
        !           132:     bus_size_t o,
        !           133: NRAW:    const <TYPE> *a, bus_size_t c)
        !           134: RAW:    const void *a, size_t c)
        !           135: {
        !           136:        const <TYPE> *p = a;
        !           137:        paddr_t ptr = h.bh_ptr + o;
        !           138:
        !           139:        BUS_SPACE_ASSERT(t, h, o, <NUM>);
        !           140:        BUS_SPACE_TRACE(t, h,
        !           141:            ("bswr<NUM>(%llx + %llx, %x, %x) <-", (long long)h.bh_ptr,
        !           142:            (long long)o, t-><ASI>, c));
        !           143: RAW:   c /= sizeof(<TYPE>);
        !           144:
        !           145:        asi_set(t-><ASI>);
        !           146:        for (; c; p++, c--, ptr += <NUM>) {
        !           147:                <TYPE> r = *p;
        !           148:                BUS_SPACE_TRACE(t, h, (" <FMT>", r));
        !           149:                <STORE>_asi(ptr, r);
        !           150:        }
        !           151:
        !           152:        BUS_SPACE_TRACE(t, h, ("\n"));
        !           153: }
        !           154:
        !           155: void
        !           156: bus_space_set_<RAW>region_<NUM>(bus_space_tag_t t, bus_space_handle_t h,
        !           157:     bus_size_t o, <TYPE> v,
        !           158: NRAW:    bus_size_t c)
        !           159: RAW:    size_t c)
        !           160: {
        !           161:        paddr_t ptr = h.bh_ptr + o;
        !           162:
        !           163:        BUS_SPACE_ASSERT(t, h, o, <NUM>);
        !           164:        BUS_SPACE_TRACE(t, h,
        !           165:            ("bssr<NUM>(%llx + %llx, %x, %x) <- <FMT>\n", (long long)h.bh_ptr,
        !           166:            (long long)o, t-><ASI>, c, v));
        !           167: RAW:   c /= sizeof(<TYPE>);
        !           168:
        !           169:        asi_set(t-><ASI>);
        !           170:        for (; c; c--, ptr += <NUM>)
        !           171:                <STORE>_asi(ptr, v);
        !           172: }
        !           173:
        !           174: void
        !           175: bus_space_copy_<RAW>region_<NUM>(bus_space_tag_t t, bus_space_handle_t h1,
        !           176:     bus_size_t o1, bus_space_handle_t h2, bus_size_t o2,
        !           177: NRAW:    bus_size_t c)
        !           178: RAW:    size_t c)
        !           179: {
        !           180:        paddr_t ptr1 = h1.bh_ptr + o1;
        !           181:        paddr_t ptr2 = h2.bh_ptr + o2;
        !           182:
        !           183:        BUS_SPACE_ASSERT(t, h1, o2, <NUM>);
        !           184:        BUS_SPACE_ASSERT(t, h2, o2, <NUM>);
        !           185:        BUS_SPACE_TRACE(t, h1,
        !           186:            ("bscr<NUM>(%llx + %llx, %llx + %llx, %x, %x) <-> \n",
        !           187:            (long long)h1.bh_ptr, (long long)o1,
        !           188:            (long long)h2.bh_ptr, (long long)o2,
        !           189:            t-><ASI>, c));
        !           190: RAW:   c /= sizeof(<TYPE>);
        !           191:
        !           192:        asi_set(t-><ASI>);
        !           193:         for (; c; c--, ptr1 += <NUM>, ptr2 += <NUM>) {
        !           194:                <TYPE> r = <LOAD>_asi(ptr2);
        !           195:                BUS_SPACE_TRACE(t, h1, (" <FMT>", r));
        !           196:                <STORE>_asi(ptr1, r);
        !           197:        }
        !           198:        BUS_SPACE_TRACE(t, h1, ("\n"));
        !           199: }
        !           200:

CVSweb