summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormark <mark@NetBSD.org>1998-03-09 19:11:30 +0000
committermark <mark@NetBSD.org>1998-03-09 19:11:30 +0000
commitc2efbb1d9a1dae4796bf83401bd953e4febca016 (patch)
tree50289592a6a13644660075171f9bb7ec7375ebfe
parentb34c2c6ed246b369e6b03917d984370431e7cc81 (diff)
Implement the bus_space_write_multi_1() function for the podulebus
(podulebus_wm_1()).
-rw-r--r--sys/arch/arm32/podulebus/podulebus_io.c4
-rw-r--r--sys/arch/arm32/podulebus/podulebus_io_asm.S18
2 files changed, 19 insertions, 3 deletions
diff --git a/sys/arch/arm32/podulebus/podulebus_io.c b/sys/arch/arm32/podulebus/podulebus_io.c
index 36d7a51d4a3..9ef3e83b493 100644
--- a/sys/arch/arm32/podulebus/podulebus_io.c
+++ b/sys/arch/arm32/podulebus/podulebus_io.c
@@ -1,4 +1,4 @@
-/* $NetBSD: podulebus_io.c,v 1.4 1997/10/14 23:52:46 mark Exp $ */
+/* $NetBSD: podulebus_io.c,v 1.5 1998/03/09 19:11:30 mark Exp $ */
/*
* Copyright (c) 1997 Mark Brinicombe.
@@ -88,7 +88,7 @@ struct bus_space podulebus_bs_tag = {
bs_notimpl_w_8,
/* write multiple */
- bs_notimpl_wm_1,
+ podulebus_wm_1,
podulebus_wm_2,
bs_notimpl_wm_4,
bs_notimpl_wm_8,
diff --git a/sys/arch/arm32/podulebus/podulebus_io_asm.S b/sys/arch/arm32/podulebus/podulebus_io_asm.S
index b55f56ccd19..3046a39c715 100644
--- a/sys/arch/arm32/podulebus/podulebus_io_asm.S
+++ b/sys/arch/arm32/podulebus/podulebus_io_asm.S
@@ -1,4 +1,4 @@
-/* $NetBSD: podulebus_io_asm.S,v 1.5 1997/10/17 06:46:29 mark Exp $ */
+/* $NetBSD: podulebus_io_asm.S,v 1.6 1998/03/09 19:11:30 mark Exp $ */
/*
* Copyright (c) 1997 Mark Brinicombe.
@@ -94,6 +94,22 @@ ENTRY(podulebus_rm_2)
* write multiple
*/
+ENTRY(podulebus_wm_1)
+ add r0, r1, r2, lsl r0
+ ldr r2, [sp, #0]
+
+ /* Make sure that we have a positive length */
+ cmp r2, #0x00000000
+ movle pc, lr
+
+podulebus_wm_1_loop:
+ ldrb r1, [r3], #0x0001
+ strb r1, [r0]
+ subs r2, r2, #0x00000001
+ bgt podulebus_wm_1_loop
+
+ mov pc, lr
+
ENTRY(podulebus_wm_2)
add r0, r1, r2, lsl r0
mov r1, r3