Module Name:    src
Committed By:   matt
Date:           Sun Jul 15 20:48:53 UTC 2012

Modified Files:
        src/sys/arch/arm/arm: bus_space_a2x.S bus_space_a4x.S
            bus_space_asm_generic.S

Log Message:
Add byte-swap versions.
Use RET and RETc(c)
Use ENTRY_NP


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/arm/bus_space_a2x.S \
    src/sys/arch/arm/arm/bus_space_a4x.S
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/arm/bus_space_asm_generic.S

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/arm/arm/bus_space_a2x.S
diff -u src/sys/arch/arm/arm/bus_space_a2x.S:1.1 src/sys/arch/arm/arm/bus_space_a2x.S:1.2
--- src/sys/arch/arm/arm/bus_space_a2x.S:1.1	Wed Jun  6 20:21:43 2012
+++ src/sys/arch/arm/arm/bus_space_a2x.S	Sun Jul 15 20:48:53 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: bus_space_a2x.S,v 1.1 2012/06/06 20:21:43 skrll Exp $	*/
+/*	$NetBSD: bus_space_a2x.S,v 1.2 2012/07/15 20:48:53 matt Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -29,84 +29,134 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
-#include <machine/cpu.h>
+#include <arm/asm.h>
+#include <arm/cpu.h>
+#include <arm/byte_swap.h>
 
-RCSID("$NetBSD: bus_space_a2x.S,v 1.1 2012/06/06 20:21:43 skrll Exp $")
+RCSID("$NetBSD: bus_space_a2x.S,v 1.2 2012/07/15 20:48:53 matt Exp $")
 
 /*
  * bus_space_read_[124](void *cookie, bus_space_handle_t handle,
  *     bus_size_t offset);
  */
 
