Module Name:    src
Committed By:   dyoung
Date:           Wed Jul 20 21:30:13 UTC 2011

Modified Files:
        src/sys/arch/sh3/include: bus_funcs.h
        src/sys/arch/sh3/sh3: sh3_machdep.c

Log Message:
Remove redundant, static inline bus_space(9) declarations
from sh3/bus_funcs.h and move the non-inline definitions to
sh3/sh3_machdep.c.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/sh3/include/bus_funcs.h
cvs rdiff -u -r1.92 -r1.93 src/sys/arch/sh3/sh3/sh3_machdep.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/sh3/include/bus_funcs.h
diff -u src/sys/arch/sh3/include/bus_funcs.h:1.1 src/sys/arch/sh3/include/bus_funcs.h:1.2
--- src/sys/arch/sh3/include/bus_funcs.h:1.1	Fri Jul  1 17:10:01 2011
+++ src/sys/arch/sh3/include/bus_funcs.h	Wed Jul 20 21:30:13 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: bus_funcs.h,v 1.1 2011/07/01 17:10:01 dyoung Exp $	*/
+/*	$NetBSD: bus_funcs.h,v 1.2 2011/07/20 21:30:13 dyoung Exp $	*/
 
 /*-
  * Copyright (c) 1996, 1997 The NetBSD Foundation, Inc.
@@ -64,9 +64,6 @@
 #ifndef _SH3_BUS_FUNCS_H_
 #define	_SH3_BUS_FUNCS_H_
 
-int bus_space_map(bus_space_tag_t, bus_addr_t, bus_size_t size,
-    int, bus_space_handle_t *);
-
 #ifdef SH4_PCMCIA
 int shpcmcia_memio_map(bus_space_tag_t, bus_addr_t, bus_size_t size,
     int, bus_space_handle_t *);
@@ -82,694 +79,6 @@
 #endif
 
 /*
- *	u_intN_t bus_space_read_N(bus_space_tag_t tag,
- *	    bus_space_handle_t bsh, bus_size_t offset);
- *
- * Read a 1, 2, 4, or 8 byte quantity from bus space
- * described by tag/handle/offset.
- */
-static __inline uint8_t bus_space_read_1
-	(bus_space_tag_t, bus_space_handle_t, bus_size_t);
-static __inline uint16_t bus_space_read_2
-	(bus_space_tag_t, bus_space_handle_t, bus_size_t);
-static __inline uint32_t bus_space_read_4
-	(bus_space_tag_t, bus_space_handle_t, bus_size_t);
-
-uint8_t
-bus_space_read_1(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset)
-{
-
-	return *(volatile uint8_t *)(bsh + offset);
-}
-
-uint16_t
-bus_space_read_2(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset)
-{
-
-	return bswap16(*(volatile uint16_t *)(bsh + offset));
-}
-
-uint32_t
-bus_space_read_4(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset)
-{
-
-	return bswap32(*(volatile uint32_t *)(bsh + offset));
-}
-
-static __inline uint16_t bus_space_read_stream_2
-	(bus_space_tag_t, bus_space_handle_t, bus_size_t);
-
-static __inline uint32_t bus_space_read_stream_4
-	(bus_space_tag_t, bus_space_handle_t, bus_size_t);
-
-uint16_t
-bus_space_read_stream_2(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset)
-{
-
-	return *(volatile uint16_t *)(bsh + offset);
-}
-
-uint32_t
-bus_space_read_stream_4(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset)
-{
-
-	return *(volatile uint32_t *)(bsh + offset);
-}
-
-/*
- *	void bus_space_read_multi_N(bus_space_tag_t tag,
- *	    bus_space_handle_t bsh, bus_size_t offset,
- *	    u_intN_t *addr, size_t count);
- *
- * Read `count' 1, 2, 4, or 8 byte quantities from bus space
- * described by tag/handle/offset and copy into buffer provided.
- */
-static __inline void bus_space_read_multi_1(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, uint8_t *, bus_size_t);
-static __inline void bus_space_read_multi_2(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, uint16_t *, bus_size_t);
-static __inline void bus_space_read_multi_4(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, uint32_t *, bus_size_t);
-
-void
-bus_space_read_multi_1(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, uint8_t *addr, bus_size_t count)
-{
-
-	while (count--)
-		*addr++ = bus_space_read_1(tag, bsh, offset);
-}
-
-void
-bus_space_read_multi_2(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, uint16_t *addr, bus_size_t count)
-{
-
-	while (count--)
-		*addr++ = bus_space_read_2(tag, bsh, offset);
-}
-
-void
-bus_space_read_multi_4(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, uint32_t *addr, bus_size_t count)
-{
-
-	while (count--)
-		*addr++ = bus_space_read_4(tag, bsh, offset);
-}
-
-static __inline void bus_space_read_multi_stream_2(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, uint16_t *, bus_size_t);
-static __inline void bus_space_read_multi_stream_4(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, uint32_t *, bus_size_t);
-
-void
-bus_space_read_multi_stream_2(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, uint16_t *addr, bus_size_t count)
-{
-
-	while (count--)
-		*addr++ = *(volatile uint16_t *)(bsh + offset);
-}
-
-void
-bus_space_read_multi_stream_4(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, uint32_t *addr, bus_size_t count)
-{
-
-	while (count--)
-		*addr++ = *(volatile uint32_t *)(bsh + offset);
-}
-
-/*
- *	int bus_space_alloc(bus_space_tag_t t, 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);
- *
- * Allocate a region of bus space.
- */
-int sh_memio_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 *);
-
-#define	bus_space_alloc(t, rs, re, s, a, b, f, ap, hp)			\
-	sh_memio_alloc((t), (rs), (re), (s), (a), (b), (f), (ap), (hp))
-
-/*
- *	int bus_space_free(bus_space_tag_t t,
- *	    bus_space_handle_t bsh, bus_size_t size);
- *
- * Free a region of bus space.
- */
-void sh_memio_free(bus_space_tag_t, bus_space_handle_t, bus_size_t);
-
-#define	bus_space_free(t, h, s)						\
-	sh_memio_free((t), (h), (s))
-
-/*
- *	int bus_space_unmap(bus_space_tag_t t,
- *	    bus_space_handle_t bsh, bus_size_t size);
- *
- * Unmap a region of bus space.
- */
-void sh_memio_unmap(bus_space_tag_t, bus_space_handle_t, bus_size_t);
-
-#define	bus_space_unmap(t, h, s)					\
-	sh_memio_unmap((t), (h), (s))
-
-/*
- *	int bus_space_subregion(bus_space_tag_t t,
- *	    bus_space_handle_t bsh, bus_size_t offset, bus_size_t size,
- *	    bus_space_handle_t *nbshp);
- *
- * Get a new handle for a subregion of an already-mapped area of bus space.
- */
-int sh_memio_subregion(bus_space_tag_t, bus_space_handle_t,
-    bus_size_t, bus_size_t, bus_space_handle_t *);
-
-#define	bus_space_subregion(t, h, o, s, nhp)				\
-	sh_memio_subregion((t), (h), (o), (s), (nhp))
-
-/*
- *	void bus_space_read_region_N(bus_space_tag_t tag,
- *	    bus_space_handle_t bsh, bus_size_t offset,
- *	    u_intN_t *addr, size_t count);
- *
- * Read `count' 1, 2, 4, or 8 byte quantities from bus space
- * described by tag/handle and starting at `offset' and copy into
- * buffer provided.
- */
-static __inline void bus_space_read_region_1(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, uint8_t *, bus_size_t);
-static __inline void bus_space_read_region_2(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, uint16_t *, bus_size_t);
-static __inline void bus_space_read_region_4(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, uint32_t *, bus_size_t);
-
-void
-bus_space_read_region_1(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, uint8_t *addr, bus_size_t count)
-{
-	uint8_t *p = (uint8_t *)(bsh + offset);
-
-	while (count--)
-		*addr++ = *p++;
-}
-
-void
-bus_space_read_region_2(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, uint16_t *addr, bus_size_t count)
-{
-	uint16_t *p = (uint16_t *)(bsh + offset);
-
-	while (count--)
-		*addr++ = bswap16(*p++);
-}
-
-void
-bus_space_read_region_4(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, uint32_t *addr, bus_size_t count)
-{
-	uint32_t *p = (uint32_t *)(bsh + offset);
-
-	while (count--)
-		*addr++ = bswap32(*p++);
-}
-
-/*
- *	void bus_space_read_region_stream_N(bus_space_tag_t tag,
- *	    bus_space_handle_t bsh, bus_size_t offset,
- *	    u_intN_t *addr, size_t count);
- *
- * Read `count' 1, 2, 4, or 8 byte quantities from bus space
- * described by tag/handle and starting at `offset' and copy into
- * buffer provided.
- */
-static __inline void bus_space_read_region_stream_1(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, uint8_t *, bus_size_t);
-static __inline void bus_space_read_region_stream_2(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, uint16_t *, bus_size_t);
-static __inline void bus_space_read_region_stream_4(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, uint32_t *, bus_size_t);
-
-void
-bus_space_read_region_stream_1(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, uint8_t *addr, bus_size_t count)
-{
-	uint8_t *p = (uint8_t *)(bsh + offset);
-
-	while (count--)
-		*addr++ = *p++;
-}
-
-void
-bus_space_read_region_stream_2(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, uint16_t *addr, bus_size_t count)
-{
-	uint16_t *p = (uint16_t *)(bsh + offset);
-
-	while (count--)
-		*addr++ = *p++;
-}
-
-void
-bus_space_read_region_stream_4(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, uint32_t *addr, bus_size_t count)
-{
-	uint32_t *p = (uint32_t *)(bsh + offset);
-
-	while (count--)
-		*addr++ = *p++;
-}
-
-/*
- *	void bus_space_write_region_N(bus_space_tag_t tag,
- *	    bus_space_handle_t bsh, bus_size_t offset,
- *	    const u_intN_t *addr, size_t count);
- *
- * Write `count' 1, 2, 4, or 8 byte quantities from the buffer provided
- * to bus space described by tag/handle starting at `offset'.
- */
-static __inline void bus_space_write_region_1(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, const uint8_t *, bus_size_t);
-static __inline void bus_space_write_region_2(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, const uint16_t *, bus_size_t);
-static __inline void bus_space_write_region_4(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, const uint32_t *, bus_size_t);
-
-void
-bus_space_write_region_1(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, const uint8_t *addr, bus_size_t count)
-{
-	uint8_t *p = (uint8_t *)(bsh + offset);
-
-	while (count--)
-		*p++ = *addr++;
-}
-
-void
-bus_space_write_region_2(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, const uint16_t *addr, bus_size_t count)
-{
-	uint16_t *p = (uint16_t *)(bsh + offset);
-
-	while (count--)
-		*p++ = bswap16(*addr++);
-}
-
-void
-bus_space_write_region_4(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, const uint32_t *addr, bus_size_t count)
-{
-	uint32_t *p = (uint32_t *)(bsh + offset);
-
-	while (count--)
-		*p++ = bswap32(*addr++);
-}
-
-/*
- *	void bus_space_write_region_stream_N(bus_space_tag_t tag,
- *	    bus_space_handle_t bsh, bus_size_t offset,
- *	    const u_intN_t *addr, size_t count);
- *
- * Write `count' 1, 2, 4, or 8 byte quantities from the buffer provided
- * to bus space described by tag/handle starting at `offset'.
- */
-static __inline void bus_space_write_region_stream_1(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, const uint8_t *, bus_size_t);
-static __inline void bus_space_write_region_stream_2(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, const uint16_t *, bus_size_t);
-static __inline void bus_space_write_region_stream_4(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, const uint32_t *, bus_size_t);
-
-void
-bus_space_write_region_stream_1(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, const uint8_t *addr, bus_size_t count)
-{
-	uint8_t *p = (uint8_t *)(bsh + offset);
-
-	while (count--)
-		*p++ = *addr++;
-}
-
-void
-bus_space_write_region_stream_2(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, const uint16_t *addr, bus_size_t count)
-{
-	uint16_t *p = (uint16_t *)(bsh + offset);
-
-	while (count--)
-		*p++ = *addr++;
-}
-
-void
-bus_space_write_region_stream_4(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, const uint32_t *addr, bus_size_t count)
-{
-	uint32_t *p = (uint32_t *)(bsh + offset);
-
-	while (count--)
-		*p++ = *addr++;
-}
-
-/*
- *	void bus_space_write_N(bus_space_tag_t tag,
- *	    bus_space_handle_t bsh, bus_size_t offset,
- *	    u_intN_t value);
- *
- * Write the 1, 2, 4, or 8 byte value `value' to bus space
- * described by tag/handle/offset.
- */
-static __inline void bus_space_write_1(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, uint8_t);
-static __inline void bus_space_write_2(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, uint16_t);
-static __inline void bus_space_write_4(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, uint32_t);
-
-void
-bus_space_write_1(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, uint8_t value)
-{
-
-	*(volatile uint8_t *)(bsh + offset) = value;
-}
-
-void
-bus_space_write_2(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, uint16_t value)
-{
-
-	*(volatile uint16_t *)(bsh + offset) = bswap16(value);
-}
-
-void
-bus_space_write_4(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, uint32_t value)
-{
-
-	*(volatile uint32_t *)(bsh + offset) = bswap32(value);
-}
-
-static __inline void bus_space_write_stream_2(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, uint16_t);
-static __inline void bus_space_write_stream_4(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, uint32_t);
-
-void
-bus_space_write_stream_2(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, uint16_t value)
-{
-
-	*(volatile uint16_t *)(bsh + offset) = value;
-}
-
-void
-bus_space_write_stream_4(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, uint32_t value)
-{
-
-	*(volatile uint32_t *)(bsh + offset) = value;
-}
-
-/*
- *	void bus_space_write_multi_N(bus_space_tag_t tag,
- *	    bus_space_handle_t bsh, bus_size_t offset,
- *	    const u_intN_t *addr, size_t count);
- *
- * Write `count' 1, 2, 4, or 8 byte quantities from the buffer
- * provided to bus space described by tag/handle/offset.
- */
-static __inline void bus_space_write_multi_1(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, const uint8_t *, bus_size_t);
-static __inline void bus_space_write_multi_2(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, const uint16_t *, bus_size_t);
-static __inline void bus_space_write_multi_4(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, const uint32_t *, bus_size_t);
-
-void
-bus_space_write_multi_1(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, const uint8_t *addr, bus_size_t count)
-{
-
-	while (count--)
-		bus_space_write_1(tag, bsh, offset, *addr++);
-}
-
-void
-bus_space_write_multi_2(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, const uint16_t *addr, bus_size_t count)
-{
-
-	while (count--)
-		bus_space_write_2(tag, bsh, offset, *addr++);
-}
-
-void
-bus_space_write_multi_4(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, const uint32_t *addr, bus_size_t count)
-{
-
-	while (count--)
-		bus_space_write_4(tag, bsh, offset, *addr++);
-}
-
-static __inline void bus_space_write_multi_stream_2(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, const uint16_t *, bus_size_t);
-static __inline void bus_space_write_multi_stream_4(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, const uint32_t *, bus_size_t);
-
-void
-bus_space_write_multi_stream_2(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, const uint16_t *addr, bus_size_t count)
-{
-
-	while (count--)
-		bus_space_write_stream_2(tag, bsh, offset, *addr++);
-}
-
-void
-bus_space_write_multi_stream_4(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, const uint32_t *addr, bus_size_t count)
-{
-
-	while (count--)
-		bus_space_write_stream_4(tag, bsh, offset, *addr++);
-}
-
-/*
- *	void bus_space_set_multi_N(bus_space_tag_t tag,
- *	    bus_space_handle_t bsh, bus_size_t offset, u_intN_t val,
- *	    size_t count);
- *
- * Write the 1, 2, 4, or 8 byte value `val' to bus space described
- * by tag/handle/offset `count' times.
- */
-static __inline void bus_space_set_multi_1(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, uint8_t, size_t);
-static __inline void bus_space_set_multi_2(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, uint16_t, size_t);
-static __inline void bus_space_set_multi_4(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, uint32_t, size_t);
-
-void
-bus_space_set_multi_1(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, uint8_t val, size_t count)
-{
-
-	while (count--)
-		bus_space_write_1(tag, bsh, offset, val);
-}
-
-void
-bus_space_set_multi_2(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, uint16_t val, size_t count)
-{
-
-	while (count--)
-		bus_space_write_2(tag, bsh, offset, val);
-}
-
-void
-bus_space_set_multi_4(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, uint32_t val, size_t count)
-{
-
-	while (count--)
-		bus_space_write_4(tag, bsh, offset, val);
-}
-
-/*
- *	void bus_space_set_region_N(bus_space_tag_t tag,
- *	    bus_space_handle_t bsh, bus_size_t offset, u_intN_t val,
- *	    size_t count);
- *
- * Write `count' 1, 2, 4, or 8 byte value `val' to bus space described
- * by tag/handle starting at `offset'.
- */
-static __inline void bus_space_set_region_1(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, uint8_t, size_t);
-static __inline void bus_space_set_region_2(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, uint16_t, size_t);
-static __inline void bus_space_set_region_4(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, uint32_t, size_t);
-
-void
-bus_space_set_region_1(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, uint8_t val, size_t count)
-{
-	volatile uint8_t *addr = (void *)(bsh + offset);
-
-	while (count--)
-		*addr++ = val;
-}
-
-void
-bus_space_set_region_2(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, uint16_t val, size_t count)
-{
-	volatile uint16_t *addr = (void *)(bsh + offset);
-
-	val = bswap16(val);
-	while (count--)
-		*addr++ = val;
-}
-
-void
-bus_space_set_region_4(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, uint32_t val, size_t count)
-{
-	volatile uint32_t *addr = (void *)(bsh + offset);
-
-	val = bswap32(val);
-	while (count--)
-		*addr++ = val;
-}
-
-/*
- *	void bus_space_set_region_stream_N(bus_space_tag_t tag,
- *	    bus_space_handle_t bsh, bus_size_t offset, u_intN_t val,
- *	    size_t count);
- *
- * Write `count' 1, 2, 4, or 8 byte value `val' to bus space described
- * by tag/handle starting at `offset'.
- */
-static __inline void bus_space_set_region_stream_1(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, uint8_t, bus_size_t);
-static __inline void bus_space_set_region_stream_2(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, uint16_t, bus_size_t);
-static __inline void bus_space_set_region_stream_4(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, uint32_t, bus_size_t);
-
-void
-bus_space_set_region_stream_1(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, uint8_t val, bus_size_t count)
-{
-	volatile uint8_t *addr = (void *)(bsh + offset);
-
-	while (count--)
-		*addr++ = val;
-}
-
-void
-bus_space_set_region_stream_2(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, uint16_t val, bus_size_t count)
-{
-	volatile uint16_t *addr = (void *)(bsh + offset);
-
-	while (count--)
-		*addr++ = val;
-}
-
-void
-bus_space_set_region_stream_4(bus_space_tag_t tag, bus_space_handle_t bsh,
-    bus_size_t offset, uint32_t val, bus_size_t count)
-{
-	volatile uint32_t *addr = (void *)(bsh + offset);
-
-	while (count--)
-		*addr++ = val;
-}
-
-/*
- *	void bus_space_copy_region_N(bus_space_tag_t tag,
- *	    bus_space_handle_t bsh1, bus_size_t off1,
- *	    bus_space_handle_t bsh2, bus_size_t off2,
- *	    size_t count);
- *
- * Copy `count' 1, 2, 4, or 8 byte values from bus space starting
- * at tag/bsh1/off1 to bus space starting at tag/bsh2/off2.
- */
-static __inline void bus_space_copy_region_1(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, bus_space_handle_t, bus_size_t,
-    size_t);
-static __inline void bus_space_copy_region_2(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, bus_space_handle_t, bus_size_t,
-    size_t);
-static __inline void bus_space_copy_region_4(bus_space_tag_t,
-    bus_space_handle_t, bus_size_t, bus_space_handle_t, bus_size_t,
-    size_t);
-
-void
-bus_space_copy_region_1(bus_space_tag_t t, bus_space_handle_t h1,
-    bus_size_t o1, bus_space_handle_t h2, bus_size_t o2, size_t c)
-{
-	volatile uint8_t *addr1 = (void *)(h1 + o1);
-	volatile uint8_t *addr2 = (void *)(h2 + o2);
-
-	if (addr1 >= addr2) {	/* src after dest: copy forward */
-		while (c--)
-			*addr2++ = *addr1++;
-	} else {		/* dest after src: copy backwards */
-		addr1 += c - 1;
-		addr2 += c - 1;
-		while (c--)
-			*addr2-- = *addr1--;
-	}
-}
-
-void
-bus_space_copy_region_2(bus_space_tag_t t, bus_space_handle_t h1,
-    bus_size_t o1, bus_space_handle_t h2, bus_size_t o2, size_t c)
-{
-	volatile uint16_t *addr1 = (void *)(h1 + o1);
-	volatile uint16_t *addr2 = (void *)(h2 + o2);
-
-	if (addr1 >= addr2) {	/* src after dest: copy forward */
-		while (c--)
-			*addr2++ = *addr1++;
-	} else {		/* dest after src: copy backwards */
-		addr1 += c - 1;
-		addr2 += c - 1;
-		while (c--)
-			*addr2-- = *addr1--;
-	}
-}
-
-void
-bus_space_copy_region_4(bus_space_tag_t t, bus_space_handle_t h1,
-    bus_size_t o1, bus_space_handle_t h2, bus_size_t o2, size_t c)
-{
-	volatile uint32_t *addr1 = (void *)(h1 + o1);
-	volatile uint32_t *addr2 = (void *)(h2 + o2);
-
-	if (addr1 >= addr2) {	/* src after dest: copy forward */
-		while (c--)
-			*addr2++ = *addr1++;
-	} else {		/* dest after src: copy backwards */
-		addr1 += c - 1;
-		addr2 += c - 1;
-		while (c--)
-			*addr2-- = *addr1--;
-	}
-}
-
-/*
  * Bus read/write barrier methods.
  *
  *	void bus_space_barrier(bus_space_tag_t tag,

Index: src/sys/arch/sh3/sh3/sh3_machdep.c
diff -u src/sys/arch/sh3/sh3/sh3_machdep.c:1.92 src/sys/arch/sh3/sh3/sh3_machdep.c:1.93
--- src/sys/arch/sh3/sh3/sh3_machdep.c:1.92	Fri Mar  4 22:25:28 2011
+++ src/sys/arch/sh3/sh3/sh3_machdep.c	Wed Jul 20 21:30:13 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: sh3_machdep.c,v 1.92 2011/03/04 22:25:28 joerg Exp $	*/
+/*	$NetBSD: sh3_machdep.c,v 1.93 2011/07/20 21:30:13 dyoung Exp $	*/
 
 /*-
  * Copyright (c) 1996, 1997, 1998, 2002 The NetBSD Foundation, Inc.
@@ -65,7 +65,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sh3_machdep.c,v 1.92 2011/03/04 22:25:28 joerg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sh3_machdep.c,v 1.93 2011/07/20 21:30:13 dyoung Exp $");
 
 #include "opt_ddb.h"
 #include "opt_kgdb.h"
@@ -597,3 +597,584 @@
 	l->l_md.md_regs->tf_gbr = (int)addr;
 	return 0;
 }
+
+/*
+ *	u_intN_t bus_space_read_N(bus_space_tag_t tag,
+ *	    bus_space_handle_t bsh, bus_size_t offset);
+ *
+ * Read a 1, 2, 4, or 8 byte quantity from bus space
+ * described by tag/handle/offset.
+ */
+
+uint8_t
+bus_space_read_1(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset)
+{
+
+	return *(volatile uint8_t *)(bsh + offset);
+}
+
+uint16_t
+bus_space_read_2(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset)
+{
+
+	return bswap16(*(volatile uint16_t *)(bsh + offset));
+}
+
+uint32_t
+bus_space_read_4(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset)
+{
+
+	return bswap32(*(volatile uint32_t *)(bsh + offset));
+}
+
+uint16_t
+bus_space_read_stream_2(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset)
+{
+
+	return *(volatile uint16_t *)(bsh + offset);
+}
+
+uint32_t
+bus_space_read_stream_4(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset)
+{
+
+	return *(volatile uint32_t *)(bsh + offset);
+}
+
+/*
+ *	void bus_space_read_multi_N(bus_space_tag_t tag,
+ *	    bus_space_handle_t bsh, bus_size_t offset,
+ *	    u_intN_t *addr, size_t count);
+ *
+ * Read `count' 1, 2, 4, or 8 byte quantities from bus space
+ * described by tag/handle/offset and copy into buffer provided.
+ */
+void
+bus_space_read_multi_1(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, uint8_t *addr, bus_size_t count)
+{
+
+	while (count--)
+		*addr++ = bus_space_read_1(tag, bsh, offset);
+}
+
+void
+bus_space_read_multi_2(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, uint16_t *addr, bus_size_t count)
+{
+
+	while (count--)
+		*addr++ = bus_space_read_2(tag, bsh, offset);
+}
+
+void
+bus_space_read_multi_4(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, uint32_t *addr, bus_size_t count)
+{
+
+	while (count--)
+		*addr++ = bus_space_read_4(tag, bsh, offset);
+}
+
+void
+bus_space_read_multi_stream_2(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, uint16_t *addr, bus_size_t count)
+{
+
+	while (count--)
+		*addr++ = *(volatile uint16_t *)(bsh + offset);
+}
+
+void
+bus_space_read_multi_stream_4(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, uint32_t *addr, bus_size_t count)
+{
+
+	while (count--)
+		*addr++ = *(volatile uint32_t *)(bsh + offset);
+}
+
+/*
+ *	int bus_space_alloc(bus_space_tag_t t, 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);
+ *
+ * Allocate a region of bus space.
+ */
+int sh_memio_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 *);
+
+#define	bus_space_alloc(t, rs, re, s, a, b, f, ap, hp)			\
+	sh_memio_alloc((t), (rs), (re), (s), (a), (b), (f), (ap), (hp))
+
+/*
+ *	int bus_space_free(bus_space_tag_t t,
+ *	    bus_space_handle_t bsh, bus_size_t size);
+ *
+ * Free a region of bus space.
+ */
+void sh_memio_free(bus_space_tag_t, bus_space_handle_t, bus_size_t);
+
+#define	bus_space_free(t, h, s)						\
+	sh_memio_free((t), (h), (s))
+
+/*
+ *	int bus_space_unmap(bus_space_tag_t t,
+ *	    bus_space_handle_t bsh, bus_size_t size);
+ *
+ * Unmap a region of bus space.
+ */
+void sh_memio_unmap(bus_space_tag_t, bus_space_handle_t, bus_size_t);
+
+#define	bus_space_unmap(t, h, s)					\
+	sh_memio_unmap((t), (h), (s))
+
+/*
+ *	int bus_space_subregion(bus_space_tag_t t,
+ *	    bus_space_handle_t bsh, bus_size_t offset, bus_size_t size,
+ *	    bus_space_handle_t *nbshp);
+ *
+ * Get a new handle for a subregion of an already-mapped area of bus space.
+ */
+int sh_memio_subregion(bus_space_tag_t, bus_space_handle_t,
+    bus_size_t, bus_size_t, bus_space_handle_t *);
+
+#define	bus_space_subregion(t, h, o, s, nhp)				\
+	sh_memio_subregion((t), (h), (o), (s), (nhp))
+
+/*
+ *	void bus_space_read_region_N(bus_space_tag_t tag,
+ *	    bus_space_handle_t bsh, bus_size_t offset,
+ *	    u_intN_t *addr, size_t count);
+ *
+ * Read `count' 1, 2, 4, or 8 byte quantities from bus space
+ * described by tag/handle and starting at `offset' and copy into
+ * buffer provided.
+ */
+void
+bus_space_read_region_1(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, uint8_t *addr, bus_size_t count)
+{
+	uint8_t *p = (uint8_t *)(bsh + offset);
+
+	while (count--)
+		*addr++ = *p++;
+}
+
+void
+bus_space_read_region_2(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, uint16_t *addr, bus_size_t count)
+{
+	uint16_t *p = (uint16_t *)(bsh + offset);
+
+	while (count--)
+		*addr++ = bswap16(*p++);
+}
+
+void
+bus_space_read_region_4(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, uint32_t *addr, bus_size_t count)
+{
+	uint32_t *p = (uint32_t *)(bsh + offset);
+
+	while (count--)
+		*addr++ = bswap32(*p++);
+}
+
+/*
+ *	void bus_space_read_region_stream_N(bus_space_tag_t tag,
+ *	    bus_space_handle_t bsh, bus_size_t offset,
+ *	    u_intN_t *addr, size_t count);
+ *
+ * Read `count' 1, 2, 4, or 8 byte quantities from bus space
+ * described by tag/handle and starting at `offset' and copy into
+ * buffer provided.
+ */
+void
+bus_space_read_region_stream_1(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, uint8_t *addr, bus_size_t count)
+{
+	uint8_t *p = (uint8_t *)(bsh + offset);
+
+	while (count--)
+		*addr++ = *p++;
+}
+
+void
+bus_space_read_region_stream_2(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, uint16_t *addr, bus_size_t count)
+{
+	uint16_t *p = (uint16_t *)(bsh + offset);
+
+	while (count--)
+		*addr++ = *p++;
+}
+
+void
+bus_space_read_region_stream_4(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, uint32_t *addr, bus_size_t count)
+{
+	uint32_t *p = (uint32_t *)(bsh + offset);
+
+	while (count--)
+		*addr++ = *p++;
+}
+
+/*
+ *	void bus_space_write_region_N(bus_space_tag_t tag,
+ *	    bus_space_handle_t bsh, bus_size_t offset,
+ *	    const u_intN_t *addr, size_t count);
+ *
+ * Write `count' 1, 2, 4, or 8 byte quantities from the buffer provided
+ * to bus space described by tag/handle starting at `offset'.
+ */
+void
+bus_space_write_region_1(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, const uint8_t *addr, bus_size_t count)
+{
+	uint8_t *p = (uint8_t *)(bsh + offset);
+
+	while (count--)
+		*p++ = *addr++;
+}
+
+void
+bus_space_write_region_2(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, const uint16_t *addr, bus_size_t count)
+{
+	uint16_t *p = (uint16_t *)(bsh + offset);
+
+	while (count--)
+		*p++ = bswap16(*addr++);
+}
+
+void
+bus_space_write_region_4(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, const uint32_t *addr, bus_size_t count)
+{
+	uint32_t *p = (uint32_t *)(bsh + offset);
+
+	while (count--)
+		*p++ = bswap32(*addr++);
+}
+
+/*
+ *	void bus_space_write_region_stream_N(bus_space_tag_t tag,
+ *	    bus_space_handle_t bsh, bus_size_t offset,
+ *	    const u_intN_t *addr, size_t count);
+ *
+ * Write `count' 1, 2, 4, or 8 byte quantities from the buffer provided
+ * to bus space described by tag/handle starting at `offset'.
+ */
+void
+bus_space_write_region_stream_1(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, const uint8_t *addr, bus_size_t count)
+{
+	uint8_t *p = (uint8_t *)(bsh + offset);
+
+	while (count--)
+		*p++ = *addr++;
+}
+
+void
+bus_space_write_region_stream_2(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, const uint16_t *addr, bus_size_t count)
+{
+	uint16_t *p = (uint16_t *)(bsh + offset);
+
+	while (count--)
+		*p++ = *addr++;
+}
+
+void
+bus_space_write_region_stream_4(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, const uint32_t *addr, bus_size_t count)
+{
+	uint32_t *p = (uint32_t *)(bsh + offset);
+
+	while (count--)
+		*p++ = *addr++;
+}
+
+/*
+ *	void bus_space_write_N(bus_space_tag_t tag,
+ *	    bus_space_handle_t bsh, bus_size_t offset,
+ *	    u_intN_t value);
+ *
+ * Write the 1, 2, 4, or 8 byte value `value' to bus space
+ * described by tag/handle/offset.
+ */
+void
+bus_space_write_1(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, uint8_t value)
+{
+
+	*(volatile uint8_t *)(bsh + offset) = value;
+}
+
+void
+bus_space_write_2(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, uint16_t value)
+{
+
+	*(volatile uint16_t *)(bsh + offset) = bswap16(value);
+}
+
+void
+bus_space_write_4(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, uint32_t value)
+{
+
+	*(volatile uint32_t *)(bsh + offset) = bswap32(value);
+}
+
+void
+bus_space_write_stream_2(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, uint16_t value)
+{
+
+	*(volatile uint16_t *)(bsh + offset) = value;
+}
+
+void
+bus_space_write_stream_4(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, uint32_t value)
+{
+
+	*(volatile uint32_t *)(bsh + offset) = value;
+}
+
+/*
+ *	void bus_space_write_multi_N(bus_space_tag_t tag,
+ *	    bus_space_handle_t bsh, bus_size_t offset,
+ *	    const u_intN_t *addr, size_t count);
+ *
+ * Write `count' 1, 2, 4, or 8 byte quantities from the buffer
+ * provided to bus space described by tag/handle/offset.
+ */
+void
+bus_space_write_multi_1(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, const uint8_t *addr, bus_size_t count)
+{
+
+	while (count--)
+		bus_space_write_1(tag, bsh, offset, *addr++);
+}
+
+void
+bus_space_write_multi_2(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, const uint16_t *addr, bus_size_t count)
+{
+
+	while (count--)
+		bus_space_write_2(tag, bsh, offset, *addr++);
+}
+
+void
+bus_space_write_multi_4(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, const uint32_t *addr, bus_size_t count)
+{
+
+	while (count--)
+		bus_space_write_4(tag, bsh, offset, *addr++);
+}
+
+void
+bus_space_write_multi_stream_2(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, const uint16_t *addr, bus_size_t count)
+{
+
+	while (count--)
+		bus_space_write_stream_2(tag, bsh, offset, *addr++);
+}
+
+void
+bus_space_write_multi_stream_4(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, const uint32_t *addr, bus_size_t count)
+{
+
+	while (count--)
+		bus_space_write_stream_4(tag, bsh, offset, *addr++);
+}
+
+/*
+ *	void bus_space_set_multi_N(bus_space_tag_t tag,
+ *	    bus_space_handle_t bsh, bus_size_t offset, u_intN_t val,
+ *	    size_t count);
+ *
+ * Write the 1, 2, 4, or 8 byte value `val' to bus space described
+ * by tag/handle/offset `count' times.
+ */
+void
+bus_space_set_multi_1(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, uint8_t val, size_t count)
+{
+
+	while (count--)
+		bus_space_write_1(tag, bsh, offset, val);
+}
+
+void
+bus_space_set_multi_2(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, uint16_t val, size_t count)
+{
+
+	while (count--)
+		bus_space_write_2(tag, bsh, offset, val);
+}
+
+void
+bus_space_set_multi_4(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, uint32_t val, size_t count)
+{
+
+	while (count--)
+		bus_space_write_4(tag, bsh, offset, val);
+}
+
+/*
+ *	void bus_space_set_region_N(bus_space_tag_t tag,
+ *	    bus_space_handle_t bsh, bus_size_t offset, u_intN_t val,
+ *	    size_t count);
+ *
+ * Write `count' 1, 2, 4, or 8 byte value `val' to bus space described
+ * by tag/handle starting at `offset'.
+ */
+void
+bus_space_set_region_1(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, uint8_t val, size_t count)
+{
+	volatile uint8_t *addr = (void *)(bsh + offset);
+
+	while (count--)
+		*addr++ = val;
+}
+
+void
+bus_space_set_region_2(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, uint16_t val, size_t count)
+{
+	volatile uint16_t *addr = (void *)(bsh + offset);
+
+	val = bswap16(val);
+	while (count--)
+		*addr++ = val;
+}
+
+void
+bus_space_set_region_4(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, uint32_t val, size_t count)
+{
+	volatile uint32_t *addr = (void *)(bsh + offset);
+
+	val = bswap32(val);
+	while (count--)
+		*addr++ = val;
+}
+
+/*
+ *	void bus_space_set_region_stream_N(bus_space_tag_t tag,
+ *	    bus_space_handle_t bsh, bus_size_t offset, u_intN_t val,
+ *	    size_t count);
+ *
+ * Write `count' 1, 2, 4, or 8 byte value `val' to bus space described
+ * by tag/handle starting at `offset'.
+ */
+void
+bus_space_set_region_stream_1(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, uint8_t val, bus_size_t count)
+{
+	volatile uint8_t *addr = (void *)(bsh + offset);
+
+	while (count--)
+		*addr++ = val;
+}
+
+void
+bus_space_set_region_stream_2(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, uint16_t val, bus_size_t count)
+{
+	volatile uint16_t *addr = (void *)(bsh + offset);
+
+	while (count--)
+		*addr++ = val;
+}
+
+void
+bus_space_set_region_stream_4(bus_space_tag_t tag, bus_space_handle_t bsh,
+    bus_size_t offset, uint32_t val, bus_size_t count)
+{
+	volatile uint32_t *addr = (void *)(bsh + offset);
+
+	while (count--)
+		*addr++ = val;
+}
+
+/*
+ *	void bus_space_copy_region_N(bus_space_tag_t tag,
+ *	    bus_space_handle_t bsh1, bus_size_t off1,
+ *	    bus_space_handle_t bsh2, bus_size_t off2,
+ *	    size_t count);
+ *
+ * Copy `count' 1, 2, 4, or 8 byte values from bus space starting
+ * at tag/bsh1/off1 to bus space starting at tag/bsh2/off2.
+ */
+void
+bus_space_copy_region_1(bus_space_tag_t t, bus_space_handle_t h1,
+    bus_size_t o1, bus_space_handle_t h2, bus_size_t o2, size_t c)
+{
+	volatile uint8_t *addr1 = (void *)(h1 + o1);
+	volatile uint8_t *addr2 = (void *)(h2 + o2);
+
+	if (addr1 >= addr2) {	/* src after dest: copy forward */
+		while (c--)
+			*addr2++ = *addr1++;
+	} else {		/* dest after src: copy backwards */
+		addr1 += c - 1;
+		addr2 += c - 1;
+		while (c--)
+			*addr2-- = *addr1--;
+	}
+}
+
+void
+bus_space_copy_region_2(bus_space_tag_t t, bus_space_handle_t h1,
+    bus_size_t o1, bus_space_handle_t h2, bus_size_t o2, size_t c)
+{
+	volatile uint16_t *addr1 = (void *)(h1 + o1);
+	volatile uint16_t *addr2 = (void *)(h2 + o2);
+
+	if (addr1 >= addr2) {	/* src after dest: copy forward */
+		while (c--)
+			*addr2++ = *addr1++;
+	} else {		/* dest after src: copy backwards */
+		addr1 += c - 1;
+		addr2 += c - 1;
+		while (c--)
+			*addr2-- = *addr1--;
+	}
+}
+
+void
+bus_space_copy_region_4(bus_space_tag_t t, bus_space_handle_t h1,
+    bus_size_t o1, bus_space_handle_t h2, bus_size_t o2, size_t c)
+{
+	volatile uint32_t *addr1 = (void *)(h1 + o1);
+	volatile uint32_t *addr2 = (void *)(h2 + o2);
+
+	if (addr1 >= addr2) {	/* src after dest: copy forward */
+		while (c--)
+			*addr2++ = *addr1++;
+	} else {		/* dest after src: copy backwards */
+		addr1 += c - 1;
+		addr2 += c - 1;
+		while (c--)
+			*addr2-- = *addr1--;
+	}
+}

Reply via email to