1292407Sbr/* $NetBSD: bus.h,v 1.11 2003/07/28 17:35:54 thorpej Exp $ */ 2292407Sbr 3292407Sbr/*- 4292407Sbr * Copyright (c) 1996, 1997, 1998, 2001 The NetBSD Foundation, Inc. 5292407Sbr * All rights reserved. 6292407Sbr * 7292407Sbr * This code is derived from software contributed to The NetBSD Foundation 8292407Sbr * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility, 9292407Sbr * NASA Ames Research Center. 10292407Sbr * 11292407Sbr * Redistribution and use in source and binary forms, with or without 12292407Sbr * modification, are permitted provided that the following conditions 13292407Sbr * are met: 14292407Sbr * 1. Redistributions of source code must retain the above copyright 15292407Sbr * notice, this list of conditions and the following disclaimer. 16292407Sbr * 2. Redistributions in binary form must reproduce the above copyright 17292407Sbr * notice, this list of conditions and the following disclaimer in the 18292407Sbr * documentation and/or other materials provided with the distribution. 19292407Sbr * 20292407Sbr * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 21292407Sbr * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 22292407Sbr * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23292407Sbr * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 24292407Sbr * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25292407Sbr * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26292407Sbr * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27292407Sbr * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28292407Sbr * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29292407Sbr * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30292407Sbr * POSSIBILITY OF SUCH DAMAGE. 31292407Sbr */ 32292407Sbr 33292407Sbr/*- 34292407Sbr * Copyright (c) 1996 Charles M. Hannum. All rights reserved. 35292407Sbr * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved. 36292407Sbr * 37292407Sbr * Redistribution and use in source and binary forms, with or without 38292407Sbr * modification, are permitted provided that the following conditions 39292407Sbr * are met: 40292407Sbr * 1. Redistributions of source code must retain the above copyright 41292407Sbr * notice, this list of conditions and the following disclaimer. 42292407Sbr * 2. Redistributions in binary form must reproduce the above copyright 43292407Sbr * notice, this list of conditions and the following disclaimer in the 44292407Sbr * documentation and/or other materials provided with the distribution. 45292407Sbr * 3. All advertising materials mentioning features or use of this software 46292407Sbr * must display the following acknowledgement: 47292407Sbr * This product includes software developed by Christopher G. Demetriou 48292407Sbr * for the NetBSD Project. 49292407Sbr * 4. The name of the author may not be used to endorse or promote products 50292407Sbr * derived from this software without specific prior written permission 51292407Sbr * 52292407Sbr * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 53292407Sbr * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 54292407Sbr * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 55292407Sbr * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 56292407Sbr * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 57292407Sbr * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 58292407Sbr * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 59292407Sbr * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 60292407Sbr * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 61292407Sbr * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 62292407Sbr * 63292407Sbr * From: sys/arm/include/bus.h 64292407Sbr * 65292407Sbr * $FreeBSD$ 66292407Sbr */ 67292407Sbr 68292407Sbr#ifndef _MACHINE_BUS_H_ 69292407Sbr#define _MACHINE_BUS_H_ 70292407Sbr 71292407Sbr#include <machine/_bus.h> 72292407Sbr 73292407Sbr#define BUS_SPACE_ALIGNED_POINTER(p, t) ALIGNED_POINTER(p, t) 74292407Sbr 75292407Sbr#define BUS_SPACE_MAXADDR_24BIT 0xFFFFFFUL 76292407Sbr#define BUS_SPACE_MAXADDR_32BIT 0xFFFFFFFFUL 77292407Sbr#define BUS_SPACE_MAXSIZE_24BIT 0xFFFFFFUL 78292407Sbr#define BUS_SPACE_MAXSIZE_32BIT 0xFFFFFFFFUL 79292407Sbr 80292407Sbr#define BUS_SPACE_MAXADDR 0xFFFFFFFFFFFFFFFFUL 81292407Sbr#define BUS_SPACE_MAXSIZE 0xFFFFFFFFFFFFFFFFUL 82292407Sbr 83292407Sbr#define BUS_SPACE_MAP_CACHEABLE 0x01 84292407Sbr#define BUS_SPACE_MAP_LINEAR 0x02 85292407Sbr#define BUS_SPACE_MAP_PREFETCHABLE 0x04 86292407Sbr 87292407Sbr#define BUS_SPACE_UNRESTRICTED (~0) 88292407Sbr 89292407Sbr#define BUS_SPACE_BARRIER_READ 0x01 90292407Sbr#define BUS_SPACE_BARRIER_WRITE 0x02 91292407Sbr 92292407Sbr 93292407Sbrstruct bus_space { 94292407Sbr /* cookie */ 95292407Sbr void *bs_cookie; 96292407Sbr 97292407Sbr /* mapping/unmapping */ 98292407Sbr int (*bs_map) (void *, bus_addr_t, bus_size_t, 99292407Sbr int, bus_space_handle_t *); 100292407Sbr void (*bs_unmap) (void *, bus_space_handle_t, bus_size_t); 101292407Sbr int (*bs_subregion) (void *, bus_space_handle_t, 102292407Sbr bus_size_t, bus_size_t, bus_space_handle_t *); 103292407Sbr 104292407Sbr /* allocation/deallocation */ 105292407Sbr int (*bs_alloc) (void *, bus_addr_t, bus_addr_t, 106292407Sbr bus_size_t, bus_size_t, bus_size_t, int, 107292407Sbr bus_addr_t *, bus_space_handle_t *); 108292407Sbr void (*bs_free) (void *, bus_space_handle_t, 109292407Sbr bus_size_t); 110292407Sbr 111292407Sbr /* get kernel virtual address */ 112292407Sbr /* barrier */ 113292407Sbr void (*bs_barrier) (void *, bus_space_handle_t, 114292407Sbr bus_size_t, bus_size_t, int); 115292407Sbr 116292407Sbr /* read single */ 117292407Sbr u_int8_t (*bs_r_1) (void *, bus_space_handle_t, bus_size_t); 118292407Sbr u_int16_t (*bs_r_2) (void *, bus_space_handle_t, bus_size_t); 119292407Sbr u_int32_t (*bs_r_4) (void *, bus_space_handle_t, bus_size_t); 120292407Sbr u_int64_t (*bs_r_8) (void *, bus_space_handle_t, bus_size_t); 121292407Sbr 122292407Sbr /* read multiple */ 123292407Sbr void (*bs_rm_1) (void *, bus_space_handle_t, bus_size_t, 124292407Sbr u_int8_t *, bus_size_t); 125292407Sbr void (*bs_rm_2) (void *, bus_space_handle_t, bus_size_t, 126292407Sbr u_int16_t *, bus_size_t); 127292407Sbr void (*bs_rm_4) (void *, bus_space_handle_t, 128292407Sbr bus_size_t, u_int32_t *, bus_size_t); 129292407Sbr void (*bs_rm_8) (void *, bus_space_handle_t, 130292407Sbr bus_size_t, u_int64_t *, bus_size_t); 131292407Sbr 132292407Sbr /* read region */ 133292407Sbr void (*bs_rr_1) (void *, bus_space_handle_t, 134292407Sbr bus_size_t, u_int8_t *, bus_size_t); 135292407Sbr void (*bs_rr_2) (void *, bus_space_handle_t, 136292407Sbr bus_size_t, u_int16_t *, bus_size_t); 137292407Sbr void (*bs_rr_4) (void *, bus_space_handle_t, 138292407Sbr bus_size_t, u_int32_t *, bus_size_t); 139292407Sbr void (*bs_rr_8) (void *, bus_space_handle_t, 140292407Sbr bus_size_t, u_int64_t *, bus_size_t); 141292407Sbr 142292407Sbr /* write single */ 143292407Sbr void (*bs_w_1) (void *, bus_space_handle_t, 144292407Sbr bus_size_t, u_int8_t); 145292407Sbr void (*bs_w_2) (void *, bus_space_handle_t, 146292407Sbr bus_size_t, u_int16_t); 147292407Sbr void (*bs_w_4) (void *, bus_space_handle_t, 148292407Sbr bus_size_t, u_int32_t); 149292407Sbr void (*bs_w_8) (void *, bus_space_handle_t, 150292407Sbr bus_size_t, u_int64_t); 151292407Sbr 152292407Sbr /* write multiple */ 153292407Sbr void (*bs_wm_1) (void *, bus_space_handle_t, 154292407Sbr bus_size_t, const u_int8_t *, bus_size_t); 155292407Sbr void (*bs_wm_2) (void *, bus_space_handle_t, 156292407Sbr bus_size_t, const u_int16_t *, bus_size_t); 157292407Sbr void (*bs_wm_4) (void *, bus_space_handle_t, 158292407Sbr bus_size_t, const u_int32_t *, bus_size_t); 159292407Sbr void (*bs_wm_8) (void *, bus_space_handle_t, 160292407Sbr bus_size_t, const u_int64_t *, bus_size_t); 161292407Sbr 162292407Sbr /* write region */ 163292407Sbr void (*bs_wr_1) (void *, bus_space_handle_t, 164292407Sbr bus_size_t, const u_int8_t *, bus_size_t); 165292407Sbr void (*bs_wr_2) (void *, bus_space_handle_t, 166292407Sbr bus_size_t, const u_int16_t *, bus_size_t); 167292407Sbr void (*bs_wr_4) (void *, bus_space_handle_t, 168292407Sbr bus_size_t, const u_int32_t *, bus_size_t); 169292407Sbr void (*bs_wr_8) (void *, bus_space_handle_t, 170292407Sbr bus_size_t, const u_int64_t *, bus_size_t); 171292407Sbr 172292407Sbr /* set multiple */ 173292407Sbr void (*bs_sm_1) (void *, bus_space_handle_t, 174292407Sbr bus_size_t, u_int8_t, bus_size_t); 175292407Sbr void (*bs_sm_2) (void *, bus_space_handle_t, 176292407Sbr bus_size_t, u_int16_t, bus_size_t); 177292407Sbr void (*bs_sm_4) (void *, bus_space_handle_t, 178292407Sbr bus_size_t, u_int32_t, bus_size_t); 179292407Sbr void (*bs_sm_8) (void *, bus_space_handle_t, 180292407Sbr bus_size_t, u_int64_t, bus_size_t); 181292407Sbr 182292407Sbr /* set region */ 183292407Sbr void (*bs_sr_1) (void *, bus_space_handle_t, 184292407Sbr bus_size_t, u_int8_t, bus_size_t); 185292407Sbr void (*bs_sr_2) (void *, bus_space_handle_t, 186292407Sbr bus_size_t, u_int16_t, bus_size_t); 187292407Sbr void (*bs_sr_4) (void *, bus_space_handle_t, 188292407Sbr bus_size_t, u_int32_t, bus_size_t); 189292407Sbr void (*bs_sr_8) (void *, bus_space_handle_t, 190292407Sbr bus_size_t, u_int64_t, bus_size_t); 191292407Sbr 192292407Sbr /* copy */ 193292407Sbr void (*bs_c_1) (void *, bus_space_handle_t, bus_size_t, 194292407Sbr bus_space_handle_t, bus_size_t, bus_size_t); 195292407Sbr void (*bs_c_2) (void *, bus_space_handle_t, bus_size_t, 196292407Sbr bus_space_handle_t, bus_size_t, bus_size_t); 197292407Sbr void (*bs_c_4) (void *, bus_space_handle_t, bus_size_t, 198292407Sbr bus_space_handle_t, bus_size_t, bus_size_t); 199292407Sbr void (*bs_c_8) (void *, bus_space_handle_t, bus_size_t, 200292407Sbr bus_space_handle_t, bus_size_t, bus_size_t); 201292407Sbr 202292407Sbr /* read single stream */ 203292407Sbr u_int8_t (*bs_r_1_s) (void *, bus_space_handle_t, bus_size_t); 204292407Sbr u_int16_t (*bs_r_2_s) (void *, bus_space_handle_t, bus_size_t); 205292407Sbr u_int32_t (*bs_r_4_s) (void *, bus_space_handle_t, bus_size_t); 206292407Sbr u_int64_t (*bs_r_8_s) (void *, bus_space_handle_t, bus_size_t); 207292407Sbr 208292407Sbr /* read multiple stream */ 209292407Sbr void (*bs_rm_1_s) (void *, bus_space_handle_t, bus_size_t, 210292407Sbr u_int8_t *, bus_size_t); 211292407Sbr void (*bs_rm_2_s) (void *, bus_space_handle_t, bus_size_t, 212292407Sbr u_int16_t *, bus_size_t); 213292407Sbr void (*bs_rm_4_s) (void *, bus_space_handle_t, 214292407Sbr bus_size_t, u_int32_t *, bus_size_t); 215292407Sbr void (*bs_rm_8_s) (void *, bus_space_handle_t, 216292407Sbr bus_size_t, u_int64_t *, bus_size_t); 217292407Sbr 218292407Sbr /* read region stream */ 219292407Sbr void (*bs_rr_1_s) (void *, bus_space_handle_t, 220292407Sbr bus_size_t, u_int8_t *, bus_size_t); 221292407Sbr void (*bs_rr_2_s) (void *, bus_space_handle_t, 222292407Sbr bus_size_t, u_int16_t *, bus_size_t); 223292407Sbr void (*bs_rr_4_s) (void *, bus_space_handle_t, 224292407Sbr bus_size_t, u_int32_t *, bus_size_t); 225292407Sbr void (*bs_rr_8_s) (void *, bus_space_handle_t, 226292407Sbr bus_size_t, u_int64_t *, bus_size_t); 227292407Sbr 228292407Sbr /* write single stream */ 229292407Sbr void (*bs_w_1_s) (void *, bus_space_handle_t, 230292407Sbr bus_size_t, u_int8_t); 231292407Sbr void (*bs_w_2_s) (void *, bus_space_handle_t, 232292407Sbr bus_size_t, u_int16_t); 233292407Sbr void (*bs_w_4_s) (void *, bus_space_handle_t, 234292407Sbr bus_size_t, u_int32_t); 235292407Sbr void (*bs_w_8_s) (void *, bus_space_handle_t, 236292407Sbr bus_size_t, u_int64_t); 237292407Sbr 238292407Sbr /* write multiple stream */ 239292407Sbr void (*bs_wm_1_s) (void *, bus_space_handle_t, 240292407Sbr bus_size_t, const u_int8_t *, bus_size_t); 241292407Sbr void (*bs_wm_2_s) (void *, bus_space_handle_t, 242292407Sbr bus_size_t, const u_int16_t *, bus_size_t); 243292407Sbr void (*bs_wm_4_s) (void *, bus_space_handle_t, 244292407Sbr bus_size_t, const u_int32_t *, bus_size_t); 245292407Sbr void (*bs_wm_8_s) (void *, bus_space_handle_t, 246292407Sbr bus_size_t, const u_int64_t *, bus_size_t); 247292407Sbr 248292407Sbr /* write region stream */ 249292407Sbr void (*bs_wr_1_s) (void *, bus_space_handle_t, 250292407Sbr bus_size_t, const u_int8_t *, bus_size_t); 251292407Sbr void (*bs_wr_2_s) (void *, bus_space_handle_t, 252292407Sbr bus_size_t, const u_int16_t *, bus_size_t); 253292407Sbr void (*bs_wr_4_s) (void *, bus_space_handle_t, 254292407Sbr bus_size_t, const u_int32_t *, bus_size_t); 255292407Sbr void (*bs_wr_8_s) (void *, bus_space_handle_t, 256292407Sbr bus_size_t, const u_int64_t *, bus_size_t); 257292407Sbr}; 258292407Sbr 259292407Sbr 260292407Sbr/* 261292407Sbr * Utility macros; INTERNAL USE ONLY. 262292407Sbr */ 263292407Sbr#define __bs_c(a,b) __CONCAT(a,b) 264292407Sbr#define __bs_opname(op,size) __bs_c(__bs_c(__bs_c(bs_,op),_),size) 265292407Sbr 266292407Sbr#define __bs_rs(sz, t, h, o) \ 267292407Sbr (*(t)->__bs_opname(r,sz))((t)->bs_cookie, h, o) 268292407Sbr#define __bs_ws(sz, t, h, o, v) \ 269292407Sbr (*(t)->__bs_opname(w,sz))((t)->bs_cookie, h, o, v) 270292407Sbr#define __bs_nonsingle(type, sz, t, h, o, a, c) \ 271292407Sbr (*(t)->__bs_opname(type,sz))((t)->bs_cookie, h, o, a, c) 272292407Sbr#define __bs_set(type, sz, t, h, o, v, c) \ 273292407Sbr (*(t)->__bs_opname(type,sz))((t)->bs_cookie, h, o, v, c) 274292407Sbr#define __bs_copy(sz, t, h1, o1, h2, o2, cnt) \ 275292407Sbr (*(t)->__bs_opname(c,sz))((t)->bs_cookie, h1, o1, h2, o2, cnt) 276292407Sbr 277292407Sbr#define __bs_opname_s(op,size) __bs_c(__bs_c(__bs_c(__bs_c(bs_,op),_),size),_s) 278292407Sbr#define __bs_rs_s(sz, t, h, o) \ 279292407Sbr (*(t)->__bs_opname_s(r,sz))((t)->bs_cookie, h, o) 280292407Sbr#define __bs_ws_s(sz, t, h, o, v) \ 281292407Sbr (*(t)->__bs_opname_s(w,sz))((t)->bs_cookie, h, o, v) 282292407Sbr#define __bs_nonsingle_s(type, sz, t, h, o, a, c) \ 283292407Sbr (*(t)->__bs_opname_s(type,sz))((t)->bs_cookie, h, o, a, c) 284292407Sbr 285292407Sbr 286292407Sbr/* 287292407Sbr * Mapping and unmapping operations. 288292407Sbr */ 289292407Sbr#define bus_space_map(t, a, s, c, hp) \ 290292407Sbr (*(t)->bs_map)((t)->bs_cookie, (a), (s), (c), (hp)) 291292407Sbr#define bus_space_unmap(t, h, s) \ 292292407Sbr (*(t)->bs_unmap)((t)->bs_cookie, (h), (s)) 293292407Sbr#define bus_space_subregion(t, h, o, s, hp) \ 294292407Sbr (*(t)->bs_subregion)((t)->bs_cookie, (h), (o), (s), (hp)) 295292407Sbr 296292407Sbr 297292407Sbr/* 298292407Sbr * Allocation and deallocation operations. 299292407Sbr */ 300292407Sbr#define bus_space_alloc(t, rs, re, s, a, b, c, ap, hp) \ 301292407Sbr (*(t)->bs_alloc)((t)->bs_cookie, (rs), (re), (s), (a), (b), \ 302292407Sbr (c), (ap), (hp)) 303292407Sbr#define bus_space_free(t, h, s) \ 304292407Sbr (*(t)->bs_free)((t)->bs_cookie, (h), (s)) 305292407Sbr 306292407Sbr/* 307292407Sbr * Bus barrier operations. 308292407Sbr */ 309292407Sbr#define bus_space_barrier(t, h, o, l, f) \ 310292407Sbr (*(t)->bs_barrier)((t)->bs_cookie, (h), (o), (l), (f)) 311292407Sbr 312292407Sbr 313292407Sbr 314292407Sbr/* 315292407Sbr * Bus read (single) operations. 316292407Sbr */ 317292407Sbr#define bus_space_read_1(t, h, o) __bs_rs(1,(t),(h),(o)) 318292407Sbr#define bus_space_read_2(t, h, o) __bs_rs(2,(t),(h),(o)) 319292407Sbr#define bus_space_read_4(t, h, o) __bs_rs(4,(t),(h),(o)) 320292407Sbr#define bus_space_read_8(t, h, o) __bs_rs(8,(t),(h),(o)) 321292407Sbr 322292407Sbr#define bus_space_read_stream_1(t, h, o) __bs_rs_s(1,(t), (h), (o)) 323292407Sbr#define bus_space_read_stream_2(t, h, o) __bs_rs_s(2,(t), (h), (o)) 324292407Sbr#define bus_space_read_stream_4(t, h, o) __bs_rs_s(4,(t), (h), (o)) 325292407Sbr#define bus_space_read_stream_8(t, h, o) __bs_rs_s(8,8,(t),(h),(o)) 326292407Sbr 327292407Sbr/* 328292407Sbr * Bus read multiple operations. 329292407Sbr */ 330292407Sbr#define bus_space_read_multi_1(t, h, o, a, c) \ 331292407Sbr __bs_nonsingle(rm,1,(t),(h),(o),(a),(c)) 332292407Sbr#define bus_space_read_multi_2(t, h, o, a, c) \ 333292407Sbr __bs_nonsingle(rm,2,(t),(h),(o),(a),(c)) 334292407Sbr#define bus_space_read_multi_4(t, h, o, a, c) \ 335292407Sbr __bs_nonsingle(rm,4,(t),(h),(o),(a),(c)) 336292407Sbr#define bus_space_read_multi_8(t, h, o, a, c) \ 337292407Sbr __bs_nonsingle(rm,8,(t),(h),(o),(a),(c)) 338292407Sbr 339292407Sbr#define bus_space_read_multi_stream_1(t, h, o, a, c) \ 340292407Sbr __bs_nonsingle_s(rm,1,(t),(h),(o),(a),(c)) 341292407Sbr#define bus_space_read_multi_stream_2(t, h, o, a, c) \ 342292407Sbr __bs_nonsingle_s(rm,2,(t),(h),(o),(a),(c)) 343292407Sbr#define bus_space_read_multi_stream_4(t, h, o, a, c) \ 344292407Sbr __bs_nonsingle_s(rm,4,(t),(h),(o),(a),(c)) 345292407Sbr#define bus_space_read_multi_stream_8(t, h, o, a, c) \ 346292407Sbr __bs_nonsingle_s(rm,8,(t),(h),(o),(a),(c)) 347292407Sbr 348292407Sbr 349292407Sbr/* 350292407Sbr * Bus read region operations. 351292407Sbr */ 352292407Sbr#define bus_space_read_region_1(t, h, o, a, c) \ 353292407Sbr __bs_nonsingle(rr,1,(t),(h),(o),(a),(c)) 354292407Sbr#define bus_space_read_region_2(t, h, o, a, c) \ 355292407Sbr __bs_nonsingle(rr,2,(t),(h),(o),(a),(c)) 356292407Sbr#define bus_space_read_region_4(t, h, o, a, c) \ 357292407Sbr __bs_nonsingle(rr,4,(t),(h),(o),(a),(c)) 358292407Sbr#define bus_space_read_region_8(t, h, o, a, c) \ 359292407Sbr __bs_nonsingle(rr,8,(t),(h),(o),(a),(c)) 360292407Sbr 361292407Sbr#define bus_space_read_region_stream_1(t, h, o, a, c) \ 362292407Sbr __bs_nonsingle_s(rr,1,(t),(h),(o),(a),(c)) 363292407Sbr#define bus_space_read_region_stream_2(t, h, o, a, c) \ 364292407Sbr __bs_nonsingle_s(rr,2,(t),(h),(o),(a),(c)) 365292407Sbr#define bus_space_read_region_stream_4(t, h, o, a, c) \ 366292407Sbr __bs_nonsingle_s(rr,4,(t),(h),(o),(a),(c)) 367292407Sbr#define bus_space_read_region_stream_8(t, h, o, a, c) \ 368292407Sbr __bs_nonsingle_s(rr,8,(t),(h),(o),(a),(c)) 369292407Sbr 370292407Sbr 371292407Sbr/* 372292407Sbr * Bus write (single) operations. 373292407Sbr */ 374292407Sbr#define bus_space_write_1(t, h, o, v) __bs_ws(1,(t),(h),(o),(v)) 375292407Sbr#define bus_space_write_2(t, h, o, v) __bs_ws(2,(t),(h),(o),(v)) 376292407Sbr#define bus_space_write_4(t, h, o, v) __bs_ws(4,(t),(h),(o),(v)) 377292407Sbr#define bus_space_write_8(t, h, o, v) __bs_ws(8,(t),(h),(o),(v)) 378292407Sbr 379292407Sbr#define bus_space_write_stream_1(t, h, o, v) __bs_ws_s(1,(t),(h),(o),(v)) 380292407Sbr#define bus_space_write_stream_2(t, h, o, v) __bs_ws_s(2,(t),(h),(o),(v)) 381292407Sbr#define bus_space_write_stream_4(t, h, o, v) __bs_ws_s(4,(t),(h),(o),(v)) 382292407Sbr#define bus_space_write_stream_8(t, h, o, v) __bs_ws_s(8,(t),(h),(o),(v)) 383292407Sbr 384292407Sbr 385292407Sbr/* 386292407Sbr * Bus write multiple operations. 387292407Sbr */ 388292407Sbr#define bus_space_write_multi_1(t, h, o, a, c) \ 389292407Sbr __bs_nonsingle(wm,1,(t),(h),(o),(a),(c)) 390292407Sbr#define bus_space_write_multi_2(t, h, o, a, c) \ 391292407Sbr __bs_nonsingle(wm,2,(t),(h),(o),(a),(c)) 392292407Sbr#define bus_space_write_multi_4(t, h, o, a, c) \ 393292407Sbr __bs_nonsingle(wm,4,(t),(h),(o),(a),(c)) 394292407Sbr#define bus_space_write_multi_8(t, h, o, a, c) \ 395292407Sbr __bs_nonsingle(wm,8,(t),(h),(o),(a),(c)) 396292407Sbr 397292407Sbr#define bus_space_write_multi_stream_1(t, h, o, a, c) \ 398292407Sbr __bs_nonsingle_s(wm,1,(t),(h),(o),(a),(c)) 399292407Sbr#define bus_space_write_multi_stream_2(t, h, o, a, c) \ 400292407Sbr __bs_nonsingle_s(wm,2,(t),(h),(o),(a),(c)) 401292407Sbr#define bus_space_write_multi_stream_4(t, h, o, a, c) \ 402292407Sbr __bs_nonsingle_s(wm,4,(t),(h),(o),(a),(c)) 403292407Sbr#define bus_space_write_multi_stream_8(t, h, o, a, c) \ 404292407Sbr __bs_nonsingle_s(wm,8,(t),(h),(o),(a),(c)) 405292407Sbr 406292407Sbr 407292407Sbr/* 408292407Sbr * Bus write region operations. 409292407Sbr */ 410292407Sbr#define bus_space_write_region_1(t, h, o, a, c) \ 411292407Sbr __bs_nonsingle(wr,1,(t),(h),(o),(a),(c)) 412292407Sbr#define bus_space_write_region_2(t, h, o, a, c) \ 413292407Sbr __bs_nonsingle(wr,2,(t),(h),(o),(a),(c)) 414292407Sbr#define bus_space_write_region_4(t, h, o, a, c) \ 415292407Sbr __bs_nonsingle(wr,4,(t),(h),(o),(a),(c)) 416292407Sbr#define bus_space_write_region_8(t, h, o, a, c) \ 417292407Sbr __bs_nonsingle(wr,8,(t),(h),(o),(a),(c)) 418292407Sbr 419292407Sbr#define bus_space_write_region_stream_1(t, h, o, a, c) \ 420292407Sbr __bs_nonsingle_s(wr,1,(t),(h),(o),(a),(c)) 421292407Sbr#define bus_space_write_region_stream_2(t, h, o, a, c) \ 422292407Sbr __bs_nonsingle_s(wr,2,(t),(h),(o),(a),(c)) 423292407Sbr#define bus_space_write_region_stream_4(t, h, o, a, c) \ 424292407Sbr __bs_nonsingle_s(wr,4,(t),(h),(o),(a),(c)) 425292407Sbr#define bus_space_write_region_stream_8(t, h, o, a, c) \ 426292407Sbr __bs_nonsingle_s(wr,8,(t),(h),(o),(a),(c)) 427292407Sbr 428292407Sbr 429292407Sbr/* 430292407Sbr * Set multiple operations. 431292407Sbr */ 432292407Sbr#define bus_space_set_multi_1(t, h, o, v, c) \ 433292407Sbr __bs_set(sm,1,(t),(h),(o),(v),(c)) 434292407Sbr#define bus_space_set_multi_2(t, h, o, v, c) \ 435292407Sbr __bs_set(sm,2,(t),(h),(o),(v),(c)) 436292407Sbr#define bus_space_set_multi_4(t, h, o, v, c) \ 437292407Sbr __bs_set(sm,4,(t),(h),(o),(v),(c)) 438292407Sbr#define bus_space_set_multi_8(t, h, o, v, c) \ 439292407Sbr __bs_set(sm,8,(t),(h),(o),(v),(c)) 440292407Sbr 441292407Sbr 442292407Sbr/* 443292407Sbr * Set region operations. 444292407Sbr */ 445292407Sbr#define bus_space_set_region_1(t, h, o, v, c) \ 446292407Sbr __bs_set(sr,1,(t),(h),(o),(v),(c)) 447292407Sbr#define bus_space_set_region_2(t, h, o, v, c) \ 448292407Sbr __bs_set(sr,2,(t),(h),(o),(v),(c)) 449292407Sbr#define bus_space_set_region_4(t, h, o, v, c) \ 450292407Sbr __bs_set(sr,4,(t),(h),(o),(v),(c)) 451292407Sbr#define bus_space_set_region_8(t, h, o, v, c) \ 452292407Sbr __bs_set(sr,8,(t),(h),(o),(v),(c)) 453292407Sbr 454292407Sbr 455292407Sbr/* 456292407Sbr * Copy operations. 457292407Sbr */ 458292407Sbr#define bus_space_copy_region_1(t, h1, o1, h2, o2, c) \ 459292407Sbr __bs_copy(1, t, h1, o1, h2, o2, c) 460292407Sbr#define bus_space_copy_region_2(t, h1, o1, h2, o2, c) \ 461292407Sbr __bs_copy(2, t, h1, o1, h2, o2, c) 462292407Sbr#define bus_space_copy_region_4(t, h1, o1, h2, o2, c) \ 463292407Sbr __bs_copy(4, t, h1, o1, h2, o2, c) 464292407Sbr#define bus_space_copy_region_8(t, h1, o1, h2, o2, c) \ 465292407Sbr __bs_copy(8, t, h1, o1, h2, o2, c) 466292407Sbr 467292407Sbr#include <machine/bus_dma.h> 468292407Sbr 469292407Sbr#endif /* _MACHINE_BUS_H_ */ 470