Author: ian
Date: Fri Feb 13 22:32:02 2015
New Revision: 278727
URL: https://svnweb.freebsd.org/changeset/base/278727

Log:
  MFC r277454, r277460, r277465, r277466, r277467, r277469, r277470, r277471,
      r277472, r277473, r277474, r277475, r277476, r277477, r277478, r277479,
      r277480, r277512, r277516:
  
    Add inline implementations of arm bus_space_read/write_N().
  
    Revise the arm bus_space implementation to avoid dereferencing the tag on
    every operation to retrieve the bs_cookie value almost nothing actually 
uses.
  
    Use the explicit member initializer style to init the bus_space struct.
  
    Use arm/bus_space-v6.c for all armv6 systems
  
    Consolidate many identical implementations of bus_space to a single
    common tag and implementation shared by armv4 and armv6.
  
    Micro-optimize the new arm inline bus_space implementation by grouping all
    the data the inline functions access together at the start of the bus_space
    struct so that they all fit in a single cache line.

Added:
  stable/10/sys/arm/arm/bus_space_base.c
     - copied, changed from r277472, head/sys/arm/arm/bus_space_base.c
Deleted:
  stable/10/sys/arm/arm/bus_space-v6.c
  stable/10/sys/arm/lpc/lpc_space.c
  stable/10/sys/arm/mv/bus_space.c
  stable/10/sys/arm/samsung/s3c2xx0/s3c2xx0_space.c
  stable/10/sys/arm/versatile/bus_space.c
  stable/10/sys/arm/versatile/versatile_pci_bus_space.c
  stable/10/sys/arm/versatile/versatile_pci_bus_space.h
  stable/10/sys/arm/xilinx/zy7_bus_space.c
  stable/10/sys/arm/xscale/i80321/obio_space.c
  stable/10/sys/arm/xscale/i8134x/obio_space.c
Modified:
  stable/10/sys/arm/allwinner/a20/files.a20
  stable/10/sys/arm/allwinner/files.a10
  stable/10/sys/arm/arm/bus_space_asm_generic.S
  stable/10/sys/arm/arm/bus_space_generic.c
  stable/10/sys/arm/at91/at91.c
  stable/10/sys/arm/at91/files.at91
  stable/10/sys/arm/broadcom/bcm2835/files.bcm2835
  stable/10/sys/arm/cavium/cns11xx/econa.c
  stable/10/sys/arm/cavium/cns11xx/files.econa
  stable/10/sys/arm/freescale/imx/files.imx51
  stable/10/sys/arm/freescale/imx/files.imx53
  stable/10/sys/arm/freescale/imx/files.imx6
  stable/10/sys/arm/freescale/vybrid/files.vybrid
  stable/10/sys/arm/include/bus.h
  stable/10/sys/arm/lpc/files.lpc
  stable/10/sys/arm/mv/files.mv
  stable/10/sys/arm/rockchip/files.rk30xx
  stable/10/sys/arm/samsung/exynos/files.exynos5
  stable/10/sys/arm/samsung/s3c2xx0/files.s3c2xx0
  stable/10/sys/arm/samsung/s3c2xx0/s3c24x0.c
  stable/10/sys/arm/samsung/s3c2xx0/s3c2xx0var.h
  stable/10/sys/arm/samsung/s3c2xx0/uart_cpu_s3c2410.c
  stable/10/sys/arm/ti/files.ti
  stable/10/sys/arm/versatile/files.versatile
  stable/10/sys/arm/versatile/versatile_pci.c
  stable/10/sys/arm/xilinx/files.zynq7
  stable/10/sys/arm/xscale/i80321/ep80219_machdep.c
  stable/10/sys/arm/xscale/i80321/files.ep80219
  stable/10/sys/arm/xscale/i80321/files.i80219
  stable/10/sys/arm/xscale/i80321/files.i80321
  stable/10/sys/arm/xscale/i80321/files.iq31244
  stable/10/sys/arm/xscale/i80321/i80321_space.c
  stable/10/sys/arm/xscale/i80321/iq31244_machdep.c
  stable/10/sys/arm/xscale/i80321/obio.c
  stable/10/sys/arm/xscale/i80321/obiovar.h
  stable/10/sys/arm/xscale/i80321/uart_cpu_i80321.c
  stable/10/sys/arm/xscale/i8134x/crb_machdep.c
  stable/10/sys/arm/xscale/i8134x/files.i81342
  stable/10/sys/arm/xscale/i8134x/i81342_space.c
  stable/10/sys/arm/xscale/i8134x/obio.c
  stable/10/sys/arm/xscale/i8134x/obiovar.h
  stable/10/sys/arm/xscale/i8134x/uart_cpu_i81342.c
  stable/10/sys/arm/xscale/ixp425/avila_ata.c
  stable/10/sys/arm/xscale/ixp425/cambria_exp_space.c
  stable/10/sys/arm/xscale/ixp425/ixp425_a4x_space.c
  stable/10/sys/arm/xscale/ixp425/ixp425_pci_space.c
  stable/10/sys/arm/xscale/ixp425/ixp425_space.c
  stable/10/sys/arm/xscale/pxa/pxa_space.c
  stable/10/sys/dev/usb/controller/ehci_ixp4xx.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/arm/allwinner/a20/files.a20
==============================================================================
--- stable/10/sys/arm/allwinner/a20/files.a20   Fri Feb 13 22:08:19 2015        
(r278726)
+++ stable/10/sys/arm/allwinner/a20/files.a20   Fri Feb 13 22:32:02 2015        
(r278727)
@@ -17,7 +17,7 @@ arm/allwinner/a10_ehci.c              optional        ehci
 arm/allwinner/if_emac.c                        optional        emac
 arm/allwinner/a10_wdog.c               standard
 arm/allwinner/timer.c                  standard
-arm/arm/bus_space-v6.c                 standard
-arm/allwinner/a10_common.c                     standard
+arm/arm/bus_space_base.c               standard
+arm/allwinner/a10_common.c             standard
 arm/allwinner/a10_machdep.c            standard
 arm/allwinner/a20/a20_mp.c             optional        smp

Modified: stable/10/sys/arm/allwinner/files.a10
==============================================================================
--- stable/10/sys/arm/allwinner/files.a10       Fri Feb 13 22:08:19 2015        
(r278726)
+++ stable/10/sys/arm/allwinner/files.a10       Fri Feb 13 22:32:02 2015        
(r278727)
@@ -19,5 +19,5 @@ arm/allwinner/a20/a20_cpu_cfg.c       standar
 arm/allwinner/aintc.c                  standard
 arm/allwinner/if_emac.c                        optional        emac
 arm/allwinner/timer.c                  standard
