Module Name:    src
Committed By:   matt
Date:           Wed Jul  6 10:01:02 UTC 2011

Modified Files:
        src/sys/arch/mips/mips: bus_space_alignstride_chipdep.c

Log Message:
Make this play nicely with GCC 4.5.  While there, make everything static,
get rid of global inlines, and move the init function to the end.


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 \
    src/sys/arch/mips/mips/bus_space_alignstride_chipdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/mips/mips/bus_space_alignstride_chipdep.c
diff -u src/sys/arch/mips/mips/bus_space_alignstride_chipdep.c:1.13 src/sys/arch/mips/mips/bus_space_alignstride_chipdep.c:1.14
--- src/sys/arch/mips/mips/bus_space_alignstride_chipdep.c:1.13	Sun Feb 20 07:45:47 2011
+++ src/sys/arch/mips/mips/bus_space_alignstride_chipdep.c	Wed Jul  6 10:01:02 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: bus_space_alignstride_chipdep.c,v 1.13 2011/02/20 07:45:47 matt Exp $ */
+/* $NetBSD: bus_space_alignstride_chipdep.c,v 1.14 2011/07/06 10:01:02 matt Exp $ */
 
 /*-
  * Copyright (c) 1998, 2000, 2001 The NetBSD Foundation, Inc.
@@ -81,7 +81,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: bus_space_alignstride_chipdep.c,v 1.13 2011/02/20 07:45:47 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bus_space_alignstride_chipdep.c,v 1.14 2011/07/06 10:01:02 matt Exp $");
 
 #ifdef CHIP_EXTENT
 #include <sys/extent.h>
@@ -181,172 +181,6 @@
 #error	"Invalid chip access size!"
 #endif
 
-/* mapping/unmapping */
-int		__BS(map)(void *, bus_addr_t, bus_size_t, int,
-		    bus_space_handle_t *, int);
-void		__BS(unmap)(void *, bus_space_handle_t, bus_size_t, int);
-int		__BS(subregion)(void *, bus_space_handle_t, bus_size_t,
-		    bus_size_t, bus_space_handle_t *);
-
-int		__BS(translate)(void *, bus_addr_t, bus_size_t, int,
-		    struct mips_bus_space_translation *);
-int		__BS(get_window)(void *, int,
-		    struct mips_bus_space_translation *);
-
-/* allocation/deallocation */
-int		__BS(alloc)(void *, bus_addr_t, bus_addr_t, bus_size_t,
-		    bus_size_t, bus_addr_t, int, bus_addr_t *,
-		    bus_space_handle_t *);
-void		__BS(free)(void *, bus_space_handle_t, bus_size_t);
-
-/* get kernel virtual address */
-void *		__BS(vaddr)(void *, bus_space_handle_t);
-
-/* mmap for user */
-paddr_t		__BS(mmap)(void *, bus_addr_t, off_t, int, int);
-
-/* barrier */
-inline void	__BS(barrier)(void *, bus_space_handle_t, bus_size_t,
-		    bus_size_t, int);
-
-/* read (single) */
-inline uint8_t	__BS(read_1)(void *, bus_space_handle_t, bus_size_t);
-inline uint16_t	__BS(read_2)(void *, bus_space_handle_t, bus_size_t);
-inline uint32_t	__BS(read_4)(void *, bus_space_handle_t, bus_size_t);
-inline uint64_t	__BS(read_8)(void *, bus_space_handle_t, bus_size_t);
-
-/* read multiple */
-void		__BS(read_multi_1)(void *, bus_space_handle_t, bus_size_t,
-		    uint8_t *, bus_size_t);
-void		__BS(read_multi_2)(void *, bus_space_handle_t, bus_size_t,
-		    uint16_t *, bus_size_t);
-void		__BS(read_multi_4)(void *, bus_space_handle_t, bus_size_t,
-		    uint32_t *, bus_size_t);
-void		__BS(read_multi_8)(void *, bus_space_handle_t, bus_size_t,
-		    uint64_t *, bus_size_t);
-
-/* read region */
-void		__BS(read_region_1)(void *, bus_space_handle_t, bus_size_t,
-		    uint8_t *, bus_size_t);
-void		__BS(read_region_2)(void *, bus_space_handle_t, bus_size_t,
-		    uint16_t *, bus_size_t);
-void		__BS(read_region_4)(void *, bus_space_handle_t, bus_size_t,
-		    uint32_t *, bus_size_t);
-void		__BS(read_region_8)(void *, bus_space_handle_t, bus_size_t,
-		    uint64_t *, bus_size_t);
-
-/* write (single) */
-inline void	__BS(write_1)(void *, bus_space_handle_t, bus_size_t, uint8_t);
-inline void	__BS(write_2)(void *, bus_space_handle_t, bus_size_t, uint16_t);
-inline void	__BS(write_4)(void *, bus_space_handle_t, bus_size_t, uint32_t);
-inline void	__BS(write_8)(void *, bus_space_handle_t, bus_size_t, uint64_t);
-
-/* write multiple */
-void		__BS(write_multi_1)(void *, bus_space_handle_t, bus_size_t,
-		    const uint8_t *, bus_size_t);
-void		__BS(write_multi_2)(void *, bus_space_handle_t, bus_size_t,
-		    const uint16_t *, bus_size_t);
-void		__BS(write_multi_4)(void *, bus_space_handle_t, bus_size_t,
-		    const uint32_t *, bus_size_t);
-void		__BS(write_multi_8)(void *, bus_space_handle_t, bus_size_t,
-		    const uint64_t *, bus_size_t);
-
-/* write region */
-void		__BS(write_region_1)(void *, bus_space_handle_t, bus_size_t,
-		    const uint8_t *, bus_size_t);
-void		__BS(write_region_2)(void *, bus_space_handle_t, bus_size_t,
-		    const uint16_t *, bus_size_t);
-void		__BS(write_region_4)(void *, bus_space_handle_t, bus_size_t,
-		    const uint32_t *, bus_size_t);
-void		__BS(write_region_8)(void *, bus_space_handle_t, bus_size_t,
-		    const uint64_t *, bus_size_t);
-
-/* set multiple */
-void		__BS(set_multi_1)(void *, bus_space_handle_t, bus_size_t,
-		    uint8_t, bus_size_t);
-void		__BS(set_multi_2)(void *, bus_space_handle_t, bus_size_t,
-		    uint16_t, bus_size_t);
-void		__BS(set_multi_4)(void *, bus_space_handle_t, bus_size_t,
-		    uint32_t, bus_size_t);
-void		__BS(set_multi_8)(void *, bus_space_handle_t, bus_size_t,
-		    uint64_t, bus_size_t);
-
-/* set region */
-void		__BS(set_region_1)(void *, bus_space_handle_t, bus_size_t,
-		    uint8_t, bus_size_t);
-void		__BS(set_region_2)(void *, bus_space_handle_t, bus_size_t,
-		    uint16_t, bus_size_t);
-void		__BS(set_region_4)(void *, bus_space_handle_t, bus_size_t,
-		    uint32_t, bus_size_t);
-void		__BS(set_region_8)(void *, bus_space_handle_t, bus_size_t,
-		    uint64_t, bus_size_t);
-
-/* copy */
-void		__BS(copy_region_1)(void *, bus_space_handle_t, bus_size_t,
-		    bus_space_handle_t, bus_size_t, bus_size_t);
-void		__BS(copy_region_2)(void *, bus_space_handle_t, bus_size_t,
-		    bus_space_handle_t, bus_size_t, bus_size_t);
-void		__BS(copy_region_4)(void *, bus_space_handle_t, bus_size_t,
-		    bus_space_handle_t, bus_size_t, bus_size_t);
-void		__BS(copy_region_8)(void *, bus_space_handle_t, bus_size_t,
-		    bus_space_handle_t, bus_size_t, bus_size_t);
-
-#ifdef	CHIP_NEED_STREAM
-
-/* read (single), stream */
-inline uint8_t	__BS(read_stream_1)(void *, bus_space_handle_t, bus_size_t);
-inline uint16_t	__BS(read_stream_2)(void *, bus_space_handle_t, bus_size_t);
-inline uint32_t	__BS(read_stream_4)(void *, bus_space_handle_t, bus_size_t);
-inline uint64_t	__BS(read_stream_8)(void *, bus_space_handle_t, bus_size_t);
-
-/* read multiple, stream */
-void	__BS(read_multi_stream_1)(void *, bus_space_handle_t, bus_size_t,
-			   uint8_t *, bus_size_t);
-void	__BS(read_multi_stream_2)(void *, bus_space_handle_t, bus_size_t,
-				  uint16_t *, bus_size_t);
-void	__BS(read_multi_stream_4)(void *, bus_space_handle_t, bus_size_t,
-				  uint32_t *, bus_size_t);
-void	__BS(read_multi_stream_8)(void *, bus_space_handle_t, bus_size_t,
-				  uint64_t *, bus_size_t);
-
-/* read region, stream */
-void	__BS(read_region_stream_1)(void *, bus_space_handle_t, bus_size_t,
-				   uint8_t *, bus_size_t);
-void	__BS(read_region_stream_2)(void *, bus_space_handle_t, bus_size_t,
-				   uint16_t *, bus_size_t);
-void	__BS(read_region_stream_4)(void *, bus_space_handle_t, bus_size_t,
-				   uint32_t *, bus_size_t);
-void	__BS(read_region_stream_8)(void *, bus_space_handle_t, bus_size_t,
-				   uint64_t *, bus_size_t);
-
-/* write (single), stream */
-inline void	__BS(write_stream_1)(void *, bus_space_handle_t, bus_size_t, uint8_t);
-inline void	__BS(write_stream_2)(void *, bus_space_handle_t, bus_size_t, uint16_t);
-inline void	__BS(write_stream_4)(void *, bus_space_handle_t, bus_size_t, uint32_t);
-inline void	__BS(write_stream_8)(void *, bus_space_handle_t, bus_size_t, uint64_t);
-
-/* write multiple, stream */
-void	__BS(write_multi_stream_1)(void *, bus_space_handle_t, bus_size_t,
-				   const uint8_t *, bus_size_t);
-void	__BS(write_multi_stream_2)(void *, bus_space_handle_t, bus_size_t,
-				   const uint16_t *, bus_size_t);
-void	__BS(write_multi_stream_4)(void *, bus_space_handle_t, bus_size_t,
-				   const uint32_t *, bus_size_t);
-void	__BS(write_multi_stream_8)(void *, bus_space_handle_t, bus_size_t,
-				   const uint64_t *, bus_size_t);
-
-/* write region, stream */
-void	__BS(write_region_stream_1)(void *, bus_space_handle_t, bus_size_t,
-				    const uint8_t *, bus_size_t);
-void	__BS(write_region_stream_2)(void *, bus_space_handle_t, bus_size_t,
-				    const uint16_t *, bus_size_t);
-void	__BS(write_region_stream_4)(void *, bus_space_handle_t, bus_size_t,
-				    const uint32_t *, bus_size_t);
-void	__BS(write_region_stream_8)(void *, bus_space_handle_t, bus_size_t,
-				    const uint64_t *, bus_size_t);
-
-#endif	/* CHIP_NEED_STREAM */
-
 #ifdef CHIP_EXTENT
 #ifndef	CHIP_EX_STORE
 static long
