The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/arm64/include/bus.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*      $NetBSD: bus.h,v 1.11 2003/07/28 17:35:54 thorpej Exp $ */
    2 
    3 /*-
    4  * Copyright (c) 1996, 1997, 1998, 2001 The NetBSD Foundation, Inc.
    5  * All rights reserved.
    6  *
    7  * This code is derived from software contributed to The NetBSD Foundation
    8  * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
    9  * NASA Ames Research Center.
   10  *
   11  * Redistribution and use in source and binary forms, with or without
   12  * modification, are permitted provided that the following conditions
   13  * are met:
   14  * 1. Redistributions of source code must retain the above copyright
   15  *    notice, this list of conditions and the following disclaimer.
   16  * 2. Redistributions in binary form must reproduce the above copyright
   17  *    notice, this list of conditions and the following disclaimer in the
   18  *    documentation and/or other materials provided with the distribution.
   19  *
   20  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
   21  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
   22  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   23  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
   24  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   25  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   26  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   27  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
   28  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   29  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   30  * POSSIBILITY OF SUCH DAMAGE.
   31  */
   32 
   33 /*-
   34  * Copyright (c) 1996 Charles M. Hannum.  All rights reserved.
   35  * Copyright (c) 1996 Christopher G. Demetriou.  All rights reserved.
   36  *
   37  * Redistribution and use in source and binary forms, with or without
   38  * modification, are permitted provided that the following conditions
   39  * are met:
   40  * 1. Redistributions of source code must retain the above copyright
   41  *    notice, this list of conditions and the following disclaimer.
   42  * 2. Redistributions in binary form must reproduce the above copyright
   43  *    notice, this list of conditions and the following disclaimer in the
   44  *    documentation and/or other materials provided with the distribution.
   45  * 3. All advertising materials mentioning features or use of this software
   46  *    must display the following acknowledgement:
   47  *      This product includes software developed by Christopher G. Demetriou
   48  *      for the NetBSD Project.
   49  * 4. The name of the author may not be used to endorse or promote products
   50  *    derived from this software without specific prior written permission
   51  *
   52  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   53  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   54  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   55  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
   56  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
   57  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   58  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   59  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   60  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   61  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   62  *
   63  * From: sys/arm/include/bus.h
   64  *
   65  * $FreeBSD: releng/11.2/sys/arm64/include/bus.h 281494 2015-04-13 14:43:10Z andrew $
   66  */
   67 
   68 #ifndef _MACHINE_BUS_H_
   69 #define _MACHINE_BUS_H_
   70 
   71 #include <machine/_bus.h>
   72 
   73 #define BUS_SPACE_ALIGNED_POINTER(p, t) ALIGNED_POINTER(p, t)
   74 
   75 #define BUS_SPACE_MAXADDR_24BIT 0xFFFFFFUL
   76 #define BUS_SPACE_MAXADDR_32BIT 0xFFFFFFFFUL
   77 #define BUS_SPACE_MAXSIZE_24BIT 0xFFFFFFUL
   78 #define BUS_SPACE_MAXSIZE_32BIT 0xFFFFFFFFUL
   79 
   80 #define BUS_SPACE_MAXADDR       0xFFFFFFFFFFFFFFFFUL
   81 #define BUS_SPACE_MAXSIZE       0xFFFFFFFFFFFFFFFFUL
   82 
   83 #define BUS_SPACE_MAP_CACHEABLE         0x01
   84 #define BUS_SPACE_MAP_LINEAR            0x02
   85 #define BUS_SPACE_MAP_PREFETCHABLE      0x04
   86 
   87 #define BUS_SPACE_UNRESTRICTED  (~0)
   88 
   89 #define BUS_SPACE_BARRIER_READ  0x01
   90 #define BUS_SPACE_BARRIER_WRITE 0x02
   91 
   92 
   93 struct bus_space {
   94         /* cookie */
   95         void            *bs_cookie;
   96 
   97         /* mapping/unmapping */
   98         int             (*bs_map) (void *, bus_addr_t, bus_size_t,
   99                             int, bus_space_handle_t *);
  100         void            (*bs_unmap) (void *, bus_space_handle_t, bus_size_t);
  101         int             (*bs_subregion) (void *, bus_space_handle_t,
  102                             bus_size_t, bus_size_t, bus_space_handle_t *);
  103 
  104         /* allocation/deallocation */
  105         int             (*bs_alloc) (void *, bus_addr_t, bus_addr_t,
  106                             bus_size_t, bus_size_t, bus_size_t, int,
  107                             bus_addr_t *, bus_space_handle_t *);
  108         void            (*bs_free) (void *, bus_space_handle_t,
  109                             bus_size_t);
  110 
  111         /* get kernel virtual address */
  112         /* barrier */
  113         void            (*bs_barrier) (void *, bus_space_handle_t,
  114                             bus_size_t, bus_size_t, int);
  115 
  116         /* read single */
  117         u_int8_t        (*bs_r_1) (void *, bus_space_handle_t, bus_size_t);
  118         u_int16_t       (*bs_r_2) (void *, bus_space_handle_t, bus_size_t);
  119         u_int32_t       (*bs_r_4) (void *, bus_space_handle_t, bus_size_t);
  120         u_int64_t       (*bs_r_8) (void *, bus_space_handle_t, bus_size_t);
  121 
  122         /* read multiple */
  123         void            (*bs_rm_1) (void *, bus_space_handle_t, bus_size_t,
  124             u_int8_t *, bus_size_t);
  125         void            (*bs_rm_2) (void *, bus_space_handle_t, bus_size_t,
  126             u_int16_t *, bus_size_t);
  127         void            (*bs_rm_4) (void *, bus_space_handle_t,
  128                             bus_size_t, u_int32_t *, bus_size_t);
  129         void            (*bs_rm_8) (void *, bus_space_handle_t,
  130                             bus_size_t, u_int64_t *, bus_size_t);
  131                                         
  132         /* read region */
  133         void            (*bs_rr_1) (void *, bus_space_handle_t,
  134                             bus_size_t, u_int8_t *, bus_size_t);
  135         void            (*bs_rr_2) (void *, bus_space_handle_t,
  136                             bus_size_t, u_int16_t *, bus_size_t);
  137         void            (*bs_rr_4) (void *, bus_space_handle_t,
  138                             bus_size_t, u_int32_t *, bus_size_t);
  139         void            (*bs_rr_8) (void *, bus_space_handle_t,
  140                             bus_size_t, u_int64_t *, bus_size_t);
  141                                         
  142         /* write single */
  143         void            (*bs_w_1) (void *, bus_space_handle_t,
  144                             bus_size_t, u_int8_t);
  145         void            (*bs_w_2) (void *, bus_space_handle_t,
  146                             bus_size_t, u_int16_t);
  147         void            (*bs_w_4) (void *, bus_space_handle_t,
  148                             bus_size_t, u_int32_t);
  149         void            (*bs_w_8) (void *, bus_space_handle_t,
  150                             bus_size_t, u_int64_t);
  151 
  152         /* write multiple */
  153         void            (*bs_wm_1) (void *, bus_space_handle_t,
  154                             bus_size_t, const u_int8_t *, bus_size_t);
  155         void            (*bs_wm_2) (void *, bus_space_handle_t,
  156                             bus_size_t, const u_int16_t *, bus_size_t);
  157         void            (*bs_wm_4) (void *, bus_space_handle_t,
  158                             bus_size_t, const u_int32_t *, bus_size_t);
  159         void            (*bs_wm_8) (void *, bus_space_handle_t,
  160                             bus_size_t, const u_int64_t *, bus_size_t);
  161                                         
  162         /* write region */
  163         void            (*bs_wr_1) (void *, bus_space_handle_t,
  164                             bus_size_t, const u_int8_t *, bus_size_t);
  165         void            (*bs_wr_2) (void *, bus_space_handle_t,
  166                             bus_size_t, const u_int16_t *, bus_size_t);
  167         void            (*bs_wr_4) (void *, bus_space_handle_t,
  168                             bus_size_t, const u_int32_t *, bus_size_t);
  169         void            (*bs_wr_8) (void *, bus_space_handle_t,
  170                             bus_size_t, const u_int64_t *, bus_size_t);
  171 
  172         /* set multiple */
  173         void            (*bs_sm_1) (void *, bus_space_handle_t,
  174                             bus_size_t, u_int8_t, bus_size_t);
  175         void            (*bs_sm_2) (void *, bus_space_handle_t,
  176                             bus_size_t, u_int16_t, bus_size_t);
  177         void            (*bs_sm_4) (void *, bus_space_handle_t,
  178                             bus_size_t, u_int32_t, bus_size_t);
  179         void            (*bs_sm_8) (void *, bus_space_handle_t,
  180                             bus_size_t, u_int64_t, bus_size_t);
  181 
  182         /* set region */
  183         void            (*bs_sr_1) (void *, bus_space_handle_t,
  184                             bus_size_t, u_int8_t, bus_size_t);
  185         void            (*bs_sr_2) (void *, bus_space_handle_t,
  186                             bus_size_t, u_int16_t, bus_size_t);
  187         void            (*bs_sr_4) (void *, bus_space_handle_t,
  188                             bus_size_t, u_int32_t, bus_size_t);
  189         void            (*bs_sr_8) (void *, bus_space_handle_t,
  190                             bus_size_t, u_int64_t, bus_size_t);
  191 
  192         /* copy */
  193         void            (*bs_c_1) (void *, bus_space_handle_t, bus_size_t,
  194                             bus_space_handle_t, bus_size_t, bus_size_t);
  195         void            (*bs_c_2) (void *, bus_space_handle_t, bus_size_t,
  196                             bus_space_handle_t, bus_size_t, bus_size_t);
  197         void            (*bs_c_4) (void *, bus_space_handle_t, bus_size_t,
  198                             bus_space_handle_t, bus_size_t, bus_size_t);
  199         void            (*bs_c_8) (void *, bus_space_handle_t, bus_size_t,
  200                             bus_space_handle_t, bus_size_t, bus_size_t);
  201 
  202         /* read single stream */
  203         u_int8_t        (*bs_r_1_s) (void *, bus_space_handle_t, bus_size_t);
  204         u_int16_t       (*bs_r_2_s) (void *, bus_space_handle_t, bus_size_t);
  205         u_int32_t       (*bs_r_4_s) (void *, bus_space_handle_t, bus_size_t);
  206         u_int64_t       (*bs_r_8_s) (void *, bus_space_handle_t, bus_size_t);
  207 
  208         /* read multiple stream */
  209         void            (*bs_rm_1_s) (void *, bus_space_handle_t, bus_size_t,
  210             u_int8_t *, bus_size_t);
  211         void            (*bs_rm_2_s) (void *, bus_space_handle_t, bus_size_t,
  212             u_int16_t *, bus_size_t);
  213         void            (*bs_rm_4_s) (void *, bus_space_handle_t,
  214                             bus_size_t, u_int32_t *, bus_size_t);
  215         void            (*bs_rm_8_s) (void *, bus_space_handle_t,
  216                             bus_size_t, u_int64_t *, bus_size_t);
  217                                         
  218         /* read region stream */
  219         void            (*bs_rr_1_s) (void *, bus_space_handle_t,
  220                             bus_size_t, u_int8_t *, bus_size_t);
  221         void            (*bs_rr_2_s) (void *, bus_space_handle_t,
  222                             bus_size_t, u_int16_t *, bus_size_t);
  223         void            (*bs_rr_4_s) (void *, bus_space_handle_t,
  224                             bus_size_t, u_int32_t *, bus_size_t);
  225         void            (*bs_rr_8_s) (void *, bus_space_handle_t,
  226                             bus_size_t, u_int64_t *, bus_size_t);
  227                                         
  228         /* write single stream */
  229         void            (*bs_w_1_s) (void *, bus_space_handle_t,
  230                             bus_size_t, u_int8_t);
  231         void            (*bs_w_2_s) (void *, bus_space_handle_t,
  232                             bus_size_t, u_int16_t);
  233         void            (*bs_w_4_s) (void *, bus_space_handle_t,
  234                             bus_size_t, u_int32_t);
  235         void            (*bs_w_8_s) (void *, bus_space_handle_t,
  236                             bus_size_t, u_int64_t);
  237 
  238         /* write multiple stream */
  239         void            (*bs_wm_1_s) (void *, bus_space_handle_t,
  240                             bus_size_t, const u_int8_t *, bus_size_t);
  241         void            (*bs_wm_2_s) (void *, bus_space_handle_t,
  242                             bus_size_t, const u_int16_t *, bus_size_t);
  243         void            (*bs_wm_4_s) (void *, bus_space_handle_t,
  244                             bus_size_t, const u_int32_t *, bus_size_t);
  245         void            (*bs_wm_8_s) (void *, bus_space_handle_t,
  246                             bus_size_t, const u_int64_t *, bus_size_t);
  247                                         
  248         /* write region stream */
  249         void            (*bs_wr_1_s) (void *, bus_space_handle_t,
  250                             bus_size_t, const u_int8_t *, bus_size_t);
  251         void            (*bs_wr_2_s) (void *, bus_space_handle_t,
  252                             bus_size_t, const u_int16_t *, bus_size_t);
  253         void            (*bs_wr_4_s) (void *, bus_space_handle_t,
  254                             bus_size_t, const u_int32_t *, bus_size_t);
  255         void            (*bs_wr_8_s) (void *, bus_space_handle_t,
  256                             bus_size_t, const u_int64_t *, bus_size_t);
  257 };
  258 
  259 
  260 /*
  261  * Utility macros; INTERNAL USE ONLY.
  262  */
  263 #define __bs_c(a,b)             __CONCAT(a,b)
  264 #define __bs_opname(op,size)    __bs_c(__bs_c(__bs_c(bs_,op),_),size)
  265 
  266 #define __bs_rs(sz, t, h, o)                                            \
  267         (*(t)->__bs_opname(r,sz))((t)->bs_cookie, h, o)
  268 #define __bs_ws(sz, t, h, o, v)                                         \
  269         (*(t)->__bs_opname(w,sz))((t)->bs_cookie, h, o, v)
  270 #define __bs_nonsingle(type, sz, t, h, o, a, c)                         \
  271         (*(t)->__bs_opname(type,sz))((t)->bs_cookie, h, o, a, c)
  272 #define __bs_set(type, sz, t, h, o, v, c)                               \
  273         (*(t)->__bs_opname(type,sz))((t)->bs_cookie, h, o, v, c)
  274 #define __bs_copy(sz, t, h1, o1, h2, o2, cnt)                           \
  275         (*(t)->__bs_opname(c,sz))((t)->bs_cookie, h1, o1, h2, o2, cnt)
  276 
  277 #define __bs_opname_s(op,size)  __bs_c(__bs_c(__bs_c(__bs_c(bs_,op),_),size),_s)
  278 #define __bs_rs_s(sz, t, h, o)                                          \
  279         (*(t)->__bs_opname_s(r,sz))((t)->bs_cookie, h, o)
  280 #define __bs_ws_s(sz, t, h, o, v)                                       \
  281         (*(t)->__bs_opname_s(w,sz))((t)->bs_cookie, h, o, v)
  282 #define __bs_nonsingle_s(type, sz, t, h, o, a, c)                       \
  283         (*(t)->__bs_opname_s(type,sz))((t)->bs_cookie, h, o, a, c)
  284 
  285 
  286 /*
  287  * Mapping and unmapping operations.
  288  */
  289 #define bus_space_map(t, a, s, c, hp)                                   \
  290         (*(t)->bs_map)((t)->bs_cookie, (a), (s), (c), (hp))
  291 #define bus_space_unmap(t, h, s)                                        \
  292         (*(t)->bs_unmap)((t)->bs_cookie, (h), (s))
  293 #define bus_space_subregion(t, h, o, s, hp)                             \
  294         (*(t)->bs_subregion)((t)->bs_cookie, (h), (o), (s), (hp))
  295 
  296 
  297 /*
  298  * Allocation and deallocation operations.
  299  */
  300 #define bus_space_alloc(t, rs, re, s, a, b, c, ap, hp)                  \
  301         (*(t)->bs_alloc)((t)->bs_cookie, (rs), (re), (s), (a), (b),     \
  302             (c), (ap), (hp))
  303 #define bus_space_free(t, h, s)                                         \
  304         (*(t)->bs_free)((t)->bs_cookie, (h), (s))
  305 
  306 /*
  307  * Bus barrier operations.
  308  */
  309 #define bus_space_barrier(t, h, o, l, f)                                \
  310         (*(t)->bs_barrier)((t)->bs_cookie, (h), (o), (l), (f))
  311 
  312 
  313 
  314 /*
  315  * Bus read (single) operations.
  316  */
  317 #define bus_space_read_1(t, h, o)       __bs_rs(1,(t),(h),(o))
  318 #define bus_space_read_2(t, h, o)       __bs_rs(2,(t),(h),(o))
  319 #define bus_space_read_4(t, h, o)       __bs_rs(4,(t),(h),(o))
  320 #define bus_space_read_8(t, h, o)       __bs_rs(8,(t),(h),(o))
  321 
  322 #define bus_space_read_stream_1(t, h, o)        __bs_rs_s(1,(t), (h), (o))
  323 #define bus_space_read_stream_2(t, h, o)        __bs_rs_s(2,(t), (h), (o))
  324 #define bus_space_read_stream_4(t, h, o)        __bs_rs_s(4,(t), (h), (o))
  325 #define bus_space_read_stream_8(t, h, o)        __bs_rs_s(8,8,(t),(h),(o))
  326 
  327 /*
  328  * Bus read multiple operations.
  329  */
  330 #define bus_space_read_multi_1(t, h, o, a, c)                           \
  331         __bs_nonsingle(rm,1,(t),(h),(o),(a),(c))
  332 #define bus_space_read_multi_2(t, h, o, a, c)                           \
  333         __bs_nonsingle(rm,2,(t),(h),(o),(a),(c))
  334 #define bus_space_read_multi_4(t, h, o, a, c)                           \
  335         __bs_nonsingle(rm,4,(t),(h),(o),(a),(c))
  336 #define bus_space_read_multi_8(t, h, o, a, c)                           \
  337         __bs_nonsingle(rm,8,(t),(h),(o),(a),(c))
  338 
  339 #define bus_space_read_multi_stream_1(t, h, o, a, c)                    \
  340         __bs_nonsingle_s(rm,1,(t),(h),(o),(a),(c))
  341 #define bus_space_read_multi_stream_2(t, h, o, a, c)                    \
  342         __bs_nonsingle_s(rm,2,(t),(h),(o),(a),(c))
  343 #define bus_space_read_multi_stream_4(t, h, o, a, c)                    \
  344         __bs_nonsingle_s(rm,4,(t),(h),(o),(a),(c))
  345 #define bus_space_read_multi_stream_8(t, h, o, a, c)                    \
  346         __bs_nonsingle_s(rm,8,(t),(h),(o),(a),(c))
  347 
  348 
  349 /*
  350  * Bus read region operations.
  351  */
  352 #define bus_space_read_region_1(t, h, o, a, c)                          \
  353         __bs_nonsingle(rr,1,(t),(h),(o),(a),(c))
  354 #define bus_space_read_region_2(t, h, o, a, c)                          \
  355         __bs_nonsingle(rr,2,(t),(h),(o),(a),(c))
  356 #define bus_space_read_region_4(t, h, o, a, c)                          \
  357         __bs_nonsingle(rr,4,(t),(h),(o),(a),(c))
  358 #define bus_space_read_region_8(t, h, o, a, c)                          \
  359         __bs_nonsingle(rr,8,(t),(h),(o),(a),(c))
  360 
  361 #define bus_space_read_region_stream_1(t, h, o, a, c)                   \
  362         __bs_nonsingle_s(rr,1,(t),(h),(o),(a),(c))
  363 #define bus_space_read_region_stream_2(t, h, o, a, c)                   \
  364         __bs_nonsingle_s(rr,2,(t),(h),(o),(a),(c))
  365 #define bus_space_read_region_stream_4(t, h, o, a, c)                   \
  366         __bs_nonsingle_s(rr,4,(t),(h),(o),(a),(c))
  367 #define bus_space_read_region_stream_8(t, h, o, a, c)                   \
  368         __bs_nonsingle_s(rr,8,(t),(h),(o),(a),(c))
  369 
  370 
  371 /*
  372  * Bus write (single) operations.
  373  */
  374 #define bus_space_write_1(t, h, o, v)   __bs_ws(1,(t),(h),(o),(v))
  375 #define bus_space_write_2(t, h, o, v)   __bs_ws(2,(t),(h),(o),(v))
  376 #define bus_space_write_4(t, h, o, v)   __bs_ws(4,(t),(h),(o),(v))
  377 #define bus_space_write_8(t, h, o, v)   __bs_ws(8,(t),(h),(o),(v))
  378 
  379 #define bus_space_write_stream_1(t, h, o, v)    __bs_ws_s(1,(t),(h),(o),(v))
  380 #define bus_space_write_stream_2(t, h, o, v)    __bs_ws_s(2,(t),(h),(o),(v))
  381 #define bus_space_write_stream_4(t, h, o, v)    __bs_ws_s(4,(t),(h),(o),(v))
  382 #define bus_space_write_stream_8(t, h, o, v)    __bs_ws_s(8,(t),(h),(o),(v))
  383 
  384 
  385 /*
  386  * Bus write multiple operations.
  387  */
  388 #define bus_space_write_multi_1(t, h, o, a, c)                          \
  389         __bs_nonsingle(wm,1,(t),(h),(o),(a),(c))
  390 #define bus_space_write_multi_2(t, h, o, a, c)                          \
  391         __bs_nonsingle(wm,2,(t),(h),(o),(a),(c))
  392 #define bus_space_write_multi_4(t, h, o, a, c)                          \
  393         __bs_nonsingle(wm,4,(t),(h),(o),(a),(c))
  394 #define bus_space_write_multi_8(t, h, o, a, c)                          \
  395         __bs_nonsingle(wm,8,(t),(h),(o),(a),(c))
  396 
  397 #define bus_space_write_multi_stream_1(t, h, o, a, c)                   \
  398         __bs_nonsingle_s(wm,1,(t),(h),(o),(a),(c))
  399 #define bus_space_write_multi_stream_2(t, h, o, a, c)                   \
  400         __bs_nonsingle_s(wm,2,(t),(h),(o),(a),(c))
  401 #define bus_space_write_multi_stream_4(t, h, o, a, c)                   \
  402         __bs_nonsingle_s(wm,4,(t),(h),(o),(a),(c))
  403 #define bus_space_write_multi_stream_8(t, h, o, a, c)                   \
  404         __bs_nonsingle_s(wm,8,(t),(h),(o),(a),(c))
  405 
  406 
  407 /*
  408  * Bus write region operations.
  409  */
  410 #define bus_space_write_region_1(t, h, o, a, c)                         \
  411         __bs_nonsingle(wr,1,(t),(h),(o),(a),(c))
  412 #define bus_space_write_region_2(t, h, o, a, c)                         \
  413         __bs_nonsingle(wr,2,(t),(h),(o),(a),(c))
  414 #define bus_space_write_region_4(t, h, o, a, c)                         \
  415         __bs_nonsingle(wr,4,(t),(h),(o),(a),(c))
  416 #define bus_space_write_region_8(t, h, o, a, c)                         \
  417         __bs_nonsingle(wr,8,(t),(h),(o),(a),(c))
  418 
  419 #define bus_space_write_region_stream_1(t, h, o, a, c)                  \
  420         __bs_nonsingle_s(wr,1,(t),(h),(o),(a),(c))
  421 #define bus_space_write_region_stream_2(t, h, o, a, c)                  \
  422         __bs_nonsingle_s(wr,2,(t),(h),(o),(a),(c))
  423 #define bus_space_write_region_stream_4(t, h, o, a, c)                  \
  424         __bs_nonsingle_s(wr,4,(t),(h),(o),(a),(c))
  425 #define bus_space_write_region_stream_8(t, h, o, a, c)                  \
  426         __bs_nonsingle_s(wr,8,(t),(h),(o),(a),(c))
  427 
  428 
  429 /*
  430  * Set multiple operations.
  431  */
  432 #define bus_space_set_multi_1(t, h, o, v, c)                            \
  433         __bs_set(sm,1,(t),(h),(o),(v),(c))
  434 #define bus_space_set_multi_2(t, h, o, v, c)                            \
  435         __bs_set(sm,2,(t),(h),(o),(v),(c))
  436 #define bus_space_set_multi_4(t, h, o, v, c)                            \
  437         __bs_set(sm,4,(t),(h),(o),(v),(c))
  438 #define bus_space_set_multi_8(t, h, o, v, c)                            \
  439         __bs_set(sm,8,(t),(h),(o),(v),(c))
  440 
  441 
  442 /*
  443  * Set region operations.
  444  */
  445 #define bus_space_set_region_1(t, h, o, v, c)                           \
  446         __bs_set(sr,1,(t),(h),(o),(v),(c))
  447 #define bus_space_set_region_2(t, h, o, v, c)                           \
  448         __bs_set(sr,2,(t),(h),(o),(v),(c))
  449 #define bus_space_set_region_4(t, h, o, v, c)                           \
  450         __bs_set(sr,4,(t),(h),(o),(v),(c))
  451 #define bus_space_set_region_8(t, h, o, v, c)                           \
  452         __bs_set(sr,8,(t),(h),(o),(v),(c))
  453 
  454 
  455 /*
  456  * Copy operations.
  457  */
  458 #define bus_space_copy_region_1(t, h1, o1, h2, o2, c)                           \
  459         __bs_copy(1, t, h1, o1, h2, o2, c)
  460 #define bus_space_copy_region_2(t, h1, o1, h2, o2, c)                           \
  461         __bs_copy(2, t, h1, o1, h2, o2, c)
  462 #define bus_space_copy_region_4(t, h1, o1, h2, o2, c)                           \
  463         __bs_copy(4, t, h1, o1, h2, o2, c)
  464 #define bus_space_copy_region_8(t, h1, o1, h2, o2, c)                           \
  465         __bs_copy(8, t, h1, o1, h2, o2, c)
  466 
  467 #include <machine/bus_dma.h>
  468 
  469 #endif /* _MACHINE_BUS_H_ */

Cache object: 0a0eee05a40ab2ba37334b6917dc11e5


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.