-arm/arm/bus_space-v6.c                 standard
-#arm/allwinner/console.c                       standard
+arm/arm/bus_space_base.c               standard
+#arm/allwinner/console.c               standard

Modified: stable/10/sys/arm/arm/bus_space_asm_generic.S
==============================================================================
--- stable/10/sys/arm/arm/bus_space_asm_generic.S       Fri Feb 13 22:08:19 
2015        (r278726)
+++ stable/10/sys/arm/arm/bus_space_asm_generic.S       Fri Feb 13 22:32:02 
2015        (r278727)
@@ -52,10 +52,10 @@ ENTRY(generic_bs_r_1)
        RET
 END(generic_bs_r_1)
 
-ENTRY(generic_armv4_bs_r_2)
+ENTRY(generic_bs_r_2)
        ldrh    r0, [r1, r2]
        RET
-END(generic_armv4_bs_r_2)
+END(generic_bs_r_2)
 
 ENTRY(generic_bs_r_4)
        ldr     r0, [r1, r2]
@@ -71,10 +71,10 @@ ENTRY(generic_bs_w_1)
        RET
 END(generic_bs_w_1)
 
-ENTRY(generic_armv4_bs_w_2)
+ENTRY(generic_bs_w_2)
        strh    r3, [r1, r2]
        RET
-END(generic_armv4_bs_w_2)
+END(generic_bs_w_2)
 
 ENTRY(generic_bs_w_4)
        str     r3, [r1, r2]
@@ -100,7 +100,7 @@ ENTRY(generic_bs_rm_1)
        RET
 END(generic_bs_rm_1)
 