@@ -385,237 +219,53 @@
 #endif
 
 
-void
-__BS(init)(bus_space_tag_t t, void *v)
+static int
+__BS(get_window)(void *v, int window, struct mips_bus_space_translation *mbst)
 {
-#ifdef CHIP_EXTENT
-	struct extent *ex;
-#endif
-
-	/*
-	 * Initialize the bus space tag.
-	 */
-
-	/* cookie */
-	t->bs_cookie =		v;
-
-	/* mapping/unmapping */
-	t->bs_map =		__BS(map);
-	t->bs_unmap =		__BS(unmap);
-	t->bs_subregion =	__BS(subregion);
-
-	t->bs_translate =	__BS(translate);
-	t->bs_get_window =	__BS(get_window);
-
-	/* allocation/deallocation */
-	t->bs_alloc =		__BS(alloc);
-	t->bs_free =		__BS(free);
-
-	/* get kernel virtual address */
-	t->bs_vaddr =		__BS(vaddr);
-
-	/* mmap for user */
-	t->bs_mmap =		__BS(mmap);
-
-	/* barrier */
-	t->bs_barrier =		__BS(barrier);
-	
-	/* read (single) */
-	t->bs_r_1 =		__BS(read_1);
-	t->bs_r_2 =		__BS(read_2);
-	t->bs_r_4 =		__BS(read_4);
-	t->bs_r_8 =		__BS(read_8);
-	
-	/* read multiple */
-	t->bs_rm_1 =		__BS(read_multi_1);
-	t->bs_rm_2 =		__BS(read_multi_2);
-	t->bs_rm_4 =		__BS(read_multi_4);
-	t->bs_rm_8 =		__BS(read_multi_8);
-	
-	/* read region */
-	t->bs_rr_1 =		__BS(read_region_1);
-	t->bs_rr_2 =		__BS(read_region_2);
-	t->bs_rr_4 =		__BS(read_region_4);
-	t->bs_rr_8 =		__BS(read_region_8);
-	
-	/* write (single) */
-	t->bs_w_1 =		__BS(write_1);
-	t->bs_w_2 =		__BS(write_2);
-	t->bs_w_4 =		__BS(write_4);
-	t->bs_w_8 =		__BS(write_8);
-	
-	/* write multiple */
-	t->bs_wm_1 =		__BS(write_multi_1);
-	t->bs_wm_2 =		__BS(write_multi_2);
-	t->bs_wm_4 =		__BS(write_multi_4);
-	t->bs_wm_8 =		__BS(write_multi_8);
-	
-	/* write region */
-	t->bs_wr_1 =		__BS(write_region_1);
-	t->bs_wr_2 =		__BS(write_region_2);
-	t->bs_wr_4 =		__BS(write_region_4);
-	t->bs_wr_8 =		__BS(write_region_8);
-
-	/* set multiple */
-	t->bs_sm_1 =		__BS(set_multi_1);
-	t->bs_sm_2 =		__BS(set_multi_2);
-	t->bs_sm_4 =		__BS(set_multi_4);
-	t->bs_sm_8 =		__BS(set_multi_8);
-	
-	/* set region */
-	t->bs_sr_1 =		__BS(set_region_1);
-	t->bs_sr_2 =		__BS(set_region_2);
-	t->bs_sr_4 =		__BS(set_region_4);
-	t->bs_sr_8 =		__BS(set_region_8);
-
-	/* copy */
-	t->bs_c_1 =		__BS(copy_region_1);
-	t->bs_c_2 =		__BS(copy_region_2);
-	t->bs_c_4 =		__BS(copy_region_4);
-	t->bs_c_8 =		__BS(copy_region_8);
-
-#ifdef CHIP_NEED_STREAM
-	/* read (single), stream */
-	t->bs_rs_1 =		__BS(read_stream_1);
-	t->bs_rs_2 =		__BS(read_stream_2);
-	t->bs_rs_4 =		__BS(read_stream_4);
-	t->bs_rs_8 =		__BS(read_stream_8);
-	
-	/* read multiple, stream */
-	t->bs_rms_1 =		__BS(read_multi_stream_1);
-	t->bs_rms_2 =		__BS(read_multi_stream_2);
-	t->bs_rms_4 =		__BS(read_multi_stream_4);
-	t->bs_rms_8 =		__BS(read_multi_stream_8);
-	
-	/* read region, stream */
-	t->bs_rrs_1 =		__BS(read_region_stream_1);
-	t->bs_rrs_2 =		__BS(read_region_stream_2);
-	t->bs_rrs_4 =		__BS(read_region_stream_4);
-	t->bs_rrs_8 =		__BS(read_region_stream_8);
-	
-	/* write (single), stream */
-	t->bs_ws_1 =		__BS(write_stream_1);
-	t->bs_ws_2 =		__BS(write_stream_2);
-	t->bs_ws_4 =		__BS(write_stream_4);
-	t->bs_ws_8 =		__BS(write_stream_8);
-	
-	/* write multiple, stream */
-	t->bs_wms_1 =		__BS(write_multi_stream_1);
-	t->bs_wms_2 =		__BS(write_multi_stream_2);
-	t->bs_wms_4 =		__BS(write_multi_stream_4);
-	t->bs_wms_8 =		__BS(write_multi_stream_8);
-	
-	/* write region, stream */
-	t->bs_wrs_1 =		__BS(write_region_stream_1);
-	t->bs_wrs_2 =		__BS(write_region_stream_2);
-	t->bs_wrs_4 =		__BS(write_region_stream_4);
-	t->bs_wrs_8 =		__BS(write_region_stream_8);
-
-#else	/* CHIP_NEED_STREAM */
-
-	/* read (single), stream */
-	t->bs_rs_1 =		__BS(read_1);
-	t->bs_rs_2 =		__BS(read_2);
-	t->bs_rs_4 =		__BS(read_4);
-	t->bs_rs_8 =		__BS(read_8);
-	
-	/* read multiple, stream */
-	t->bs_rms_1 =		__BS(read_multi_1);
-	t->bs_rms_2 =		__BS(read_multi_2);
-	t->bs_rms_4 =		__BS(read_multi_4);
-	t->bs_rms_8 =		__BS(read_multi_8);
-	
-	/* read region, stream */
-	t->bs_rrs_1 =		__BS(read_region_1);
-	t->bs_rrs_2 =		__BS(read_region_2);
-	t->bs_rrs_4 =		__BS(read_region_4);
-	t->bs_rrs_8 =		__BS(read_region_8);
-	
-	/* write (single), stream */
-	t->bs_ws_1 =		__BS(write_1);
-	t->bs_ws_2 =		__BS(write_2);
-	t->bs_ws_4 =		__BS(write_4);
-	t->bs_ws_8 =		__BS(write_8);
-	
-	/* write multiple, stream */
-	t->bs_wms_1 =		__BS(write_multi_1);
-	t->bs_wms_2 =		__BS(write_multi_2);
-	t->bs_wms_4 =		__BS(write_multi_4);
-	t->bs_wms_8 =		__BS(write_multi_8);
-	
-	/* write region, stream */
-	t->bs_wrs_1 =		__BS(write_region_1);
-	t->bs_wrs_2 =		__BS(write_region_2);
-	t->bs_wrs_4 =		__BS(write_region_4);
-	t->bs_wrs_8 =		__BS(write_region_8);
-#endif	/* CHIP_NEED_STREAM */
-
-#ifdef CHIP_EXTENT
-	/* XXX WE WANT EXTENT_NOCOALESCE, BUT WE CAN'T USE IT. XXX */
-	ex = extent_create(__S(__BS(bus)), 0x0UL, ~0UL, M_DEVBUF,
-	    (void *)CHIP_EX_STORE(v), CHIP_EX_STORE_SIZE(v), EX_NOWAIT);
-	extent_alloc_region(ex, 0, ~0UL, EX_NOWAIT);
 
+	switch (window) {
 #ifdef CHIP_W1_BUS_START
-	/*
-	 * The window may be disabled.  We notice this by seeing
-	 * -1 as the bus base address.
-	 */
-	if (CHIP_W1_BUS_START(v) == (bus_addr_t) -1) {
-#ifdef EXTENT_DEBUG
-		printf("%s: this space is disabled\n", __S(__BS(init)));
+	case 0:
+		mbst->mbst_bus_start = CHIP_W1_BUS_START(v);
+		mbst->mbst_bus_end = CHIP_W1_BUS_END(v);
+		mbst->mbst_sys_start = CHIP_W1_SYS_START(v);
+		mbst->mbst_sys_end = CHIP_W1_SYS_END(v);
+		mbst->mbst_align_stride = CHIP_ALIGN_STRIDE;
+		mbst->mbst_flags = 0;
+		break;
 #endif
-		return;
-	}
 
-#ifdef EXTENT_DEBUG
-	printf("%s: freeing from %#"PRIxBUSADDR" to %#"PRIxBUSADDR"\n",
-	    __S(__BS(init)), (bus_addr_t)CHIP_W1_BUS_START(v),
-	    (bus_addr_t)CHIP_W1_BUS_END(v));
-#endif
-	extent_free(ex, CHIP_W1_BUS_START(v),
-	    CHIP_W1_BUS_END(v) - CHIP_W1_BUS_START(v) + 1, EX_NOWAIT);
-#endif
 #ifdef CHIP_W2_BUS_START
-	if (CHIP_W2_BUS_START(v) != CHIP_W1_BUS_START(v)) {
-#ifdef EXTENT_DEBUG
-		printf("xxx: freeing from 0x%lx to 0x%lx\n",
-		    (u_long)CHIP_W2_BUS_START(v), (u_long)CHIP_W2_BUS_END(v));
-#endif
-		extent_free(ex, CHIP_W2_BUS_START(v),
-		    CHIP_W2_BUS_END(v) - CHIP_W2_BUS_START(v) + 1, EX_NOWAIT);
-	} else {
-#ifdef EXTENT_DEBUG
-		printf("xxx: window 2 (0x%lx to 0x%lx) overlaps window 1\n",
-		    (u_long)CHIP_W2_BUS_START(v), (u_long)CHIP_W2_BUS_END(v));
-#endif
-	}
+	case 1:
+		mbst->mbst_bus_start = CHIP_W2_BUS_START(v);
+		mbst->mbst_bus_end = CHIP_W2_BUS_END(v);
+		mbst->mbst_sys_start = CHIP_W2_SYS_START(v);
+		mbst->mbst_sys_end = CHIP_W2_SYS_END(v);
+		mbst->mbst_align_stride = CHIP_ALIGN_STRIDE;
+		mbst->mbst_flags = 0;
+		break;
 #endif
+
 #ifdef CHIP_W3_BUS_START
-	if (CHIP_W3_BUS_START(v) != CHIP_W1_BUS_START(v) &&
-	    CHIP_W3_BUS_START(v) != CHIP_W2_BUS_START(v)) {
-#ifdef EXTENT_DEBUG
-		printf("xxx: freeing from 0x%lx to 0x%lx\n",
-		    (u_long)CHIP_W3_BUS_START(v), (u_long)CHIP_W3_BUS_END(v));
-#endif
-		extent_free(ex, CHIP_W3_BUS_START(v),
-		    CHIP_W3_BUS_END(v) - CHIP_W3_BUS_START(v) + 1, EX_NOWAIT);
-	} else {
-#ifdef EXTENT_DEBUG
-		printf("xxx: window 2 (0x%lx to 0x%lx) overlaps window 1\n",
-		    (u_long)CHIP_W2_BUS_START(v), (u_long)CHIP_W2_BUS_END(v));
+	case 2:
+		mbst->mbst_bus_start = CHIP_W3_BUS_START(v);
+		mbst->mbst_bus_end = CHIP_W3_BUS_END(v);
+		mbst->mbst_sys_start = CHIP_W3_SYS_START(v);
+		mbst->mbst_sys_end = CHIP_W3_SYS_END(v);
+		mbst->mbst_align_stride = CHIP_ALIGN_STRIDE;
+		mbst->mbst_flags = 0;
+		break;
 #endif
+
+	default:
+		panic(__S(__BS(get_window)) ": invalid window %d",
+		    window);
 	}
-#endif
 
-#ifdef EXTENT_DEBUG
-	extent_print(ex);
-#endif
-	CHIP_EXTENT(v) = ex;
-#endif /* CHIP_EXTENT */
+	return (0);
 }
 
-int
+static int
 __BS(translate)(void *v, bus_addr_t addr, bus_size_t len, int flags,
     struct mips_bus_space_translation *mbst)
 {
@@ -652,65 +302,19 @@
 	    (u_long)CHIP_W1_BUS_START(v), (u_long)CHIP_W1_BUS_END(v));
 #endif
 #ifdef CHIP_W2_BUS_START
-	printf("%s: window[2]=0x%lx-0x%lx\n", __S(__BS(map)),
-	    (u_long)CHIP_W2_BUS_START(v), (u_long)CHIP_W2_BUS_END(v));
-#endif
-#ifdef CHIP_W3_BUS_START
-	printf("%s: window[3]=0x%lx-0x%lx\n", __S(__BS(map)),
-	    (u_long)CHIP_W3_BUS_START(v), (u_long)CHIP_W3_BUS_END(v));
-#endif
-#endif /* EXTENT_DEBUG */
-	/* No translation. */
-	return (EINVAL);
-}
-
-int
-__BS(get_window)(void *v, int window, struct mips_bus_space_translation *mbst)
-{
-
-	switch (window) {
-#ifdef CHIP_W1_BUS_START
-	case 0:
-		mbst->mbst_bus_start = CHIP_W1_BUS_START(v);
-		mbst->mbst_bus_end = CHIP_W1_BUS_END(v);
-		mbst->mbst_sys_start = CHIP_W1_SYS_START(v);
-		mbst->mbst_sys_end = CHIP_W1_SYS_END(v);
-		mbst->mbst_align_stride = CHIP_ALIGN_STRIDE;
-		mbst->mbst_flags = 0;
-		break;
-#endif
-
-#ifdef CHIP_W2_BUS_START
-	case 1:
-		mbst->mbst_bus_start = CHIP_W2_BUS_START(v);
-		mbst->mbst_bus_end = CHIP_W2_BUS_END(v);
-		mbst->mbst_sys_start = CHIP_W2_SYS_START(v);
-		mbst->mbst_sys_end = CHIP_W2_SYS_END(v);
-		mbst->mbst_align_stride = CHIP_ALIGN_STRIDE;
-		mbst->mbst_flags = 0;
-		break;
+	printf("%s: window[2]=0x%lx-0x%lx\n", __S(__BS(map)),
+	    (u_long)CHIP_W2_BUS_START(v), (u_long)CHIP_W2_BUS_END(v));
 #endif
-
 #ifdef CHIP_W3_BUS_START
-	case 2:
-		mbst->mbst_bus_start = CHIP_W3_BUS_START(v);
-		mbst->mbst_bus_end = CHIP_W3_BUS_END(v);
-		mbst->mbst_sys_start = CHIP_W3_SYS_START(v);
-		mbst->mbst_sys_end = CHIP_W3_SYS_END(v);
-		mbst->mbst_align_stride = CHIP_ALIGN_STRIDE;
-		mbst->mbst_flags = 0;
-		break;
+	printf("%s: window[3]=0x%lx-0x%lx\n", __S(__BS(map)),
+	    (u_long)CHIP_W3_BUS_START(v), (u_long)CHIP_W3_BUS_END(v));
 #endif
-
-	default:
-		panic(__S(__BS(get_window)) ": invalid window %d",
-		    window);
-	}
-
-	return (0);
+#endif /* EXTENT_DEBUG */
+	/* No translation. */
+	return (EINVAL);
 }
 