-ENTRY(a2x_bs_r_1)
+ENTRY_NP(a2x_bs_r_1)
 	ldrb	r0, [r1, r2, lsl #1]
-	mov	pc, lr
+	RET
+END(a2x_bs_r_1)
 
 #if (ARM_ARCH_4 + ARM_ARCH_5 + ARM_ARCH_6 + ARM_ARCH_7) > 0
-ENTRY(a2x_bs_r_2)
+ENTRY_NP(a2x_bs_r_2)
 	lsl	r2, r2, #1
 	ldrh	r0, [r1, r2]
-	mov	pc, lr
+	RET
+END(a2x_bs_r_2)
+
+ENTRY_NP(a2x_bs_r_2_swap)
+	lsl	r2, r2, #1
+	ldrh	r0, [r1, r2]
+	BSWAP16(r0, r0, r1)
+	RET
+END(a2x_bs_r_2_swap)
 #endif
 
-ENTRY(a2x_bs_r_4)
+ENTRY_NP(a2x_bs_r_4)
 	ldr	r0, [r1, r2, lsl #1]
-	mov	pc, lr
+	RET
+END(a2x_bs_r_4)
+
+ENTRY_NP(a2x_bs_r_4_swap)
+	ldr	r0, [r1, r2, lsl #1]
+	BSWAP32(r0, r0, r1)
+	RET
+END(a2x_bs_r_4_swap)
 
 /*
  * bus_space_read_multi_[124](void *cookie, bus_space_handle_t handle,
  *     bus_size_t offset, uint{8,16,32}_t *data, bus_size_t count);
  */
 
-ENTRY(a2x_bs_rm_1)
+ENTRY_NP(a2x_bs_rm_1)
 	lsl	r2, r2, #1
 	b	generic_bs_rm_1
+END(a2x_bs_rm_1)
 
 #if (ARM_ARCH_4 + ARM_ARCH_5 + ARM_ARCH_6 + ARM_ARCH_7) > 0
-ENTRY(a2x_bs_rm_2)
+ENTRY_NP(a2x_bs_rm_2)
 	lsl	r2, r2, #1
 	b	generic_armv4_bs_rm_2
+END(a2x_bs_rm_2)
+
+ENTRY_NP(a2x_bs_rm_2_swap)
+	lsl	r2, r2, #1
+	b	generic_armv4_bs_rm_2_swap
+END(a2x_bs_rm_2_swap)
 #endif
 
-ENTRY(a2x_bs_rm_4)
+ENTRY_NP(a2x_bs_rm_4)
 	lsl	r2, r2, #1
 	b	generic_bs_rm_4
+END(a2x_bs_rm_4)
+
+ENTRY_NP(a2x_bs_rm_4_swap)
+	lsl	r2, r2, #1
+	b	generic_bs_rm_4_swap
+END(a2x_bs_rm_4_swap)
 
 /*
  * bus_space_write_[124](void *cookie, bus_space_handle_t handle,
  *     bus_size_t offset, uint{8,16,32}_t value);
  */
-ENTRY(a2x_bs_w_1)
+ENTRY_NP(a2x_bs_w_1)
 	strb	r3, [r1, r2, lsl #1]
-	mov	pc, lr
+	RET
+END(a2x_bs_w_1)
 
 #if (ARM_ARCH_4 + ARM_ARCH_5 + ARM_ARCH_6 + ARM_ARCH_7) > 0
-ENTRY(a2x_bs_w_2)
+ENTRY_NP(a2x_bs_w_2_swap)
+	BSWAP16(r3, r3, r0)
+ENTRY_NP(a2x_bs_w_2)
 	lsl	r2, r2, #1
 	strh	r3, [r1, r2]
-	mov	pc, lr
+	RET
+END(a2x_bs_w_2)
 #endif
 
-ENTRY(a2x_bs_w_4)
+ENTRY_NP(a2x_bs_w_4_swap)
+	BSWAP32(r3, r3, r0)
+ENTRY_NP(a2x_bs_w_4)
 	str	r3, [r1, r2, lsl #1]
-	mov	pc, lr
+	RET
+END(a2x_bs_w_4)
 
 /*
  * bus_space_write_multi_[124](void *cookie, bus_space_handle_t handle,
  *     bus_size_t offset, uint{8,16,32}_t *data, bus_size_t count);
  */
 
-ENTRY(a2x_bs_wm_1)
+ENTRY_NP(a2x_bs_wm_1)
 	lsl	r2, r2, #1
 	b	generic_bs_wm_1
+END(a2x_bs_wm_1)
 
 #if (ARM_ARCH_4 + ARM_ARCH_5 + ARM_ARCH_6 + ARM_ARCH_7) > 0
-ENTRY(a2x_bs_wm_2)
+ENTRY_NP(a2x_bs_wm_2)
 	lsl	r2, r2, #1
 	b	generic_armv4_bs_wm_2
+END(a2x_bs_wm_2)
+
+ENTRY_NP(a2x_bs_wm_2_swap)
+	lsl	r2, r2, #1
+	b	generic_armv4_bs_wm_2_swap
+END(a2x_bs_wm_2_swap)
 #endif
 
-ENTRY(a2x_bs_wm_4)
+ENTRY_NP(a2x_bs_wm_4)
 	lsl	r2, r2, #1
 	b	generic_bs_wm_4
+END(a2x_bs_wm_1)
+
+ENTRY_NP(a2x_bs_wm_4_swap)
+	lsl	r2, r2, #1
+	b	generic_bs_wm_4_swap
+END(a2x_bs_wm_4_swap)
Index: src/sys/arch/arm/arm/bus_space_a4x.S
diff -u src/sys/arch/arm/arm/bus_space_a4x.S:1.1 src/sys/arch/arm/arm/bus_space_a4x.S:1.2
--- src/sys/arch/arm/arm/bus_space_a4x.S:1.1	Wed Jun  6 20:21:43 2012
+++ src/sys/arch/arm/arm/bus_space_a4x.S	Sun Jul 15 20:48:53 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: bus_space_a4x.S,v 1.1 2012/06/06 20:21:43 skrll Exp $	*/
+/*	$NetBSD: bus_space_a4x.S,v 1.2 2012/07/15 20:48:53 matt Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -29,84 +29,134 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
-#include <machine/cpu.h>
+#include <arm/asm.h>
+#include <arm/cpu.h>
+#include <arm/byte_swap.h>
 
-RCSID("$NetBSD: bus_space_a4x.S,v 1.1 2012/06/06 20:21:43 skrll Exp $")
+RCSID("$NetBSD: bus_space_a4x.S,v 1.2 2012/07/15 20:48:53 matt Exp $")
 
 /*
  * bus_space_read_[124](void *cookie, bus_space_handle_t handle,
  *     bus_size_t offset);
  */
 
-ENTRY(a4x_bs_r_1)
+ENTRY_NP(a4x_bs_r_1)
 	ldrb	r0, [r1, r2, lsl #2]
-	mov	pc, lr
+	RET
+END(a4x_bs_r_1)
 
 #if (ARM_ARCH_4 + ARM_ARCH_5 + ARM_ARCH_6 + ARM_ARCH_7) > 0
-ENTRY(a4x_bs_r_2)
+ENTRY_NP(a4x_bs_r_2)
 	lsl	r2, r2, #2
 	ldrh	r0, [r1, r2]
-	mov	pc, lr
+	RET
+END(a4x_bs_r_2)
+
+ENTRY_NP(a4x_bs_r_2_swap)
+	lsl	r2, r2, #2
+	ldrh	r0, [r1, r2]
+	BSWAP16(r0, r0, r1)
+	RET
+END(a4x_bs_r_2_swap)
 #endif
 
-ENTRY(a4x_bs_r_4)
+ENTRY_NP(a4x_bs_r_4)
 	ldr	r0, [r1, r2, lsl #2]
-	mov	pc, lr
+	RET
+END(a4x_bs_r_4)
+
+ENTRY_NP(a4x_bs_r_4_swap)
+	ldr	r0, [r1, r2, lsl #2]
+	BSWAP32(r0, r0, r1)
+	RET
+END(a4x_bs_r_4_swap)
 
 /*
  * bus_space_read_multi_[124](void *cookie, bus_space_handle_t handle,
  *     bus_size_t offset, uint{8,16,32}_t *data, bus_size_t count);
  */
 
-ENTRY(a4x_bs_rm_1)
+ENTRY_NP(a4x_bs_rm_1)
 	lsl	r2, r2, #2
 	b	generic_bs_rm_1
+END(a4x_bs_rm_1)
 
 #if (ARM_ARCH_4 + ARM_ARCH_5 + ARM_ARCH_6 + ARM_ARCH_7) > 0
-ENTRY(a4x_bs_rm_2)
+ENTRY_NP(a4x_bs_rm_2)
 	lsl	r2, r2, #2
 	b	generic_armv4_bs_rm_2
+END(a4x_bs_rm_2)
+
+ENTRY_NP(a4x_bs_rm_2_swap)
+	lsl	r2, r2, #2
+	b	generic_armv4_bs_rm_2_swap
+END(a4x_bs_rm_2_swap)
 #endif
 
-ENTRY(a4x_bs_rm_4)
+ENTRY_NP(a4x_bs_rm_4)
 	lsl	r2, r2, #2
 	b	generic_bs_rm_4
+END(a4x_bs_rm_4)
+
+ENTRY_NP(a4x_bs_rm_4_swap)
+	lsl	r2, r2, #2
+	b	generic_bs_rm_4_swap
+END(a4x_bs_rm_4_swap)
 
 /*
  * bus_space_write_[124](void *cookie, bus_space_handle_t handle,
  *     bus_size_t offset, uint{8,16,32}_t value);
  */
-ENTRY(a4x_bs_w_1)
+ENTRY_NP(a4x_bs_w_1)
 	strb	r3, [r1, r2, lsl #2]
-	mov	pc, lr
+	RET
+END(a4x_bs_w_1)
 
 #if (ARM_ARCH_4 + ARM_ARCH_5 + ARM_ARCH_6 + ARM_ARCH_7) > 0
-ENTRY(a4x_bs_w_2)
+ENTRY_NP(a4x_bs_w_2_swap)
+	BSWAP16(r3, r3, r0)
+ENTRY_NP(a4x_bs_w_2)
 	lsl	r2, r2, #2
 	strh	r3, [r1, r2]
-	mov	pc, lr
+	RET
+END(a4x_bs_w_2)
 #endif
 
-ENTRY(a4x_bs_w_4)
+ENTRY_NP(a4x_bs_w_4_swap)
+	BSWAP32(r3, r3, r0)
+ENTRY_NP(a4x_bs_w_4)
 	str	r3, [r1, r2, lsl #2]
-	mov	pc, lr
+	RET
+END(a4x_bs_w_4)
 
 /*
  * bus_space_write_multi_[124](void *cookie, bus_space_handle_t handle,
  *     bus_size_t offset, uint{8,16,32}_t *data, bus_size_t count);
  */
 
-ENTRY(a4x_bs_wm_1)
+ENTRY_NP(a4x_bs_wm_1)
 	lsl	r2, r2, #2
 	b	generic_bs_wm_1
+END(a4x_bs_wm_1)
 
 #if (ARM_ARCH_4 + ARM_ARCH_5 + ARM_ARCH_6 + ARM_ARCH_7) > 0
-ENTRY(a4x_bs_wm_2)
+ENTRY_NP(a4x_bs_wm_2)
 	lsl	r2, r2, #2
 	b	generic_armv4_bs_wm_2
+END(a4x_bs_wm_2)
+
+ENTRY_NP(a4x_bs_wm_2_swap)
+	lsl	r2, r2, #2
+	b	generic_armv4_bs_wm_2_swap
+END(a4x_bs_wm_2_swap)
 #endif
 
-ENTRY(a4x_bs_wm_4)
+ENTRY_NP(a4x_bs_wm_4)
 	lsl	r2, r2, #2
 	b	generic_bs_wm_4
+END(a4x_bs_wm_4)
+
+ENTRY_NP(a4x_bs_wm_4_swap)
+	lsl	r2, r2, #2
+	b	generic_bs_wm_4_swap
+END(a4x_bs_wm_4_swap)

Index: src/sys/arch/arm/arm/bus_space_asm_generic.S
diff -u src/sys/arch/arm/arm/bus_space_asm_generic.S:1.6 src/sys/arch/arm/arm/bus_space_asm_generic.S:1.7
--- src/sys/arch/arm/arm/bus_space_asm_generic.S:1.6	Sat Jun 19 19:44:57 2010
+++ src/sys/arch/arm/arm/bus_space_asm_generic.S	Sun Jul 15 20:48:53 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: bus_space_asm_generic.S,v 1.6 2010/06/19 19:44:57 matt Exp $	*/
+/*	$NetBSD: bus_space_asm_generic.S,v 1.7 2012/07/15 20:48:53 matt Exp $	*/
 
 /*
  * Copyright (c) 1997 Causality Limited.
@@ -36,6 +36,7 @@
 
 #include <arm/asm.h>
 #include <arm/cpuconf.h>
+#include <arm/byte_swap.h>
 
 /*
  * Generic bus_space functions.
@@ -45,287 +46,456 @@
  * read single
  */
 
-ENTRY(generic_bs_r_1)
+ENTRY_NP(generic_bs_r_1)
 	ldrb	r0, [r1, r2]
-	mov	pc, lr
+	RET
+END(generic_bs_r_1)
 
 #if (ARM_ARCH_4 + ARM_ARCH_5 + ARM_ARCH_6 + ARM_ARCH_7) > 0
-ENTRY(generic_armv4_bs_r_2)
+ENTRY_NP(generic_armv4_bs_r_2)
 	ldrh	r0, [r1, r2]
-	mov	pc, lr
+	RET
+END(generic_armv4_bs_r_2)
+
+ENTRY_NP(generic_armv4_bs_r_2_swap)
+	ldrh	r0, [r1, r2]
+	BSWAP16(r0, r0, r1)
+	RET
+END(generic_armv4_bs_r_2_swap)
 #endif
 
-ENTRY(generic_bs_r_4)
+ENTRY_NP(generic_bs_r_4)
+	ldr	r0, [r1, r2]
+	RET
+END(generic_bs_r_4)
+
+ENTRY_NP(generic_bs_r_4_swap)
 	ldr	r0, [r1, r2]
-	mov	pc, lr
+	BSWAP32(r0, r0, r1)
+	RET
+END(generic_bs_r_4_swap)
 
 /*
  * write single
  */
 
-ENTRY(generic_bs_w_1)
+ENTRY_NP(generic_bs_w_1)
 	strb	r3, [r1, r2]
-	mov	pc, lr
+	RET
+END(generic_bs_w_1)
 
 #if (ARM_ARCH_4 + ARM_ARCH_5 + ARM_ARCH_6 + ARM_ARCH_7) > 0
-ENTRY(generic_armv4_bs_w_2)
+ENTRY_NP(generic_armv4_bs_w_2_swap)
+	BSWAP16(r3, r3, r0)		/* swap and fallthrough */
+ENTRY_NP(generic_armv4_bs_w_2)
 	strh	r3, [r1, r2]
-	mov	pc, lr
+	RET
+END(generic_armv4_bs_w_2)
 #endif
 
-ENTRY(generic_bs_w_4)
+ENTRY_NP(generic_bs_w_4_swap)
+	BSWAP32(r3, r3, r0)
+ENTRY_NP(generic_bs_w_4)
 	str	r3, [r1, r2]
-	mov	pc, lr
+	RET
+END(generic_bs_w_4)
 
 /*
  * read multiple
  */
 
-ENTRY(generic_bs_rm_1)
+ENTRY_NP(generic_bs_rm_1)
 	add	r0, r1, r2
 	mov	r1, r3
 	ldr	r2, [sp, #0]
 	teq	r2, #0
-	moveq	pc, lr
+	RETc(eq)
 
 1:	ldrb	r3, [r0]
 	strb	r3, [r1], #1
 	subs	r2, r2, #1
 	bne	1b
 
-	mov	pc, lr
+	RET
+END(generic_bs_rm_1)
 
 #if (ARM_ARCH_4 + ARM_ARCH_5 + ARM_ARCH_6 + ARM_ARCH_7) > 0
-ENTRY(generic_armv4_bs_rm_2)
+ENTRY_NP(generic_armv4_bs_rm_2)
 	add	r0, r1, r2
 	mov	r1, r3
 	ldr	r2, [sp, #0]
 	teq	r2, #0
-	moveq	pc, lr
+	RETc(eq)
 
 1:	ldrh	r3, [r0]
 	strh	r3, [r1], #2
 	subs	r2, r2, #1
 	bne	1b
 
-	mov	pc, lr
+	RET
+END(generic_armv4_bs_rm_2)
+
+ENTRY_NP(generic_armv4_bs_rm_2_swap)
+	add	r0, r1, r2
+	mov	r1, r3
+	ldr	r2, [sp, #0]
+	teq	r2, #0
+	RETc(eq)
+
+1:	ldrh	r3, [r0]
+	BSWAP16(r3, r3, ip)
+	strh	r3, [r1], #2
+	subs	r2, r2, #1
+	bne	1b
+
+	RET
+END(generic_armv4_bs_rm_2_swap)
 #endif
 
-ENTRY(generic_bs_rm_4)
+ENTRY_NP(generic_bs_rm_4)
+	add	r0, r1, r2
+	mov	r1, r3
+	ldr	r2, [sp, #0]
+	teq	r2, #0
+	RETc(eq)
+
+1:	ldr	r3, [r0]
+	str	r3, [r1], #4
+	subs	r2, r2, #1
+	bne	1b
+
+	RET
+END(generic_bs_rm_4)
+
+ENTRY_NP(generic_bs_rm_4_swap)
 	add	r0, r1, r2
 	mov	r1, r3
 	ldr	r2, [sp, #0]
 	teq	r2, #0
-	moveq	pc, lr
+	RETc(eq)
 
 1:	ldr	r3, [r0]
+	BSWAP32(r3, r3, ip)
 	str	r3, [r1], #4
 	subs	r2, r2, #1
 	bne	1b
 
-	mov	pc, lr
+	RET
+END(generic_bs_rm_4_swap)
 
 /*
  * write multiple
  */
 
-ENTRY(generic_bs_wm_1)
+ENTRY_NP(generic_bs_wm_1)
 	add	r0, r1, r2
 	mov	r1, r3
 	ldr	r2, [sp, #0]
 	teq	r2, #0
-	moveq	pc, lr
+	RETc(eq)
 
 1:	ldrb	r3, [r1], #1
 	strb	r3, [r0]
 	subs	r2, r2, #1
 	bne	1b
 
-	mov	pc, lr
+	RET
+END(generic_bs_wm_1)
 
 #if (ARM_ARCH_4 + ARM_ARCH_5 + ARM_ARCH_6 + ARM_ARCH_7) > 0
-ENTRY(generic_armv4_bs_wm_2)
+ENTRY_NP(generic_armv4_bs_wm_2)
 	add	r0, r1, r2
 	mov	r1, r3
 	ldr	r2, [sp, #0]
 	teq	r2, #0
-	moveq	pc, lr
+	RETc(eq)
 
 1:	ldrh	r3, [r1], #2
 	strh	r3, [r0]
 	subs	r2, r2, #1
 	bne	1b
 
-	mov	pc, lr
+	RET
+END(generic_armv4_bs_wm_2)
+
+ENTRY_NP(generic_armv4_bs_wm_2_swap)
+	add	r0, r1, r2
+	mov	r1, r3
+	ldr	r2, [sp, #0]
+	teq	r2, #0
+	RETc(eq)
+
+1:	ldrh	r3, [r1], #2
+	BSWAP16(r3, r3, ip)
+	strh	r3, [r0]
+	subs	r2, r2, #1
+	bne	1b
+
+	RET
+END(generic_armv4_bs_wm_2_swap)
 #endif
 
-ENTRY(generic_bs_wm_4)
+ENTRY_NP(generic_bs_wm_4)
+	add	r0, r1, r2
+	mov	r1, r3
+	ldr	r2, [sp, #0]
+	teq	r2, #0
+	RETc(eq)
+
+1:	ldr	r3, [r1], #4
+	str	r3, [r0]
+	subs	r2, r2, #1
+	bne	1b
+
+	RET
+END(generic_bs_wm_4)
+
+ENTRY_NP(generic_bs_wm_4_swap)
 	add	r0, r1, r2
 	mov	r1, r3
 	ldr	r2, [sp, #0]
 	teq	r2, #0
-	moveq	pc, lr
+	RETc(eq)
 
 1:	ldr	r3, [r1], #4
+	BSWAP32(r3, r3, ip)
 	str	r3, [r0]
 	subs	r2, r2, #1
 	bne	1b
 
-	mov	pc, lr
+	RET
+END(generic_bs_wm_4_swap)
 
 /*
  * read region
  */
 
-ENTRY(generic_bs_rr_1)
+ENTRY_NP(generic_bs_rr_1)
 	add	r0, r1, r2
 	mov	r1, r3
 	ldr	r2, [sp, #0]
 	teq	r2, #0
-	moveq	pc, lr
+	RETc(eq)
 
 1:	ldrb	r3, [r0], #1
 	strb	r3, [r1], #1
 	subs	r2, r2, #1
 	bne	1b
 
-	mov	pc, lr
+	RET
+END(generic_bs_rr_1)
 
 #if (ARM_ARCH_4 + ARM_ARCH_5 + ARM_ARCH_6 + ARM_ARCH_7) > 0
-ENTRY(generic_armv4_bs_rr_2)
+ENTRY_NP(generic_armv4_bs_rr_2)
 	add	r0, r1, r2
 	mov	r1, r3
 	ldr	r2, [sp, #0]
 	teq	r2, #0
-	moveq	pc, lr
+	RETc(eq)
 
 1:	ldrh	r3, [r0], #2
 	strh	r3, [r1], #2
 	subs	r2, r2, #1
 	bne	1b
 
-	mov	pc, lr
+	RET
+END(generic_armv4_bs_rr_2)
+
+ENTRY_NP(generic_armv4_bs_rr_2_swap)
+	add	r0, r1, r2
+	mov	r1, r3
+	ldr	r2, [sp, #0]
+	teq	r2, #0
+	RETc(eq)
+
+1:	ldrh	r3, [r0], #2
+	BSWAP16(r3, r3, ip)
+	strh	r3, [r1], #2
+	subs	r2, r2, #1
+	bne	1b
+
+	RET
+END(generic_armv4_bs_rr_2_swap)
 #endif
 
-ENTRY(generic_bs_rr_4)
+ENTRY_NP(generic_bs_rr_4)
+	add	r0, r1, r2
+	mov	r1, r3
+	ldr	r2, [sp, #0]
+	teq	r2, #0
+	RETc(eq)
+
+1:	ldr	r3, [r0], #4
+	str	r3, [r1], #4
+	subs	r2, r2, #1
+	bne	1b
+
+	RET
+END(generic_bs_rr_4)
+
+ENTRY_NP(generic_bs_rr_4_swap)
 	add	r0, r1, r2
 	mov	r1, r3
 	ldr	r2, [sp, #0]
 	teq	r2, #0
-	moveq	pc, lr
+	RETc(eq)
 
 1:	ldr	r3, [r0], #4
+	BSWAP32(r3, r3, ip)
 	str	r3, [r1], #4
 	subs	r2, r2, #1
 	bne	1b
 
-	mov	pc, lr
+	RET
+END(generic_bs_rr_4_swap)
 
 /*
  * write region.
  */
 
-ENTRY(generic_bs_wr_1)
+ENTRY_NP(generic_bs_wr_1)
 	add	r0, r1, r2
 	mov	r1, r3
 	ldr	r2, [sp, #0]
 	teq	r2, #0
-	moveq	pc, lr
+	RETc(eq)
 
 1:	ldrb	r3, [r1], #1
 	strb	r3, [r0], #1
 	subs	r2, r2, #1
 	bne	1b
 
-	mov	pc, lr
+	RET
+END(generic_bs_wr_1)
 
 #if (ARM_ARCH_4 + ARM_ARCH_5 + ARM_ARCH_6 + ARM_ARCH_7) > 0
-ENTRY(generic_armv4_bs_wr_2)
+ENTRY_NP(generic_armv4_bs_wr_2)
+	add	r0, r1, r2
+	mov	r1, r3
+	ldr	r2, [sp, #0]
+	teq	r2, #0
+	RETc(eq)
+
+1:	ldrh	r3, [r1], #2
+	strh	r3, [r0], #2
+	subs	r2, r2, #1
+	bne	1b
+
+	RET
+END(generic_armv4_bs_wr_2)
+
+ENTRY_NP(generic_armv4_bs_wr_2_swap)
 	add	r0, r1, r2
 	mov	r1, r3
 	ldr	r2, [sp, #0]
 	teq	r2, #0
-	moveq	pc, lr
+	RETc(eq)
 
 1:	ldrh	r3, [r1], #2
+	BSWAP16(r3, r3, ip)
 	strh	r3, [r0], #2
 	subs	r2, r2, #1
 	bne	1b
 
-	mov	pc, lr
+	RET
+END(generic_armv4_bs_wr_2_swap)
 #endif
 
-ENTRY(generic_bs_wr_4)
+ENTRY_NP(generic_bs_wr_4)
+	add	r0, r1, r2
+	mov	r1, r3
+	ldr	r2, [sp, #0]
+	teq	r2, #0
+	RETc(eq)
+
+1:	ldr	r3, [r1], #4
+	str	r3, [r0], #4
+	subs	r2, r2, #1
+	bne	1b
+
+	RET
+END(generic_bs_wr_4)
+
+ENTRY_NP(generic_bs_wr_4_swap)
 	add	r0, r1, r2
 	mov	r1, r3
 	ldr	r2, [sp, #0]
 	teq	r2, #0
-	moveq	pc, lr
+	RETc(eq)
 
 1:	ldr	r3, [r1], #4
+	BSWAP32(r3, r3, ip)
 	str	r3, [r0], #4
 	subs	r2, r2, #1
 	bne	1b
 
-	mov	pc, lr
+	RET
+END(generic_bs_wr_4_swap)
 
 /*
  * set region
  */
 
-ENTRY(generic_bs_sr_1)
+ENTRY_NP(generic_bs_sr_1)
 	add	r0, r1, r2
 	mov	r1, r3
 	ldr	r2, [sp, #0]
 	teq	r2, #0
-	moveq	pc, lr
+	RETc(eq)
 
 1:	strb	r1, [r0], #1
 	subs	r2, r2, #1
 	bne	1b
 
-	mov	pc, lr
+	RET
+END(generic_bs_sr_1)
 
 #if (ARM_ARCH_4 + ARM_ARCH_5 + ARM_ARCH_6 + ARM_ARCH_7) > 0
-ENTRY(generic_armv4_bs_sr_2)
+ENTRY_NP(generic_armv4_bs_sr_2_swap)
+	BSWAP16(r3, r3, r0)	/* swap and fallthrough */
+ENTRY_NP(generic_armv4_bs_sr_2)
 	add	r0, r1, r2
 	mov	r1, r3
 	ldr	r2, [sp, #0]
 	teq	r2, #0
-	moveq	pc, lr
+	RETc(eq)
 
 1:	strh	r1, [r0], #2
 	subs	r2, r2, #1
 	bne	1b
 
-	mov	pc, lr
+	RET
+END(generic_armv4_bs_sr_2)
 #endif
 
-ENTRY(generic_bs_sr_4)
+ENTRY_NP(generic_bs_sr_4_swap)
+	BSWAP32(r3, r3, r0)	/* swap and fallthrough */
+ENTRY_NP(generic_bs_sr_4)
 	add	r0, r1, r2
 	mov	r1, r3
 	ldr	r2, [sp, #0]
 	teq	r2, #0
-	moveq	pc, lr
+	RETc(eq)
 
 1:	str	r1, [r0], #4
 	subs	r2, r2, #1
 	bne	1b
 
-	mov	pc, lr
+	RET
+END(generic_bs_sr_4)
 
 /*
  * copy region
  */
 
 #if (ARM_ARCH_4 + ARM_ARCH_5 + ARM_ARCH_6 + ARM_ARCH_7) > 0
-ENTRY(generic_armv4_bs_c_2)
+ENTRY_NP(generic_armv4_bs_c_2)
 	add	r0, r1, r2
 	ldr	r2, [sp, #0]
 	add	r1, r2, r3
 	ldr	r2, [sp, #4]
 	teq	r2, #0
-	moveq	pc, lr
+	RETc(eq)
 
 	cmp	r0, r1
 	blt	2f
@@ -335,7 +505,7 @@ ENTRY(generic_armv4_bs_c_2)
 	subs	r2, r2, #1
 	bne	1b
 
-	mov	pc, lr
+	RET
 
 2:	add	r0, r0, r2, lsl #1
 	add	r1, r1, r2, lsl #1
@@ -347,5 +517,6 @@ ENTRY(generic_armv4_bs_c_2)
 	subs	r2, r2, #1
 	bne	3b
 
-	mov	pc, lr
+	RET
+END(generic_armv4_bs_c_2)
 #endif

Reply via email to