-ENTRY(generic_armv4_bs_rm_2)
+ENTRY(generic_bs_rm_2)
        add     r0, r1, r2
        mov     r1, r3
        ldr     r2, [sp, #0]
@@ -113,7 +113,7 @@ ENTRY(generic_armv4_bs_rm_2)
        bne     1b
 
        RET
-END(generic_armv4_bs_rm_2)
+END(generic_bs_rm_2)
 
 ENTRY(generic_bs_rm_4)
        add     r0, r1, r2
@@ -149,7 +149,7 @@ ENTRY(generic_bs_wm_1)
        RET
 END(generic_bs_wm_1)
 
-ENTRY(generic_armv4_bs_wm_2)
+ENTRY(generic_bs_wm_2)
        add     r0, r1, r2
        mov     r1, r3
        ldr     r2, [sp, #0]
@@ -162,7 +162,7 @@ ENTRY(generic_armv4_bs_wm_2)
        bne     1b
 
        RET
-END(generic_armv4_bs_wm_2)
+END(generic_bs_wm_2)
 
 ENTRY(generic_bs_wm_4)
        add     r0, r1, r2
@@ -198,7 +198,7 @@ ENTRY(generic_bs_rr_1)
        RET
 END(generic_bs_rr_1)
 
-ENTRY(generic_armv4_bs_rr_2)
+ENTRY(generic_bs_rr_2)
        add     r0, r1, r2
        mov     r1, r3
        ldr     r2, [sp, #0]
@@ -211,7 +211,7 @@ ENTRY(generic_armv4_bs_rr_2)
        bne     1b
 
        RET
-END(generic_armv4_bs_rr_2)
+END(generic_bs_rr_2)
 
 ENTRY(generic_bs_rr_4)
        add     r0, r1, r2
@@ -247,7 +247,7 @@ ENTRY(generic_bs_wr_1)
        RET
 END(generic_bs_wr_1)
 
-ENTRY(generic_armv4_bs_wr_2)
+ENTRY(generic_bs_wr_2)
        add     r0, r1, r2
        mov     r1, r3
        ldr     r2, [sp, #0]
@@ -260,7 +260,7 @@ ENTRY(generic_armv4_bs_wr_2)
        bne     1b
 
        RET
-END(generic_armv4_bs_wr_2)
+END(generic_bs_wr_2)
 
 ENTRY(generic_bs_wr_4)
        add     r0, r1, r2
@@ -295,7 +295,7 @@ ENTRY(generic_bs_sr_1)
        RET
 END(generic_bs_sr_1)
 
-ENTRY(generic_armv4_bs_sr_2)
+ENTRY(generic_bs_sr_2)
        add     r0, r1, r2
        mov     r1, r3
        ldr     r2, [sp, #0]
@@ -307,7 +307,7 @@ ENTRY(generic_armv4_bs_sr_2)
        bne     1b
 
        RET
-END(generic_armv4_bs_sr_2)
+END(generic_bs_sr_2)
 
 ENTRY(generic_bs_sr_4)
        add     r0, r1, r2
@@ -327,7 +327,7 @@ END(generic_bs_sr_4)
  * copy region
  */
 
-ENTRY(generic_armv4_bs_c_2)
+ENTRY(generic_bs_c_2)
        add     r0, r1, r2
        ldr     r2, [sp, #0]
        add     r1, r2, r3
@@ -356,5 +356,5 @@ ENTRY(generic_armv4_bs_c_2)
        bne     3b
 
        RET
-END(generic_armv4_bs_c_2)
+END(generic_bs_c_2)
 

Copied and modified: stable/10/sys/arm/arm/bus_space_base.c (from r277472, 
head/sys/arm/arm/bus_space_base.c)
==============================================================================
--- head/sys/arm/arm/bus_space_base.c   Wed Jan 21 03:44:29 2015        
(r277472, copy source)
+++ stable/10/sys/arm/arm/bus_space_base.c      Fri Feb 13 22:32:02 2015        
(r278727)
@@ -45,7 +45,7 @@ bs_protos(generic);
  * The bus space tag.  This is constant for all instances, so
  * we never have to explicitly "create" it.
  */
-static struct bus_space arm_base_tag = {
+static struct bus_space arm_base_bus_space __aligned(CACHE_LINE_SIZE) = {
        /* privdata is whatever the implementer wants; unused in base tag */
        .bs_privdata    = NULL,
 
@@ -153,5 +153,7 @@ static struct bus_space arm_base_tag = {
 };
 
 #ifdef FDT
-bus_space_tag_t fdtbus_bs_tag = &arm_base_tag;
+bus_space_tag_t fdtbus_bs_tag = &arm_base_bus_space;
 #endif
+
+bus_space_tag_t arm_base_bs_tag = &arm_base_bus_space;

Modified: stable/10/sys/arm/arm/bus_space_generic.c
==============================================================================
--- stable/10/sys/arm/arm/bus_space_generic.c   Fri Feb 13 22:08:19 2015        
(r278726)
+++ stable/10/sys/arm/arm/bus_space_generic.c   Fri Feb 13 22:32:02 2015        
(r278727)
@@ -53,11 +53,18 @@ __FBSDID("$FreeBSD$");
 #include <machine/cpufunc.h>
 #include <machine/devmap.h>
 
+void
+generic_bs_unimplemented(void)
+{
+
+       panic("unimplemented bus_space function called");
+}
+
 /* Prototypes for all the bus_space structure functions */
 bs_protos(generic);
 
 int
-generic_bs_map(void *t, bus_addr_t bpa, bus_size_t size, int flags,
+generic_bs_map(bus_space_tag_t t, bus_addr_t bpa, bus_size_t size, int flags,
     bus_space_handle_t *bshp)
 {
        void *va;
@@ -74,7 +81,7 @@ generic_bs_map(void *t, bus_addr_t bpa, 
 }
 
 int
-generic_bs_alloc(void *t, bus_addr_t rstart, bus_addr_t rend, bus_size_t size,
+generic_bs_alloc(bus_space_tag_t t, bus_addr_t rstart, bus_addr_t rend, 
bus_size_t size,
     bus_size_t alignment, bus_size_t boundary, int flags, bus_addr_t *bpap,
     bus_space_handle_t *bshp)
 {
@@ -84,21 +91,21 @@ generic_bs_alloc(void *t, bus_addr_t rst
 
 
 void
-generic_bs_unmap(void *t, bus_space_handle_t h, bus_size_t size)
+generic_bs_unmap(bus_space_tag_t t, bus_space_handle_t h, bus_size_t size)
 {
 
        pmap_unmapdev((vm_offset_t)h, size);
 }
 
 void
-generic_bs_free(void *t, bus_space_handle_t bsh, bus_size_t size)
+generic_bs_free(bus_space_tag_t t, bus_space_handle_t bsh, bus_size_t size)
 {
 
        panic("generic_bs_free(): not implemented");
 }
 
 int
-generic_bs_subregion(void *t, bus_space_handle_t bsh, bus_size_t offset,
+generic_bs_subregion(bus_space_tag_t t, bus_space_handle_t bsh, bus_size_t 
offset,
     bus_size_t size, bus_space_handle_t *nbshp)
 {
 
@@ -107,7 +114,7 @@ generic_bs_subregion(void *t, bus_space_
 }
 
 void
-generic_bs_barrier(void *t, bus_space_handle_t bsh, bus_size_t offset,
+generic_bs_barrier(bus_space_tag_t t, bus_space_handle_t bsh, bus_size_t 
offset,
     bus_size_t len, int flags)
 {
 

Modified: stable/10/sys/arm/at91/at91.c
==============================================================================
--- stable/10/sys/arm/at91/at91.c       Fri Feb 13 22:08:19 2015        
(r278726)
+++ stable/10/sys/arm/at91/at91.c       Fri Feb 13 22:32:02 2015        
(r278727)
@@ -55,7 +55,7 @@ __FBSDID("$FreeBSD$");
 uint32_t at91_master_clock;
 
 static int
-at91_bs_map(void *t, bus_addr_t bpa, bus_size_t size, int flags,
+at91_bs_map(bus_space_tag_t tag, bus_addr_t bpa, bus_size_t size, int flags,
     bus_space_handle_t *bshp)
 {
        vm_paddr_t pa, endpa;
@@ -77,23 +77,18 @@ at91_bs_map(void *t, bus_addr_t bpa, bus
 }
 
 static void
-at91_bs_unmap(void *t, bus_space_handle_t h, bus_size_t size)
+at91_bs_unmap(bus_space_tag_t tag, bus_space_handle_t h, bus_size_t size)
 {
-       vm_offset_t va, endva;
+       vm_offset_t va;
 
-       if (t == 0)
-               return;
-       va = trunc_page((vm_offset_t)t);
+       va = (vm_offset_t)h;
        if (va >= AT91_BASE && va <= AT91_BASE + 0xff00000)
                return;
-       endva = round_page((vm_offset_t)t + size);
-
-       /* Free the kernel virtual mapping. */
-       kva_free(va, endva - va);
+       pmap_unmapdev(va, size);
 }
 
 static int
-at91_bs_subregion(void *t, bus_space_handle_t bsh, bus_size_t offset,
+at91_bs_subregion(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t 
offset,
     bus_size_t size, bus_space_handle_t *nbshp)
 {
 
@@ -102,7 +97,7 @@ at91_bs_subregion(void *t, bus_space_han
 }
 
 static void
-at91_barrier(void *t, bus_space_handle_t bsh, bus_size_t size, bus_size_t b,
+at91_barrier(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t size, 
bus_size_t b,
     int a)
 {
 }
@@ -121,113 +116,112 @@ bus_dma_get_range_nb(void)
 }
 
 bs_protos(generic);
-bs_protos(generic_armv4);
 
 struct bus_space at91_bs_tag = {
-       /* cookie */
-       (void *) 0,
+       /* privdata is whatever the implementer wants; unused in base tag */
+       .bs_privdata    = NULL,
 
        /* mapping/unmapping */
-       at91_bs_map,
-       at91_bs_unmap,
-       at91_bs_subregion,
+       .bs_map         = at91_bs_map,
+       .bs_unmap       = at91_bs_unmap,
+       .bs_subregion   = at91_bs_subregion,
 
        /* allocation/deallocation */
-       NULL,
-       NULL,
+       .bs_alloc       = generic_bs_alloc,
+       .bs_free        = generic_bs_free,
 
        /* barrier */
-       at91_barrier,
+       .bs_barrier     = at91_barrier,
 
        /* read (single) */
-       generic_bs_r_1,
-       generic_armv4_bs_r_2,
-       generic_bs_r_4,
-       NULL,
+       .bs_r_1         = NULL, /* Use inline code in bus.h */
+       .bs_r_2         = NULL, /* Use inline code in bus.h */
+       .bs_r_4         = NULL, /* Use inline code in bus.h */
+       .bs_r_8         = NULL, /* Use inline code in bus.h */
 
        /* read multiple */
-       generic_bs_rm_1,
-       generic_armv4_bs_rm_2,
-       generic_bs_rm_4,
-       NULL,
+       .bs_rm_1        = generic_bs_rm_1,
+       .bs_rm_2        = generic_bs_rm_2,
+       .bs_rm_4        = generic_bs_rm_4,
+       .bs_rm_8        = BS_UNIMPLEMENTED,
 
        /* read region */
-       generic_bs_rr_1,
-       generic_armv4_bs_rr_2,
-       generic_bs_rr_4,
-       NULL,
+       .bs_rr_1        = generic_bs_rr_1,
+       .bs_rr_2        = generic_bs_rr_2,
+       .bs_rr_4        = generic_bs_rr_4,
+       .bs_rr_8        = BS_UNIMPLEMENTED,
 
        /* write (single) */
-       generic_bs_w_1,
-       generic_armv4_bs_w_2,
-       generic_bs_w_4,
-       NULL,
+       .bs_w_1         = NULL, /* Use inline code in bus.h */
+       .bs_w_2         = NULL, /* Use inline code in bus.h */
+       .bs_w_4         = NULL, /* Use inline code in bus.h */
+       .bs_w_8         = NULL, /* Use inline code in bus.h */
 
        /* write multiple */
-       generic_bs_wm_1,
-       generic_armv4_bs_wm_2,
-       generic_bs_wm_4,
-       NULL,
+       .bs_wm_1        = generic_bs_wm_1,
+       .bs_wm_2        = generic_bs_wm_2,
+       .bs_wm_4        = generic_bs_wm_4,
+       .bs_wm_8        = BS_UNIMPLEMENTED,
 
        /* write region */
-       NULL,
-       generic_armv4_bs_wr_2,
-       generic_bs_wr_4,
-       NULL,
+       .bs_wr_1        = generic_bs_wr_1,
+       .bs_wr_2        = generic_bs_wr_2,
+       .bs_wr_4        = generic_bs_wr_4,
+       .bs_wr_8        = BS_UNIMPLEMENTED,
 
        /* set multiple */
-       NULL,
-       NULL,
-       NULL,
-       NULL,
+       .bs_sm_1        = BS_UNIMPLEMENTED,
+       .bs_sm_2        = BS_UNIMPLEMENTED,
+       .bs_sm_4        = BS_UNIMPLEMENTED,
+       .bs_sm_8        = BS_UNIMPLEMENTED,
 
        /* set region */
-       NULL,
-       generic_armv4_bs_sr_2,
-       generic_bs_sr_4,
-       NULL,
+       .bs_sr_1        = generic_bs_sr_1,
+       .bs_sr_2        = generic_bs_sr_2,
+       .bs_sr_4        = generic_bs_sr_4,
+       .bs_sr_8        = BS_UNIMPLEMENTED,
 
        /* copy */
-       NULL,
-       generic_armv4_bs_c_2,
-       NULL,
-       NULL,
-
-       /* read (single) stream */
-       generic_bs_r_1,
-       generic_armv4_bs_r_2,
-       generic_bs_r_4,
-       NULL,
+       .bs_c_1         = BS_UNIMPLEMENTED,
+       .bs_c_2         = generic_bs_c_2,
+       .bs_c_4         = BS_UNIMPLEMENTED,
+       .bs_c_8         = BS_UNIMPLEMENTED,
+
+       /* read stream (single) */
+       .bs_r_1_s       = NULL,   /* Use inline code in bus.h */ 
+       .bs_r_2_s       = NULL,   /* Use inline code in bus.h */ 
+       .bs_r_4_s       = NULL,   /* Use inline code in bus.h */ 
+       .bs_r_8_s       = NULL,   /* Use inline code in bus.h */ 
 
        /* read multiple stream */
-       generic_bs_rm_1,
-       generic_armv4_bs_rm_2,
-       generic_bs_rm_4,
-       NULL,
+       .bs_rm_1_s      = generic_bs_rm_1,
+       .bs_rm_2_s      = generic_bs_rm_2,
+       .bs_rm_4_s      = generic_bs_rm_4,
+       .bs_rm_8_s      = BS_UNIMPLEMENTED,
 
        /* read region stream */
-       generic_bs_rr_1,
-       generic_armv4_bs_rr_2,
-       generic_bs_rr_4,
-       NULL,
-
-       /* write (single) stream */
-       generic_bs_w_1,
-       generic_armv4_bs_w_2,
-       generic_bs_w_4,
-       NULL,
+       .bs_rr_1_s      = generic_bs_rr_1,
+       .bs_rr_2_s      = generic_bs_rr_2,
+       .bs_rr_4_s      = generic_bs_rr_4,
+       .bs_rr_8_s      = BS_UNIMPLEMENTED,
+
+       /* write stream (single) */
+       .bs_w_1_s       = NULL,   /* Use inline code in bus.h */ 
+       .bs_w_2_s       = NULL,   /* Use inline code in bus.h */ 
+       .bs_w_4_s       = NULL,   /* Use inline code in bus.h */ 
+       .bs_w_8_s       = NULL,   /* Use inline code in bus.h */ 
 
        /* write multiple stream */
-       generic_bs_wm_1,
-       generic_armv4_bs_wm_2,
-       generic_bs_wm_4,
-       NULL,
+       .bs_wm_1_s      = generic_bs_wm_1,
+       .bs_wm_2_s      = generic_bs_wm_2,
+       .bs_wm_4_s      = generic_bs_wm_4,
+       .bs_wm_8_s      = BS_UNIMPLEMENTED,
 
        /* write region stream */
-       NULL,
-       generic_armv4_bs_wr_2,
-       generic_bs_wr_4,
-       NULL,
+       .bs_wr_1_s      = generic_bs_wr_1,
+       .bs_wr_2_s      = generic_bs_wr_2,
+       .bs_wr_4_s      = generic_bs_wr_4,
+       .bs_wr_8_s      = BS_UNIMPLEMENTED,
 };
 
 #ifndef FDT

Modified: stable/10/sys/arm/at91/files.at91
==============================================================================
--- stable/10/sys/arm/at91/files.at91   Fri Feb 13 22:08:19 2015        
(r278726)
+++ stable/10/sys/arm/at91/files.at91   Fri Feb 13 22:32:02 2015        
(r278727)
@@ -1,4 +1,5 @@
 # $FreeBSD$
+arm/arm/bus_space_generic.c    standard
 arm/arm/cpufunc_asm_arm9.S     standard
 arm/at91/at91_machdep.c                standard
 arm/at91/at91_aic.c            standard

Modified: stable/10/sys/arm/broadcom/bcm2835/files.bcm2835
==============================================================================
--- stable/10/sys/arm/broadcom/bcm2835/files.bcm2835    Fri Feb 13 22:08:19 
2015        (r278726)
+++ stable/10/sys/arm/broadcom/bcm2835/files.bcm2835    Fri Feb 13 22:32:02 
2015        (r278727)
@@ -16,7 +16,7 @@ arm/broadcom/bcm2835/bcm2835_systimer.c       
 arm/broadcom/bcm2835/bcm2835_wdog.c            standard
 dev/usb/controller/dwc_otg_fdt.c               optional dwcotg
 
-arm/arm/bus_space-v6.c                         standard
+arm/arm/bus_space_base.c                       standard
 arm/arm/bus_space_generic.c                     standard
 arm/arm/bus_space_asm_generic.S                 standard
 arm/arm/cpufunc_asm_arm11.S                     standard

Modified: stable/10/sys/arm/cavium/cns11xx/econa.c
==============================================================================
--- stable/10/sys/arm/cavium/cns11xx/econa.c    Fri Feb 13 22:08:19 2015        
(r278726)
+++ stable/10/sys/arm/cavium/cns11xx/econa.c    Fri Feb 13 22:32:02 2015        
(r278727)
@@ -56,117 +56,7 @@ unsigned int CPU_clock = 200000000;
 unsigned int AHB_clock;
 unsigned int APB_clock;
 
-bs_protos(generic);
-bs_protos(generic_armv4);
-
-struct bus_space econa_bs_tag = {
-       /* cookie */
-       (void *) 0,
-
-       /* mapping/unmapping */
-       generic_bs_map,
-       generic_bs_unmap,
-       generic_bs_subregion,
-
-       /* allocation/deallocation */
-       generic_bs_alloc,
-       generic_bs_free,
-
-       /* barrier */
-       generic_bs_barrier,
-
-       /* read (single) */
-       generic_bs_r_1,
-       generic_armv4_bs_r_2,
-       generic_bs_r_4,
-       NULL,
-
-       /* read multiple */
-       generic_bs_rm_1,
-       generic_armv4_bs_rm_2,
-       generic_bs_rm_4,
-       NULL,
-
-       /* read region */
-       generic_bs_rr_1,
-       generic_armv4_bs_rr_2,
-       generic_bs_rr_4,
-       NULL,
-
-       /* write (single) */
-       generic_bs_w_1,
-       generic_armv4_bs_w_2,
-       generic_bs_w_4,
-       NULL,
-
-       /* write multiple */
-       generic_bs_wm_1,
-       generic_armv4_bs_wm_2,
-       generic_bs_wm_4,
-       NULL,
-
-       /* write region */
-       NULL,
-       NULL,
-       NULL,
-       NULL,
-
-       /* set multiple */
-       NULL,
-       NULL,
-       NULL,
-       NULL,
-
-       /* set region */
-       NULL,
-       NULL,
-       NULL,
-       NULL,
-
-       /* copy */
-       NULL,
-       NULL,
-       NULL,
-       NULL,
-
-       /* read (single) stream */
-       NULL,
-       NULL,
-       NULL,
-       NULL,
-
-       /* read multiple stream */
-       NULL,
-       generic_armv4_bs_rm_2,
-       NULL,
-       NULL,
-
-       /* read region stream */
-       NULL,
-       NULL,
-       NULL,
-       NULL,
-
-       /* write (single) stream */
-       NULL,
-       NULL,
-       NULL,
-       NULL,
-
-       /* write multiple stream */
-       NULL,
-       generic_armv4_bs_wm_2,
-       NULL,
-       NULL,
-
-       /* write region stream */
-       NULL,
-       NULL,
-       NULL,
-       NULL
-};
-
-bus_space_tag_t obio_tag = &econa_bs_tag;
+bus_space_tag_t obio_tag;
 
 static int
 econa_probe(device_t dev)
@@ -465,8 +355,10 @@ econa_attach(device_t dev)
        struct econa_softc *sc = device_get_softc(dev);
        int i;
 
+       obio_tag = arm_base_bs_tag;
+
        econa_softc = sc;
-       sc->ec_st = &econa_bs_tag;
+       sc->ec_st = arm_base_bs_tag;
        sc->ec_sh = ECONA_IO_BASE;
        sc->dev = dev;
        if (bus_space_subregion(sc->ec_st, sc->ec_sh, ECONA_PIC_BASE,
@@ -548,7 +440,7 @@ econa_alloc_resource(device_t dev, devic
                rle->res = rman_reserve_resource(&sc->ec_mem_rman,
                    start, end, count, flags, child);
                if (rle->res != NULL) {
-                       rman_set_bustag(rle->res, &econa_bs_tag);
+                       rman_set_bustag(rle->res, arm_base_bs_tag);
                        rman_set_bushandle(rle->res, start);
                }
                break;

Modified: stable/10/sys/arm/cavium/cns11xx/files.econa
==============================================================================
--- stable/10/sys/arm/cavium/cns11xx/files.econa        Fri Feb 13 22:08:19 
2015        (r278726)
+++ stable/10/sys/arm/cavium/cns11xx/files.econa        Fri Feb 13 22:32:02 
2015        (r278727)
@@ -6,6 +6,7 @@ arm/cavium/cns11xx/timer.c                      standard
 arm/cavium/cns11xx/uart_bus_ec.c               optional        uart
 arm/cavium/cns11xx/uart_cpu_ec.c               optional        uart
 dev/uart/uart_dev_ns8250.c     optional        uart
+arm/arm/bus_space_base.c               standard
 arm/arm/bus_space_generic.c            standard
 arm/cavium/cns11xx/ehci_ebus.c optional        ehci
 arm/cavium/cns11xx/ohci_ec.c   optional        ohci

Modified: stable/10/sys/arm/freescale/imx/files.imx51
==============================================================================
--- stable/10/sys/arm/freescale/imx/files.imx51 Fri Feb 13 22:08:19 2015        
(r278726)
+++ stable/10/sys/arm/freescale/imx/files.imx51 Fri Feb 13 22:32:02 2015        
(r278727)
@@ -10,7 +10,7 @@ kern/kern_clocksource.c                       standard
 arm/freescale/imx/imx_common.c         standard
 arm/freescale/imx/imx_machdep.c                standard
 arm/freescale/imx/imx51_machdep.c      standard
-arm/arm/bus_space-v6.c                 standard
+arm/arm/bus_space_base.c               standard
 
 # Dummy serial console
 #arm/freescale/imx/console.c           standard

Modified: stable/10/sys/arm/freescale/imx/files.imx53
==============================================================================
--- stable/10/sys/arm/freescale/imx/files.imx53 Fri Feb 13 22:08:19 2015        
(r278726)
+++ stable/10/sys/arm/freescale/imx/files.imx53 Fri Feb 13 22:32:02 2015        
(r278727)
@@ -10,7 +10,7 @@ kern/kern_clocksource.c                       standard
 arm/freescale/imx/imx_common.c         standard
 arm/freescale/imx/imx_machdep.c                standard
 arm/freescale/imx/imx53_machdep.c      standard
-arm/arm/bus_space-v6.c                 standard
+arm/arm/bus_space_base.c               standard
 
 # Special serial console for debuging early boot code
 #arm/freescale/imx/console.c           standard

Modified: stable/10/sys/arm/freescale/imx/files.imx6
==============================================================================
--- stable/10/sys/arm/freescale/imx/files.imx6  Fri Feb 13 22:08:19 2015        
(r278726)
+++ stable/10/sys/arm/freescale/imx/files.imx6  Fri Feb 13 22:32:02 2015        
(r278727)
@@ -15,7 +15,7 @@ kern/kern_clocksource.c                       standard
 #
 arm/arm/gic.c                          standard
 arm/arm/pl310.c                                standard
-arm/arm/bus_space-v6.c                 standard
+arm/arm/bus_space_base.c               standard
 arm/arm/mpcore_timer.c                 standard
 arm/freescale/fsl_ocotp.c              standard
 arm/freescale/imx/imx6_anatop.c                standard

Modified: stable/10/sys/arm/freescale/vybrid/files.vybrid
==============================================================================
--- stable/10/sys/arm/freescale/vybrid/files.vybrid     Fri Feb 13 22:08:19 
2015        (r278726)
+++ stable/10/sys/arm/freescale/vybrid/files.vybrid     Fri Feb 13 22:32:02 
2015        (r278727)
@@ -9,7 +9,7 @@ arm/arm/cpufunc_asm_arm10.S                     standard
 arm/arm/cpufunc_asm_arm11.S                    standard
 arm/arm/cpufunc_asm_armv7.S                    standard
 
-arm/arm/bus_space-v6.c                         standard
+arm/arm/bus_space_base.c                       standard
 arm/arm/gic.c                                  standard
 arm/arm/mpcore_timer.c                         standard
 

Modified: stable/10/sys/arm/include/bus.h
==============================================================================
--- stable/10/sys/arm/include/bus.h     Fri Feb 13 22:08:19 2015        
(r278726)
+++ stable/10/sys/arm/include/bus.h     Fri Feb 13 22:32:02 2015        
(r278727)
@@ -79,172 +79,180 @@
 #define        BUS_SPACE_MAP_LINEAR            0x02
 #define        BUS_SPACE_MAP_PREFETCHABLE      0x04
 
+/*
+ * Bus space for ARM.
+ *
+ * The functions used most often are grouped together at the beginning to 
ensure
+ * that all the data fits into a single cache line.  The inline implementations
+ * of single read/write access these values a lot.
+ */
 struct bus_space {
-       /* cookie */
-       void            *bs_cookie;
+       /* Read/write single and barrier: the most commonly used functions. */
+       uint8_t  (*bs_r_1)(bus_space_tag_t, bus_space_handle_t, bus_size_t);
+       uint32_t (*bs_r_4)(bus_space_tag_t, bus_space_handle_t, bus_size_t);
+       void     (*bs_w_1)(bus_space_tag_t, bus_space_handle_t,
+                          bus_size_t, uint8_t);
+       void     (*bs_w_4)(bus_space_tag_t, bus_space_handle_t,
+                          bus_size_t, uint32_t);
+       void     (*bs_barrier)(bus_space_tag_t, bus_space_handle_t,
+                              bus_size_t, bus_size_t, int);
+
+       /* Backlink to parent (if copied), and implementation private data. */
+       struct bus_space *bs_parent;
+       void             *bs_privdata;
 
        /* mapping/unmapping */
-       int             (*bs_map) (void *, bus_addr_t, bus_size_t,
+       int             (*bs_map) (bus_space_tag_t, bus_addr_t, bus_size_t,
                            int, bus_space_handle_t *);
-       void            (*bs_unmap) (void *, bus_space_handle_t, bus_size_t);
-       int             (*bs_subregion) (void *, bus_space_handle_t,
+       void            (*bs_unmap) (bus_space_tag_t, bus_space_handle_t, 
bus_size_t);
+       int             (*bs_subregion) (bus_space_tag_t, bus_space_handle_t,
                            bus_size_t, bus_size_t, bus_space_handle_t *);
 
        /* allocation/deallocation */
-       int             (*bs_alloc) (void *, bus_addr_t, bus_addr_t,
+       int             (*bs_alloc) (bus_space_tag_t, bus_addr_t, bus_addr_t,
                            bus_size_t, bus_size_t, bus_size_t, int,
                            bus_addr_t *, bus_space_handle_t *);
-       void            (*bs_free) (void *, bus_space_handle_t,
+       void            (*bs_free) (bus_space_tag_t, bus_space_handle_t,
                            bus_size_t);
 
-       /* get kernel virtual address */
-       /* barrier */
-       void            (*bs_barrier) (void *, bus_space_handle_t,
-                           bus_size_t, bus_size_t, int);
-
-       /* read (single) */
-       u_int8_t        (*bs_r_1) (void *, bus_space_handle_t, bus_size_t);
-       u_int16_t       (*bs_r_2) (void *, bus_space_handle_t, bus_size_t);
-       u_int32_t       (*bs_r_4) (void *, bus_space_handle_t, bus_size_t);
-       u_int64_t       (*bs_r_8) (void *, bus_space_handle_t, bus_size_t);
+       /* Read single, the less commonly used functions. */
+       uint16_t        (*bs_r_2) (bus_space_tag_t, bus_space_handle_t, 
bus_size_t);
+       uint64_t        (*bs_r_8) (bus_space_tag_t, bus_space_handle_t, 
bus_size_t);
 
        /* read multiple */
-       void            (*bs_rm_1) (void *, bus_space_handle_t, bus_size_t,
-           u_int8_t *, bus_size_t);
-       void            (*bs_rm_2) (void *, bus_space_handle_t, bus_size_t,
-           u_int16_t *, bus_size_t);
-       void            (*bs_rm_4) (void *, bus_space_handle_t,
-                           bus_size_t, u_int32_t *, bus_size_t);
-       void            (*bs_rm_8) (void *, bus_space_handle_t,
-                           bus_size_t, u_int64_t *, bus_size_t);
+       void            (*bs_rm_1) (bus_space_tag_t, bus_space_handle_t, 
bus_size_t,
+           uint8_t *, bus_size_t);
+       void            (*bs_rm_2) (bus_space_tag_t, bus_space_handle_t, 
bus_size_t,
+           uint16_t *, bus_size_t);
+       void            (*bs_rm_4) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, uint32_t *, bus_size_t);
+       void            (*bs_rm_8) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, uint64_t *, bus_size_t);
                                        
        /* read region */
-       void            (*bs_rr_1) (void *, bus_space_handle_t,
-                           bus_size_t, u_int8_t *, bus_size_t);
-       void            (*bs_rr_2) (void *, bus_space_handle_t,
-                           bus_size_t, u_int16_t *, bus_size_t);
-       void            (*bs_rr_4) (void *, bus_space_handle_t,
-                           bus_size_t, u_int32_t *, bus_size_t);
-       void            (*bs_rr_8) (void *, bus_space_handle_t,
-                           bus_size_t, u_int64_t *, bus_size_t);
+       void            (*bs_rr_1) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, uint8_t *, bus_size_t);
+       void            (*bs_rr_2) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, uint16_t *, bus_size_t);
+       void            (*bs_rr_4) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, uint32_t *, bus_size_t);
+       void            (*bs_rr_8) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, uint64_t *, bus_size_t);
                                        
-       /* write (single) */
-       void            (*bs_w_1) (void *, bus_space_handle_t,
-                           bus_size_t, u_int8_t);
-       void            (*bs_w_2) (void *, bus_space_handle_t,
-                           bus_size_t, u_int16_t);
-       void            (*bs_w_4) (void *, bus_space_handle_t,
-                           bus_size_t, u_int32_t);
-       void            (*bs_w_8) (void *, bus_space_handle_t,
-                           bus_size_t, u_int64_t);
+       /* Write single, the less commonly used functions. */
+       void            (*bs_w_2) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, uint16_t);
+       void            (*bs_w_8) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, uint64_t);
 
        /* write multiple */
-       void            (*bs_wm_1) (void *, bus_space_handle_t,
-                           bus_size_t, const u_int8_t *, bus_size_t);
-       void            (*bs_wm_2) (void *, bus_space_handle_t,
-                           bus_size_t, const u_int16_t *, bus_size_t);
-       void            (*bs_wm_4) (void *, bus_space_handle_t,
-                           bus_size_t, const u_int32_t *, bus_size_t);
-       void            (*bs_wm_8) (void *, bus_space_handle_t,
-                           bus_size_t, const u_int64_t *, bus_size_t);
+       void            (*bs_wm_1) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, const uint8_t *, bus_size_t);
+       void            (*bs_wm_2) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, const uint16_t *, bus_size_t);
+       void            (*bs_wm_4) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, const uint32_t *, bus_size_t);
+       void            (*bs_wm_8) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, const uint64_t *, bus_size_t);
                                        
        /* write region */
-       void            (*bs_wr_1) (void *, bus_space_handle_t,
-                           bus_size_t, const u_int8_t *, bus_size_t);
-       void            (*bs_wr_2) (void *, bus_space_handle_t,
-                           bus_size_t, const u_int16_t *, bus_size_t);
-       void            (*bs_wr_4) (void *, bus_space_handle_t,
-                           bus_size_t, const u_int32_t *, bus_size_t);
-       void            (*bs_wr_8) (void *, bus_space_handle_t,
-                           bus_size_t, const u_int64_t *, bus_size_t);
+       void            (*bs_wr_1) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, const uint8_t *, bus_size_t);
+       void            (*bs_wr_2) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, const uint16_t *, bus_size_t);
+       void            (*bs_wr_4) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, const uint32_t *, bus_size_t);
+       void            (*bs_wr_8) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, const uint64_t *, bus_size_t);
 
        /* set multiple */
-       void            (*bs_sm_1) (void *, bus_space_handle_t,
-                           bus_size_t, u_int8_t, bus_size_t);
-       void            (*bs_sm_2) (void *, bus_space_handle_t,
-                           bus_size_t, u_int16_t, bus_size_t);
-       void            (*bs_sm_4) (void *, bus_space_handle_t,
-                           bus_size_t, u_int32_t, bus_size_t);
-       void            (*bs_sm_8) (void *, bus_space_handle_t,
-                           bus_size_t, u_int64_t, bus_size_t);
+       void            (*bs_sm_1) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, uint8_t, bus_size_t);
+       void            (*bs_sm_2) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, uint16_t, bus_size_t);
+       void            (*bs_sm_4) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, uint32_t, bus_size_t);
+       void            (*bs_sm_8) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, uint64_t, bus_size_t);
 
        /* set region */
-       void            (*bs_sr_1) (void *, bus_space_handle_t,
-                           bus_size_t, u_int8_t, bus_size_t);
-       void            (*bs_sr_2) (void *, bus_space_handle_t,
-                           bus_size_t, u_int16_t, bus_size_t);
-       void            (*bs_sr_4) (void *, bus_space_handle_t,
-                           bus_size_t, u_int32_t, bus_size_t);
-       void            (*bs_sr_8) (void *, bus_space_handle_t,
-                           bus_size_t, u_int64_t, bus_size_t);
+       void            (*bs_sr_1) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, uint8_t, bus_size_t);
+       void            (*bs_sr_2) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, uint16_t, bus_size_t);
+       void            (*bs_sr_4) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, uint32_t, bus_size_t);
+       void            (*bs_sr_8) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, uint64_t, bus_size_t);
 
        /* copy */
-       void            (*bs_c_1) (void *, bus_space_handle_t, bus_size_t,
+       void            (*bs_c_1) (bus_space_tag_t, bus_space_handle_t, 
bus_size_t,
                            bus_space_handle_t, bus_size_t, bus_size_t);
-       void            (*bs_c_2) (void *, bus_space_handle_t, bus_size_t,
+       void            (*bs_c_2) (bus_space_tag_t, bus_space_handle_t, 
bus_size_t,
                            bus_space_handle_t, bus_size_t, bus_size_t);
-       void            (*bs_c_4) (void *, bus_space_handle_t, bus_size_t,
+       void            (*bs_c_4) (bus_space_tag_t, bus_space_handle_t, 
bus_size_t,
                            bus_space_handle_t, bus_size_t, bus_size_t);
-       void            (*bs_c_8) (void *, bus_space_handle_t, bus_size_t,
+       void            (*bs_c_8) (bus_space_tag_t, bus_space_handle_t, 
bus_size_t,
                            bus_space_handle_t, bus_size_t, bus_size_t);
 
        /* read stream (single) */
-       u_int8_t        (*bs_r_1_s) (void *, bus_space_handle_t, bus_size_t);
-       u_int16_t       (*bs_r_2_s) (void *, bus_space_handle_t, bus_size_t);
-       u_int32_t       (*bs_r_4_s) (void *, bus_space_handle_t, bus_size_t);
-       u_int64_t       (*bs_r_8_s) (void *, bus_space_handle_t, bus_size_t);
+       uint8_t (*bs_r_1_s) (bus_space_tag_t, bus_space_handle_t, bus_size_t);
+       uint16_t        (*bs_r_2_s) (bus_space_tag_t, bus_space_handle_t, 
bus_size_t);
+       uint32_t        (*bs_r_4_s) (bus_space_tag_t, bus_space_handle_t, 
bus_size_t);
+       uint64_t        (*bs_r_8_s) (bus_space_tag_t, bus_space_handle_t, 
bus_size_t);
 
        /* read multiple stream */
-       void            (*bs_rm_1_s) (void *, bus_space_handle_t, bus_size_t,
-           u_int8_t *, bus_size_t);
-       void            (*bs_rm_2_s) (void *, bus_space_handle_t, bus_size_t,
-           u_int16_t *, bus_size_t);
-       void            (*bs_rm_4_s) (void *, bus_space_handle_t,
-                           bus_size_t, u_int32_t *, bus_size_t);
-       void            (*bs_rm_8_s) (void *, bus_space_handle_t,
-                           bus_size_t, u_int64_t *, bus_size_t);
+       void            (*bs_rm_1_s) (bus_space_tag_t, bus_space_handle_t, 
bus_size_t,
+           uint8_t *, bus_size_t);
+       void            (*bs_rm_2_s) (bus_space_tag_t, bus_space_handle_t, 
bus_size_t,
+           uint16_t *, bus_size_t);
+       void            (*bs_rm_4_s) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, uint32_t *, bus_size_t);
+       void            (*bs_rm_8_s) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, uint64_t *, bus_size_t);
                                        
        /* read region stream */
-       void            (*bs_rr_1_s) (void *, bus_space_handle_t,
-                           bus_size_t, u_int8_t *, bus_size_t);
-       void            (*bs_rr_2_s) (void *, bus_space_handle_t,
-                           bus_size_t, u_int16_t *, bus_size_t);
-       void            (*bs_rr_4_s) (void *, bus_space_handle_t,
-                           bus_size_t, u_int32_t *, bus_size_t);
-       void            (*bs_rr_8_s) (void *, bus_space_handle_t,
-                           bus_size_t, u_int64_t *, bus_size_t);
+       void            (*bs_rr_1_s) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, uint8_t *, bus_size_t);
+       void            (*bs_rr_2_s) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, uint16_t *, bus_size_t);
+       void            (*bs_rr_4_s) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, uint32_t *, bus_size_t);
+       void            (*bs_rr_8_s) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, uint64_t *, bus_size_t);
                                        
        /* write stream (single) */
-       void            (*bs_w_1_s) (void *, bus_space_handle_t,
-                           bus_size_t, u_int8_t);
-       void            (*bs_w_2_s) (void *, bus_space_handle_t,
-                           bus_size_t, u_int16_t);
-       void            (*bs_w_4_s) (void *, bus_space_handle_t,
-                           bus_size_t, u_int32_t);
-       void            (*bs_w_8_s) (void *, bus_space_handle_t,
-                           bus_size_t, u_int64_t);
+       void            (*bs_w_1_s) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, uint8_t);
+       void            (*bs_w_2_s) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, uint16_t);
+       void            (*bs_w_4_s) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, uint32_t);
+       void            (*bs_w_8_s) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, uint64_t);
 
        /* write multiple stream */