-int
+static int
 __BS(map)(void *v, bus_addr_t addr, bus_size_t size, int flags,
     bus_space_handle_t *hp, int acct)
 {
@@ -790,7 +394,7 @@
 	return (0);
 }
 
-void
+static void
 __BS(unmap)(void *v, bus_space_handle_t h, bus_size_t size, int acct)
 {
 #if !defined(_LP64) || defined(CHIP_EXTENT)
@@ -901,7 +505,7 @@
 #endif /* CHIP_EXTENT */
 }
 
-int
+static int
 __BS(subregion)(void *v, bus_space_handle_t h, bus_size_t offset,
     bus_size_t size, bus_space_handle_t *nh)
 {
@@ -910,7 +514,7 @@
 	return (0);
 }
 
-int
+static int
 __BS(alloc)(void *v, bus_addr_t rstart, bus_addr_t rend, bus_size_t size,
     bus_size_t align, bus_size_t boundary, int flags, bus_addr_t *addrp,
     bus_space_handle_t *bshp)
@@ -983,7 +587,7 @@
 #endif /* CHIP_EXTENT */
 }
 
-void
+static void
 __BS(free)(void *v, bus_space_handle_t bsh, bus_size_t size)
 {
 
@@ -991,7 +595,7 @@
 	__BS(unmap)(v, bsh, size, 1);
 }
 
