[BACK]Return to bus.h CVS log [TXT][DIR] Up to [local] / sys / arch / mac68k / include

Annotation of sys/arch/mac68k/include/bus.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: bus.h,v 1.12 2006/04/16 19:07:35 miod Exp $   */
        !             2: /*     $NetBSD: bus.h,v 1.9 1998/01/13 18:32:15 scottr Exp $   */
        !             3:
        !             4: /*-
        !             5:  * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc.
        !             6:  * All rights reserved.
        !             7:  *
        !             8:  * This code is derived from software contributed to The NetBSD Foundation
        !             9:  * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
        !            10:  * NASA Ames Research Center.
        !            11:  *
        !            12:  * Redistribution and use in source and binary forms, with or without
        !            13:  * modification, are permitted provided that the following conditions
        !            14:  * are met:
        !            15:  * 1. Redistributions of source code must retain the above copyright
        !            16:  *    notice, this list of conditions and the following disclaimer.
        !            17:  * 2. Redistributions in binary form must reproduce the above copyright
        !            18:  *    notice, this list of conditions and the following disclaimer in the
        !            19:  *    documentation and/or other materials provided with the distribution.
        !            20:  * 3. All advertising materials mentioning features or use of this software
        !            21:  *    must display the following acknowledgement:
        !            22:  *     This product includes software developed by the NetBSD
        !            23:  *     Foundation, Inc. and its contributors.
        !            24:  * 4. Neither the name of The NetBSD Foundation nor the names of its
        !            25:  *    contributors may be used to endorse or promote products derived
        !            26:  *    from this software without specific prior written permission.
        !            27:  *
        !            28:  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
        !            29:  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
        !            30:  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
        !            31:  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
        !            32:  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
        !            33:  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
        !            34:  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
        !            35:  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
        !            36:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
        !            37:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
        !            38:  * POSSIBILITY OF SUCH DAMAGE.
        !            39:  */
        !            40:
        !            41: /*
        !            42:  * Copyright (C) 1997 Scott Reynolds.  All rights reserved.
        !            43:  *
        !            44:  * Redistribution and use in source and binary forms, with or without
        !            45:  * modification, are permitted provided that the following conditions
        !            46:  * are met:
        !            47:  * 1. Redistributions of source code must retain the above copyright
        !            48:  *    notice, this list of conditions and the following disclaimer.
        !            49:  * 2. Redistributions in binary form must reproduce the above copyright
        !            50:  *    notice, this list of conditions and the following disclaimer in the
        !            51:  *    documentation and/or other materials provided with the distribution.
        !            52:  * 3. The name of the author may not be used to endorse or promote products
        !            53:  *    derived from this software without specific prior written permission
        !            54:  *
        !            55:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
        !            56:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
        !            57:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
        !            58:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
        !            59:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
        !            60:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
        !            61:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
        !            62:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
        !            63:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
        !            64:  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        !            65:  */
        !            66:
        !            67: #ifndef _MAC68K_BUS_H_
        !            68: #define _MAC68K_BUS_H_
        !            69:
        !            70: /*
        !            71:  * Value for the mac68k bus space tag, not to be used directly by MI code.
        !            72:  */
        !            73: #define MAC68K_BUS_SPACE_MEM   0       /* space is mem space */
        !            74:
        !            75: /*
        !            76:  * Bus address and size types
        !            77:  */
        !            78: typedef u_long bus_addr_t;
        !            79: typedef u_long bus_size_t;
        !            80:
        !            81: /*
        !            82:  * Access methods for bus resources and address space.
        !            83:  */
        !            84: #define BSH_T  struct bus_space_handle_s
        !            85: typedef int    bus_space_tag_t;
        !            86: typedef struct bus_space_handle_s {
        !            87:        u_long  base;
        !            88:        int     swapped;
        !            89:
        !            90:        u_int8_t        (*bsr1)(bus_space_tag_t, BSH_T *, bus_size_t);
        !            91:        u_int16_t       (*bsr2)(bus_space_tag_t, BSH_T *, bus_size_t);
        !            92:        u_int32_t       (*bsr4)(bus_space_tag_t, BSH_T *, bus_size_t);
        !            93:        void            (*bsrm1)(bus_space_tag_t, BSH_T *, bus_size_t,
        !            94:                                u_int8_t *, size_t);
        !            95:        void            (*bsrm2)(bus_space_tag_t, BSH_T *, bus_size_t,
        !            96:                                u_int16_t *, size_t);
        !            97:        void            (*bsrm4)(bus_space_tag_t, BSH_T *, bus_size_t,
        !            98:                                u_int32_t *, size_t);
        !            99:        void            (*bsrms2)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           100:                                u_int16_t *, size_t);
        !           101:        void            (*bsrms4)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           102:                                u_int32_t *, size_t);
        !           103:        void            (*bsrr1)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           104:                                u_int8_t *, size_t);
        !           105:        void            (*bsrr2)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           106:                                u_int16_t *, size_t);
        !           107:        void            (*bsrr4)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           108:                                u_int32_t *, size_t);
        !           109:        void            (*bsrrs1)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           110:                                u_int8_t *, size_t);
        !           111:        void            (*bsrrs2)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           112:                                u_int16_t *, size_t);
        !           113:        void            (*bsrrs4)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           114:                                u_int32_t *, size_t);
        !           115:        void            (*bsw1)(bus_space_tag_t, BSH_T *, bus_size_t, u_int8_t);
        !           116:        void            (*bsw2)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           117:                                u_int16_t);
        !           118:        void            (*bsw4)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           119:                                u_int32_t);
        !           120:        void            (*bswm1)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           121:                                const u_int8_t *, size_t);
        !           122:        void            (*bswm2)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           123:                                const u_int16_t *, size_t);
        !           124:        void            (*bswm4)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           125:                                const u_int32_t *, size_t);
        !           126:        void            (*bswms1)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           127:                                const u_int8_t *, size_t);
        !           128:        void            (*bswms2)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           129:                                const u_int16_t *, size_t);
        !           130:        void            (*bswms4)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           131:                                const u_int32_t *, size_t);
        !           132:        void            (*bswr1)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           133:                                const u_int8_t *, size_t);
        !           134:        void            (*bswr2)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           135:                                const u_int16_t *, size_t);
        !           136:        void            (*bswr4)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           137:                                const u_int32_t *, size_t);
        !           138:        void            (*bswrs1)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           139:                                const u_int8_t *, size_t);
        !           140:        void            (*bswrs2)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           141:                                const u_int16_t *, size_t);
        !           142:        void            (*bswrs4)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           143:                                const u_int32_t *, size_t);
        !           144:        void            (*bssm1)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           145:                                u_int8_t v, size_t);
        !           146:        void            (*bssm2)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           147:                                u_int16_t v, size_t);
        !           148:        void            (*bssm4)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           149:                                u_int32_t v, size_t);
        !           150:        void            (*bssr1)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           151:                                u_int8_t v, size_t);
        !           152:        void            (*bssr2)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           153:                                u_int16_t v, size_t);
        !           154:        void            (*bssr4)(bus_space_tag_t, BSH_T *, bus_size_t,
        !           155:                                u_int32_t v, size_t);
        !           156: } bus_space_handle_t;
        !           157: #undef BSH_T
        !           158:
        !           159: void   mac68k_bus_space_handle_swapped(bus_space_tag_t,
        !           160:                bus_space_handle_t *h);
        !           161:
        !           162: /*
        !           163:  *     int bus_space_map(bus_space_tag_t t, bus_addr_t addr,
        !           164:  *         bus_size_t size, int flags, bus_space_handle_t *bshp);
        !           165:  *
        !           166:  * Map a region of bus space.
        !           167:  */
        !           168:
        !           169: #define        BUS_SPACE_MAP_CACHEABLE         0x01
        !           170: #define        BUS_SPACE_MAP_LINEAR            0x02
        !           171:
        !           172: int    bus_space_map(bus_space_tag_t, bus_addr_t, bus_size_t,
        !           173:            int, bus_space_handle_t *);
        !           174:
        !           175: /*
        !           176:  *     void bus_space_unmap(bus_space_tag_t t,
        !           177:  *         bus_space_handle_t bsh, bus_size_t size);
        !           178:  *
        !           179:  * Unmap a region of bus space.
        !           180:  */
        !           181:
        !           182: void   bus_space_unmap(bus_space_tag_t, bus_space_handle_t, bus_size_t);
        !           183:
        !           184: /*
        !           185:  *     int bus_space_subregion(bus_space_tag_t t,
        !           186:  *         bus_space_handle_t bsh, bus_size_t offset, bus_size_t size,
        !           187:  *         bus_space_handle_t *nbshp);
        !           188:  *
        !           189:  * Get a new handle for a subregion of an already-mapped area of bus space.
        !           190:  */
        !           191:
        !           192: int    bus_space_subregion(bus_space_tag_t t, bus_space_handle_t bsh,
        !           193:            bus_size_t offset, bus_size_t size, bus_space_handle_t *nbshp);
        !           194:
        !           195: /*
        !           196:  *     int bus_space_alloc(bus_space_tag_t t, bus_addr_t, rstart,
        !           197:  *         bus_addr_t rend, bus_size_t size, bus_size_t align,
        !           198:  *         bus_size_t boundary, int flags, bus_addr_t *addrp,
        !           199:  *         bus_space_handle_t *bshp);
        !           200:  *
        !           201:  * Allocate a region of bus space.
        !           202:  */
        !           203:
        !           204: int    bus_space_alloc(bus_space_tag_t t, bus_addr_t rstart,
        !           205:            bus_addr_t rend, bus_size_t size, bus_size_t align,
        !           206:            bus_size_t boundary, int cacheable, bus_addr_t *addrp,
        !           207:            bus_space_handle_t *bshp);
        !           208:
        !           209: /*
        !           210:  *     int bus_space_free(bus_space_tag_t t,
        !           211:  *         bus_space_handle_t bsh, bus_size_t size);
        !           212:  *
        !           213:  * Free a region of bus space.
        !           214:  */
        !           215:
        !           216: void   bus_space_free(bus_space_tag_t t, bus_space_handle_t bsh,
        !           217:            bus_size_t size);
        !           218:
        !           219: /*
        !           220:  *     int mac68k_bus_space_probe(bus_space_tag_t t,
        !           221:  *         bus_space_handle_t bsh, bus_size_t offset, int sz);
        !           222:  *
        !           223:  * Probe the bus at t/bsh/offset, using sz as the size of the load.
        !           224:  *
        !           225:  * This is a machine-dependent extension, and is not to be used by
        !           226:  * machine-independent code.
        !           227:  */
        !           228:
        !           229: int    mac68k_bus_space_probe(bus_space_tag_t t,
        !           230:            bus_space_handle_t bsh, bus_size_t offset, int sz);
        !           231:
        !           232: /*
        !           233:  *     u_intN_t bus_space_read_N(bus_space_tag_t tag,
        !           234:  *         bus_space_handle_t bsh, bus_size_t offset);
        !           235:  *
        !           236:  * Read a 1, 2, 4, or 8 byte quantity from bus space
        !           237:  * described by tag/handle/offset.
        !           238:  */
        !           239:
        !           240: u_int8_t mac68k_bsr1(bus_space_tag_t tag, bus_space_handle_t *bsh,
        !           241:                          bus_size_t offset);
        !           242: u_int16_t mac68k_bsr2(bus_space_tag_t tag, bus_space_handle_t *bsh,
        !           243:                          bus_size_t offset);
        !           244: u_int16_t mac68k_bsr2_swap(bus_space_tag_t tag, bus_space_handle_t *bsh,
        !           245:                                bus_size_t offset);
        !           246: u_int32_t mac68k_bsr4(bus_space_tag_t tag, bus_space_handle_t *bsh,
        !           247:                                bus_size_t offset);
        !           248: u_int32_t mac68k_bsr4_swap(bus_space_tag_t tag, bus_space_handle_t *bsh,
        !           249:                                bus_size_t offset);
        !           250:
        !           251: #define        bus_space_read_1(t,h,o) (h).bsr1((t), &(h), (o))
        !           252: #define        bus_space_read_2(t,h,o) (h).bsr2((t), &(h), (o))
        !           253: #define        bus_space_read_4(t,h,o) (h).bsr4((t), &(h), (o))
        !           254:
        !           255: /*
        !           256:  *     void bus_space_read_multi_N(bus_space_tag_t tag,
        !           257:  *         bus_space_handle_t bsh, bus_size_t offset,
        !           258:  *         u_intN_t *addr, size_t count);
        !           259:  *
        !           260:  * Read `count' 1, 2, 4, or 8 byte quantities from bus space
        !           261:  * described by tag/handle/offset and copy into buffer provided.
        !           262:  */
        !           263:
        !           264: void mac68k_bsrm1(bus_space_tag_t, bus_space_handle_t *, bus_size_t,
        !           265:        u_int8_t *, size_t);
        !           266: void mac68k_bsrm2(bus_space_tag_t, bus_space_handle_t *, bus_size_t,
        !           267:        u_int16_t *, size_t);
        !           268: void mac68k_bsrm2_swap(bus_space_tag_t, bus_space_handle_t *, bus_size_t,
        !           269:        u_int16_t *, size_t);
        !           270: void mac68k_bsrm4(bus_space_tag_t, bus_space_handle_t *, bus_size_t,
        !           271:        u_int32_t *, size_t);
        !           272: void mac68k_bsrms4(bus_space_tag_t, bus_space_handle_t *, bus_size_t,
        !           273:        u_int32_t *, size_t);
        !           274: void mac68k_bsrm4_swap(bus_space_tag_t, bus_space_handle_t *, bus_size_t,
        !           275:        u_int32_t *, size_t);
        !           276:
        !           277: #define bus_space_read_multi_1(t, h, o, a, c) (h).bsrm1(t, &(h), o, a, c)
        !           278: #define bus_space_read_multi_2(t, h, o, a, c) (h).bsrm2(t, &(h), o, a, c)
        !           279: #define bus_space_read_multi_4(t, h, o, a, c) (h).bsrm4(t, &(h), o, a, c)
        !           280:
        !           281: /*
        !           282:  *     void bus_space_read_region_N(bus_space_tag_t tag,
        !           283:  *         bus_space_handle_t bsh, bus_size_t offset,
        !           284:  *         u_intN_t *addr, size_t count);
        !           285:  *
        !           286:  * Read `count' 1, 2, 4, or 8 byte quantities from bus space
        !           287:  * described by tag/handle and starting at `offset' and copy into
        !           288:  * buffer provided.
        !           289:  */
        !           290:
        !           291: void mac68k_bsrr1(bus_space_tag_t, bus_space_handle_t *, bus_size_t,
        !           292:        u_int8_t *, size_t);
        !           293: void mac68k_bsrr2(bus_space_tag_t, bus_space_handle_t *, bus_size_t,
        !           294:        u_int16_t *, size_t);
        !           295: void mac68k_bsrr2_swap(bus_space_tag_t, bus_space_handle_t *, bus_size_t,
        !           296:        u_int16_t *, size_t);
        !           297: void mac68k_bsrr4(bus_space_tag_t, bus_space_handle_t *, bus_size_t,
        !           298:        u_int32_t *, size_t);
        !           299: void mac68k_bsrr4_swap(bus_space_tag_t, bus_space_handle_t *, bus_size_t,
        !           300:        u_int32_t *, size_t);
        !           301:
        !           302: #define bus_space_read_region_1(t, h, o, a, c) (h).bsrr1(t,&(h),o,a,c)
        !           303: #define bus_space_read_region_2(t, h, o, a, c) (h).bsrr2(t,&(h),o,a,c)
        !           304: #define bus_space_read_region_4(t, h, o, a, c) (h).bsrr4(t,&(h),o,a,c)
        !           305:
        !           306: /*
        !           307:  *     void bus_space_write_N(bus_space_tag_t tag,
        !           308:  *         bus_space_handle_t bsh, bus_size_t offset,
        !           309:  *         u_intN_t value);
        !           310:  *
        !           311:  * Write the 1, 2, 4, or 8 byte value `value' to bus space
        !           312:  * described by tag/handle/offset.
        !           313:  */
        !           314:
        !           315: void mac68k_bsw1(bus_space_tag_t, bus_space_handle_t *, bus_size_t, u_int8_t);
        !           316: void mac68k_bsw2(bus_space_tag_t, bus_space_handle_t *, bus_size_t, u_int16_t);
        !           317: void mac68k_bsw2_swap(bus_space_tag_t, bus_space_handle_t *, bus_size_t,
        !           318:        u_int16_t);
        !           319: void mac68k_bsw4(bus_space_tag_t, bus_space_handle_t *, bus_size_t, u_int32_t);
        !           320: void mac68k_bsw4_swap(bus_space_tag_t, bus_space_handle_t *, bus_size_t,
        !           321:        u_int32_t);
        !           322:
        !           323: #define bus_space_write_1(t, h, o, v) (h).bsw1(t, &(h), o, v)
        !           324: #define bus_space_write_2(t, h, o, v) (h).bsw2(t, &(h), o, v)
        !           325: #define bus_space_write_4(t, h, o, v) (h).bsw4(t, &(h), o, v)
        !           326:
        !           327: /*
        !           328:  *     void bus_space_write_multi_N(bus_space_tag_t tag,
        !           329:  *         bus_space_handle_t bsh, bus_size_t offset,
        !           330:  *         const u_intN_t *addr, size_t count);
        !           331:  *
        !           332:  * Write `count' 1, 2, 4, or 8 byte quantities from the buffer
        !           333:  * provided to bus space described by tag/handle/offset.
        !           334:  */
        !           335:
        !           336: void mac68k_bswm1(bus_space_tag_t, bus_space_handle_t *, bus_size_t,
        !           337:        const u_int8_t *, size_t);
        !           338: void mac68k_bswm2(bus_space_tag_t, bus_space_handle_t *, bus_size_t,
        !           339:        const u_int16_t *, size_t);
        !           340: void mac68k_bswm2_swap(bus_space_tag_t, bus_space_handle_t *, bus_size_t,
        !           341:        const u_int16_t *, size_t);
        !           342: void mac68k_bswm4(bus_space_tag_t, bus_space_handle_t *, bus_size_t,
        !           343:        const u_int32_t *, size_t);
        !           344: void mac68k_bswm4_swap(bus_space_tag_t, bus_space_handle_t *, bus_size_t,
        !           345:        const u_int32_t *, size_t);
        !           346:
        !           347: #define bus_space_write_multi_1(t, h, o, a, c) (h).bswm1(t, &(h), o, a, c)
        !           348: #define bus_space_write_multi_2(t, h, o, a, c) (h).bswm2(t, &(h), o, a, c)
        !           349: #define bus_space_write_multi_4(t, h, o, a, c) (h).bswm4(t, &(h), o, a, c)
        !           350:
        !           351: /*
        !           352:  *     void bus_space_write_region_N(bus_space_tag_t tag,
        !           353:  *         bus_space_handle_t bsh, bus_size_t offset,
        !           354:  *         const u_intN_t *addr, size_t count);
        !           355:  *
        !           356:  * Write `count' 1, 2, 4, or 8 byte quantities from the buffer provided
        !           357:  * to bus space described by tag/handle starting at `offset'.
        !           358:  */
        !           359:
        !           360: void mac68k_bswr1(bus_space_tag_t, bus_space_handle_t *, bus_size_t,
        !           361:        const u_int8_t *, size_t);
        !           362: void mac68k_bswr2(bus_space_tag_t, bus_space_handle_t *, bus_size_t,
        !           363:        const u_int16_t *, size_t);
        !           364: void mac68k_bswr2_swap(bus_space_tag_t, bus_space_handle_t *, bus_size_t,
        !           365:        const u_int16_t *, size_t);
        !           366: void mac68k_bswr4(bus_space_tag_t, bus_space_handle_t *, bus_size_t,
        !           367:        const u_int32_t *, size_t);
        !           368: void mac68k_bswr4_swap(bus_space_tag_t, bus_space_handle_t *, bus_size_t,
        !           369:        const u_int32_t *, size_t);
        !           370:
        !           371: #define bus_space_write_region_1(t, h, o, a, c) (h).bswr1(t, &(h), o, a, c)
        !           372: #define bus_space_write_region_2(t, h, o, a, c) (h).bswr2(t, &(h), o, a, c)
        !           373: #define bus_space_write_region_4(t, h, o, a, c) (h).bswr4(t, &(h), o, a, c)
        !           374:
        !           375: /*
        !           376:  *     void bus_space_set_multi_N(bus_space_tag_t tag,
        !           377:  *         bus_space_handle_t bsh, bus_size_t offset, u_intN_t val,
        !           378:  *         size_t count);
        !           379:  *
        !           380:  * Write the 1, 2, 4, or 8 byte value `val' to bus space described
        !           381:  * by tag/handle/offset `count' times.
        !           382:  */
        !           383:
        !           384: void mac68k_bssm1(bus_space_tag_t t, bus_space_handle_t *h,
        !           385:                        bus_size_t o, u_int8_t v, size_t c);
        !           386: void mac68k_bssm2(bus_space_tag_t t, bus_space_handle_t *h,
        !           387:                        bus_size_t o, u_int16_t v, size_t c);
        !           388: void mac68k_bssm2_swap(bus_space_tag_t t, bus_space_handle_t *h,
        !           389:                        bus_size_t o, u_int16_t v, size_t c);
        !           390: void mac68k_bssm4(bus_space_tag_t t, bus_space_handle_t *h,
        !           391:                        bus_size_t o, u_int32_t v, size_t c);
        !           392: void mac68k_bssm4_swap(bus_space_tag_t t, bus_space_handle_t *h,
        !           393:                        bus_size_t o, u_int32_t v, size_t c);
        !           394:
        !           395: #define bus_space_set_multi_1(t, h, o, val, c) (h).bssm1(t, &(h), o, val, c)
        !           396: #define bus_space_set_multi_2(t, h, o, val, c) (h).bssm2(t, &(h), o, val, c)
        !           397: #define bus_space_set_multi_4(t, h, o, val, c) (h).bssm4(t, &(h), o, val, c)
        !           398:
        !           399: /*
        !           400:  *     void bus_space_set_region_N(bus_space_tag_t tag,
        !           401:  *         bus_space_handle_t bsh, bus_size_t offset, u_intN_t val,
        !           402:  *         size_t count);
        !           403:  *
        !           404:  * Write `count' 1, 2, 4, or 8 byte value `val' to bus space described
        !           405:  * by tag/handle starting at `offset'.
        !           406:  */
        !           407:
        !           408: void mac68k_bssr1(bus_space_tag_t t, bus_space_handle_t *h,
        !           409:                        bus_size_t o, u_int8_t v, size_t c);
        !           410: void mac68k_bssr2(bus_space_tag_t t, bus_space_handle_t *h,
        !           411:                        bus_size_t o, u_int16_t v, size_t c);
        !           412: void mac68k_bssr2_swap(bus_space_tag_t t, bus_space_handle_t *h,
        !           413:                        bus_size_t o, u_int16_t v, size_t c);
        !           414: void mac68k_bssr4(bus_space_tag_t t, bus_space_handle_t *h,
        !           415:                        bus_size_t o, u_int32_t v, size_t c);
        !           416: void mac68k_bssr4_swap(bus_space_tag_t t, bus_space_handle_t *h,
        !           417:                        bus_size_t o, u_int32_t v, size_t c);
        !           418:
        !           419: #define bus_space_set_region_1(t, h, o, val, c) (h).bssr1(t, &(h), o, val, c)
        !           420: #define bus_space_set_region_2(t, h, o, val, c) (h).bssr2(t, &(h), o, val, c)
        !           421: #define bus_space_set_region_4(t, h, o, val, c) (h).bssr4(t, &(h), o, val, c)
        !           422:
        !           423: /*
        !           424:  * Bus read/write barrier methods.
        !           425:  *
        !           426:  *     void bus_space_barrier(bus_space_tag_t tag,
        !           427:  *         bus_space_handle_t bsh, bus_size_t offset,
        !           428:  *         bus_size_t len, int flags);
        !           429:  *
        !           430:  * Note: the 680x0 does not currently require barriers, but we must
        !           431:  * provide the flags to MI code.
        !           432:  */
        !           433: #define        bus_space_barrier(t, h, o, l, f)        \
        !           434:        ((void)((void)(t), (void)(h), (void)(o), (void)(l), (void)(f)))
        !           435: #define        BUS_SPACE_BARRIER_READ  0x01            /* force read barrier */
        !           436: #define        BUS_SPACE_BARRIER_WRITE 0x02            /* force write barrier */
        !           437:
        !           438: #define        bus_space_vaddr(t, h)                   (void *)((h).base)
        !           439:
        !           440: #endif /* _MAC68K_BUS_H_ */

CVSweb