-       void            (*bs_wm_1_s) (void *, bus_space_handle_t,
-                           bus_size_t, const u_int8_t *, bus_size_t);
-       void            (*bs_wm_2_s) (void *, bus_space_handle_t,
-                           bus_size_t, const u_int16_t *, bus_size_t);
-       void            (*bs_wm_4_s) (void *, bus_space_handle_t,
-                           bus_size_t, const u_int32_t *, bus_size_t);
-       void            (*bs_wm_8_s) (void *, bus_space_handle_t,
-                           bus_size_t, const u_int64_t *, bus_size_t);
+       void            (*bs_wm_1_s) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, const uint8_t *, bus_size_t);
+       void            (*bs_wm_2_s) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, const uint16_t *, bus_size_t);
+       void            (*bs_wm_4_s) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, const uint32_t *, bus_size_t);
+       void            (*bs_wm_8_s) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, const uint64_t *, bus_size_t);
                                        
        /* write region stream */
-       void            (*bs_wr_1_s) (void *, bus_space_handle_t,
-                           bus_size_t, const u_int8_t *, bus_size_t);
-       void            (*bs_wr_2_s) (void *, bus_space_handle_t,
-                           bus_size_t, const u_int16_t *, bus_size_t);
-       void            (*bs_wr_4_s) (void *, bus_space_handle_t,
-                           bus_size_t, const u_int32_t *, bus_size_t);
-       void            (*bs_wr_8_s) (void *, bus_space_handle_t,
-                           bus_size_t, const u_int64_t *, bus_size_t);
+       void            (*bs_wr_1_s) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, const uint8_t *, bus_size_t);
+       void            (*bs_wr_2_s) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, const uint16_t *, bus_size_t);
+       void            (*bs_wr_4_s) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, const uint32_t *, bus_size_t);
+       void            (*bs_wr_8_s) (bus_space_tag_t, bus_space_handle_t,
+                           bus_size_t, const uint64_t *, bus_size_t);
 };
 
+extern bus_space_tag_t arm_base_bs_tag;
 
 /*
  * Utility macros; INTERNAL USE ONLY.
@@ -252,51 +260,69 @@ struct bus_space {
 #define        __bs_c(a,b)             __CONCAT(a,b)
 #define        __bs_opname(op,size)    __bs_c(__bs_c(__bs_c(bs_,op),_),size)
 

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
_______________________________________________
svn-src-stable-10@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-stable-10
To unsubscribe, send any mail to "svn-src-stable-10-unsubscr...@freebsd.org"

Reply via email to