-void *
+static void *
 __BS(vaddr)(void *v, bus_space_handle_t bsh)
 {
 
@@ -1003,7 +607,7 @@
 #endif
 }
 
-paddr_t
+static paddr_t
 __BS(mmap)(void *v, bus_addr_t addr, off_t off, int prot, int flags)
 {
 #ifdef CHIP_IO
@@ -1029,7 +633,7 @@
 #endif
 }
 
-inline void
+static void
 __BS(barrier)(void *v, bus_space_handle_t h, bus_size_t o, bus_size_t l, int f)
 {
 
@@ -1038,7 +642,7 @@
 		wbflush();
 }
 
-inline uint8_t
+static uint8_t
 __BS(read_1)(void *v, bus_space_handle_t h, bus_size_t off)
 {
 #if CHIP_ACCESS_SIZE > 1
@@ -1057,7 +661,7 @@
         return r;
 }
 
-inline uint16_t
+static uint16_t
 __BS(read_2)(void *v, bus_space_handle_t h, bus_size_t off)
 {
 #if CHIP_ACCESS_SIZE > 2
@@ -1077,7 +681,7 @@
 	return r;
 }
 
-inline uint32_t
+static uint32_t
 __BS(read_4)(void *v, bus_space_handle_t h, bus_size_t off)
 {
 #if CHIP_ACCESS_SIZE > 4
@@ -1097,7 +701,7 @@
 	return r;
 }
 
