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