-inline uint64_t
+static uint64_t
 __BS(read_8)(void *v, bus_space_handle_t h, bus_size_t off)
 {
 	volatile uint64_t *ptr;
@@ -1115,7 +719,7 @@
 
 
 #define CHIP_read_multi_N(BYTES,TYPE)					\
-void									\
+static void									\
 __C(__BS(read_multi_),BYTES)(void *v, bus_space_handle_t h,		\
     bus_size_t o, TYPE *a, bus_size_t c)				\
 {									\
@@ -1132,7 +736,7 @@
 CHIP_read_multi_N(8,uint64_t)
 
 #define CHIP_read_region_N(BYTES,TYPE)					\
-void									\
+static void									\
 __C(__BS(read_region_),BYTES)(void *v, bus_space_handle_t h,		\
     bus_size_t o, TYPE *a, bus_size_t c)				\
 {									\
@@ -1148,7 +752,7 @@
 CHIP_read_region_N(8,uint64_t)
 
 
-inline void
+static void
 __BS(write_1)(void *v, bus_space_handle_t h, bus_size_t off, uint8_t val)
 {
 #if CHIP_ACCESS_SIZE > 1
@@ -1164,7 +768,7 @@
 	*ptr = CHIP_SWAP_ACCESS(((CHIP_TYPE)val) << shift);
 }
 
-inline void
+static void
 __BS(write_2)(void *v, bus_space_handle_t h, bus_size_t off, uint16_t val)
 {
 #if CHIP_ACCESS_SIZE > 2
@@ -1184,7 +788,7 @@
 		*ptr = CHIP_SWAP16(val);
 }
 
-inline void
+static void
 __BS(write_4)(void *v, bus_space_handle_t h, bus_size_t off, uint32_t val)
 {
 #if CHIP_ACCESS_SIZE > 4
@@ -1204,7 +808,7 @@
                 *ptr = CHIP_SWAP32(val);
 }
 
-inline void
+static void
 __BS(write_8)(void *v, bus_space_handle_t h, bus_size_t off, uint64_t val)
 {
 	volatile uint64_t *ptr;
@@ -1218,7 +822,7 @@
 }
 
 #define CHIP_write_multi_N(BYTES,TYPE)					\
-void									\
+static void									\
 __C(__BS(write_multi_),BYTES)(void *v, bus_space_handle_t h,		\
     bus_size_t o, const TYPE *a, bus_size_t c)				\
 {									\
@@ -1235,7 +839,7 @@
 CHIP_write_multi_N(8,uint64_t)
 
 #define CHIP_write_region_N(BYTES,TYPE)					\
-void									\
+static void									\
 __C(__BS(write_region_),BYTES)(void *v, bus_space_handle_t h,		\
     bus_size_t o, const TYPE *a, bus_size_t c)				\
 {									\
@@ -1251,7 +855,7 @@
 CHIP_write_region_N(8,uint64_t)
 
 #define CHIP_set_multi_N(BYTES,TYPE)					\
-void									\
+static void									\
 __C(__BS(set_multi_),BYTES)(void *v, bus_space_handle_t h,		\
     bus_size_t o, TYPE val, bus_size_t c)				\
 {									\
@@ -1268,7 +872,7 @@
 CHIP_set_multi_N(8,uint64_t)
 
 #define CHIP_set_region_N(BYTES,TYPE)					\
-void									\
+static void									\
 __C(__BS(set_region_),BYTES)(void *v, bus_space_handle_t h,		\
     bus_size_t o, TYPE val, bus_size_t c)				\
 {									\
@@ -1284,7 +888,7 @@
 CHIP_set_region_N(8,uint64_t)
 
 #define	CHIP_copy_region_N(BYTES)					\
-void									\
+static void									\
 __C(__BS(copy_region_),BYTES)(void *v, bus_space_handle_t h1,		\
     bus_size_t o1, bus_space_handle_t h2, bus_size_t o2, bus_size_t c)	\
 {									\
@@ -1309,7 +913,7 @@
 
 #ifdef	CHIP_NEED_STREAM
 
-inline uint8_t
+static uint8_t
 __BS(read_stream_1)(void *v, bus_space_handle_t h, bus_size_t off)
 {
 #if CHIP_ACCESS_SIZE > 1
@@ -1322,7 +926,7 @@
 	return *ptr & 0xff;
 }
 
-inline uint16_t
+static uint16_t
 __BS(read_stream_2)(void *v, bus_space_handle_t h, bus_size_t off)
 {
 #if CHIP_ACCESS_SIZE > 2
@@ -1335,7 +939,7 @@
 	return *ptr & 0xffff;
 }
 
-inline uint32_t
+static uint32_t
 __BS(read_stream_4)(void *v, bus_space_handle_t h, bus_size_t off)
 {
 #if CHIP_ACCESS_SIZE > 4
@@ -1348,7 +952,7 @@
 	return *ptr & 0xffffffff;
 }
 
-inline uint64_t
+static uint64_t
 __BS(read_stream_8)(void *v, bus_space_handle_t h, bus_size_t off)
 {
 	volatile uint64_t *ptr;
@@ -1358,7 +962,7 @@
 }
 
 #define CHIP_read_multi_stream_N(BYTES,TYPE)				\
-void									\
+static void									\
 __C(__BS(read_multi_stream_),BYTES)(void *v, bus_space_handle_t h,	\
     bus_size_t o, TYPE *a, bus_size_t c)				\
 {									\
@@ -1375,7 +979,7 @@
 CHIP_read_multi_stream_N(8,uint64_t)
 
 #define CHIP_read_region_stream_N(BYTES,TYPE)				\
-void									\
+static void									\
 __C(__BS(read_region_stream_),BYTES)(void *v, bus_space_handle_t h,	\
     bus_size_t o, TYPE *a, bus_size_t c)				\
 {									\
@@ -1390,7 +994,7 @@
 CHIP_read_region_stream_N(4,uint32_t)
 CHIP_read_region_stream_N(8,uint64_t)
 
-inline void
+static void
 __BS(write_stream_1)(void *v, bus_space_handle_t h, bus_size_t off,
 		     uint8_t val)
 {
@@ -1404,7 +1008,7 @@
 	*ptr = val;
 }
 
-inline void
+static void
 __BS(write_stream_2)(void *v, bus_space_handle_t h, bus_size_t off,
 	      uint16_t val)
 {
@@ -1418,7 +1022,7 @@
 	*ptr = val;
 }
 
-inline void
+static void
 __BS(write_stream_4)(void *v, bus_space_handle_t h, bus_size_t off,
 		     uint32_t val)
 {
@@ -1432,7 +1036,7 @@
 	*ptr = val;
 }
 
-inline void
+static void
 __BS(write_stream_8)(void *v, bus_space_handle_t h, bus_size_t off,
 		     uint64_t val)
 {
@@ -1443,7 +1047,7 @@
 }
 
 #define CHIP_write_multi_stream_N(BYTES,TYPE)				\
-void									\
+static void									\
 __C(__BS(write_multi_stream_),BYTES)(void *v, bus_space_handle_t h,	\
     bus_size_t o, const TYPE *a, bus_size_t c)				\
 {									\
@@ -1460,7 +1064,7 @@
 CHIP_write_multi_stream_N(8,uint64_t)
 
 #define CHIP_write_region_stream_N(BYTES,TYPE)				\
-void									\
+static void									\
 __C(__BS(write_region_stream_),BYTES)(void *v, bus_space_handle_t h,	\
     bus_size_t o, const TYPE *a, bus_size_t c)				\
 {									\
@@ -1476,3 +1080,234 @@
 CHIP_write_region_stream_N(8,uint64_t)
 
 #endif	/* CHIP_NEED_STREAM */
+
+void
+__BS(init)(bus_space_tag_t t, void *v)
+{
+#ifdef CHIP_EXTENT
+	struct extent *ex;
+#endif
+
+	/*
+	 * Initialize the bus space tag.
+	 */
+
+	/* cookie */
+	t->bs_cookie =		v;
+
+	/* mapping/unmapping */
+	t->bs_map =		__BS(map);
+	t->bs_unmap =		__BS(unmap);
+	t->bs_subregion =	__BS(subregion);
+
+	t->bs_translate =	__BS(translate);
+	t->bs_get_window =	__BS(get_window);
+
+	/* allocation/deallocation */
+	t->bs_alloc =		__BS(alloc);
+	t->bs_free =		__BS(free);
+
+	/* get kernel virtual address */
+	t->bs_vaddr =		__BS(vaddr);
+
+	/* mmap for user */
+	t->bs_mmap =		__BS(mmap);
+
+	/* barrier */
+	t->bs_barrier =		__BS(barrier);
+	
+	/* read (single) */
+	t->bs_r_1 =		__BS(read_1);
+	t->bs_r_2 =		__BS(read_2);
+	t->bs_r_4 =		__BS(read_4);
+	t->bs_r_8 =		__BS(read_8);
+	
+	/* read multiple */
+	t->bs_rm_1 =		__BS(read_multi_1);
+	t->bs_rm_2 =		__BS(read_multi_2);
+	t->bs_rm_4 =		__BS(read_multi_4);
+	t->bs_rm_8 =		__BS(read_multi_8);
+	
+	/* read region */
+	t->bs_rr_1 =		__BS(read_region_1);
+	t->bs_rr_2 =		__BS(read_region_2);
+	t->bs_rr_4 =		__BS(read_region_4);
+	t->bs_rr_8 =		__BS(read_region_8);
+	
+	/* write (single) */
+	t->bs_w_1 =		__BS(write_1);
+	t->bs_w_2 =		__BS(write_2);
+	t->bs_w_4 =		__BS(write_4);
+	t->bs_w_8 =		__BS(write_8);
+	
+	/* write multiple */
+	t->bs_wm_1 =		__BS(write_multi_1);
+	t->bs_wm_2 =		__BS(write_multi_2);
+	t->bs_wm_4 =		__BS(write_multi_4);
+	t->bs_wm_8 =		__BS(write_multi_8);
+	
+	/* write region */
+	t->bs_wr_1 =		__BS(write_region_1);
+	t->bs_wr_2 =		__BS(write_region_2);
+	t->bs_wr_4 =		__BS(write_region_4);
+	t->bs_wr_8 =		__BS(write_region_8);
+
+	/* set multiple */
+	t->bs_sm_1 =		__BS(set_multi_1);
+	t->bs_sm_2 =		__BS(set_multi_2);
+	t->bs_sm_4 =		__BS(set_multi_4);
+	t->bs_sm_8 =		__BS(set_multi_8);
+	
+	/* set region */
+	t->bs_sr_1 =		__BS(set_region_1);
+	t->bs_sr_2 =		__BS(set_region_2);
+	t->bs_sr_4 =		__BS(set_region_4);
+	t->bs_sr_8 =		__BS(set_region_8);
+
+	/* copy */
+	t->bs_c_1 =		__BS(copy_region_1);
+	t->bs_c_2 =		__BS(copy_region_2);
+	t->bs_c_4 =		__BS(copy_region_4);
+	t->bs_c_8 =		__BS(copy_region_8);
+
+#ifdef CHIP_NEED_STREAM
+	/* read (single), stream */
+	t->bs_rs_1 =		__BS(read_stream_1);
+	t->bs_rs_2 =		__BS(read_stream_2);
+	t->bs_rs_4 =		__BS(read_stream_4);
+	t->bs_rs_8 =		__BS(read_stream_8);
+	
+	/* read multiple, stream */
+	t->bs_rms_1 =		__BS(read_multi_stream_1);
+	t->bs_rms_2 =		__BS(read_multi_stream_2);
+	t->bs_rms_4 =		__BS(read_multi_stream_4);
+	t->bs_rms_8 =		__BS(read_multi_stream_8);
+	
+	/* read region, stream */
+	t->bs_rrs_1 =		__BS(read_region_stream_1);
+	t->bs_rrs_2 =		__BS(read_region_stream_2);
+	t->bs_rrs_4 =		__BS(read_region_stream_4);
+	t->bs_rrs_8 =		__BS(read_region_stream_8);
+	
+	/* write (single), stream */
+	t->bs_ws_1 =		__BS(write_stream_1);
+	t->bs_ws_2 =		__BS(write_stream_2);
+	t->bs_ws_4 =		__BS(write_stream_4);
+	t->bs_ws_8 =		__BS(write_stream_8);
+	
+	/* write multiple, stream */
+	t->bs_wms_1 =		__BS(write_multi_stream_1);
+	t->bs_wms_2 =		__BS(write_multi_stream_2);
+	t->bs_wms_4 =		__BS(write_multi_stream_4);
+	t->bs_wms_8 =		__BS(write_multi_stream_8);
+	
+	/* write region, stream */
+	t->bs_wrs_1 =		__BS(write_region_stream_1);
+	t->bs_wrs_2 =		__BS(write_region_stream_2);
+	t->bs_wrs_4 =		__BS(write_region_stream_4);
+	t->bs_wrs_8 =		__BS(write_region_stream_8);
+
+#else	/* CHIP_NEED_STREAM */
+
+	/* read (single), stream */
+	t->bs_rs_1 =		__BS(read_1);
+	t->bs_rs_2 =		__BS(read_2);
+	t->bs_rs_4 =		__BS(read_4);
+	t->bs_rs_8 =		__BS(read_8);
+	
+	/* read multiple, stream */
+	t->bs_rms_1 =		__BS(read_multi_1);
+	t->bs_rms_2 =		__BS(read_multi_2);
+	t->bs_rms_4 =		__BS(read_multi_4);
+	t->bs_rms_8 =		__BS(read_multi_8);
+	
+	/* read region, stream */
+	t->bs_rrs_1 =		__BS(read_region_1);
+	t->bs_rrs_2 =		__BS(read_region_2);
+	t->bs_rrs_4 =		__BS(read_region_4);
+	t->bs_rrs_8 =		__BS(read_region_8);
+	
+	/* write (single), stream */
+	t->bs_ws_1 =		__BS(write_1);
+	t->bs_ws_2 =		__BS(write_2);
+	t->bs_ws_4 =		__BS(write_4);
+	t->bs_ws_8 =		__BS(write_8);
+	
+	/* write multiple, stream */
+	t->bs_wms_1 =		__BS(write_multi_1);
+	t->bs_wms_2 =		__BS(write_multi_2);
+	t->bs_wms_4 =		__BS(write_multi_4);
+	t->bs_wms_8 =		__BS(write_multi_8);
+	
+	/* write region, stream */
+	t->bs_wrs_1 =		__BS(write_region_1);
+	t->bs_wrs_2 =		__BS(write_region_2);
+	t->bs_wrs_4 =		__BS(write_region_4);
+	t->bs_wrs_8 =		__BS(write_region_8);
+#endif	/* CHIP_NEED_STREAM */
+
+#ifdef CHIP_EXTENT
+	/* XXX WE WANT EXTENT_NOCOALESCE, BUT WE CAN'T USE IT. XXX */
+	ex = extent_create(__S(__BS(bus)), 0x0UL, ~0UL, M_DEVBUF,
+	    (void *)CHIP_EX_STORE(v), CHIP_EX_STORE_SIZE(v), EX_NOWAIT);
+	extent_alloc_region(ex, 0, ~0UL, EX_NOWAIT);
+
+#ifdef CHIP_W1_BUS_START
+	/*
+	 * The window may be disabled.  We notice this by seeing
+	 * -1 as the bus base address.
+	 */
+	if (CHIP_W1_BUS_START(v) == (bus_addr_t) -1) {
+#ifdef EXTENT_DEBUG
+		printf("%s: this space is disabled\n", __S(__BS(init)));
+#endif
+		return;
+	}
+
+#ifdef EXTENT_DEBUG
+	printf("%s: freeing from %#"PRIxBUSADDR" to %#"PRIxBUSADDR"\n",
+	    __S(__BS(init)), (bus_addr_t)CHIP_W1_BUS_START(v),
+	    (bus_addr_t)CHIP_W1_BUS_END(v));
+#endif
+	extent_free(ex, CHIP_W1_BUS_START(v),
+	    CHIP_W1_BUS_END(v) - CHIP_W1_BUS_START(v) + 1, EX_NOWAIT);
+#endif
+#ifdef CHIP_W2_BUS_START
+	if (CHIP_W2_BUS_START(v) != CHIP_W1_BUS_START(v)) {
+#ifdef EXTENT_DEBUG
+		printf("xxx: freeing from 0x%lx to 0x%lx\n",
+		    (u_long)CHIP_W2_BUS_START(v), (u_long)CHIP_W2_BUS_END(v));
+#endif
+		extent_free(ex, CHIP_W2_BUS_START(v),
+		    CHIP_W2_BUS_END(v) - CHIP_W2_BUS_START(v) + 1, EX_NOWAIT);
+	} else {
+#ifdef EXTENT_DEBUG
+		printf("xxx: window 2 (0x%lx to 0x%lx) overlaps window 1\n",
+		    (u_long)CHIP_W2_BUS_START(v), (u_long)CHIP_W2_BUS_END(v));
+#endif
+	}
+#endif
+#ifdef CHIP_W3_BUS_START
+	if (CHIP_W3_BUS_START(v) != CHIP_W1_BUS_START(v) &&
+	    CHIP_W3_BUS_START(v) != CHIP_W2_BUS_START(v)) {
+#ifdef EXTENT_DEBUG
+		printf("xxx: freeing from 0x%lx to 0x%lx\n",
+		    (u_long)CHIP_W3_BUS_START(v), (u_long)CHIP_W3_BUS_END(v));
+#endif
+		extent_free(ex, CHIP_W3_BUS_START(v),
+		    CHIP_W3_BUS_END(v) - CHIP_W3_BUS_START(v) + 1, EX_NOWAIT);
+	} else {
+#ifdef EXTENT_DEBUG
+		printf("xxx: window 2 (0x%lx to 0x%lx) overlaps window 1\n",
+		    (u_long)CHIP_W2_BUS_START(v), (u_long)CHIP_W2_BUS_END(v));
+#endif
+	}
+#endif
+
+#ifdef EXTENT_DEBUG
+	extent_print(ex);
+#endif
+	CHIP_EXTENT(v) = ex;
+#endif /* CHIP_EXTENT */
+}
+

Reply via email to