Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/arm/cortex Deal with writing bswapped com registers...
details: https://anonhg.NetBSD.org/src/rev/904d07cb8f68
branches: trunk
changeset: 326276:904d07cb8f68
user: matt <matt%NetBSD.org@localhost>
date: Fri Jan 24 05:14:11 2014 +0000
description:
Deal with writing bswapped com registers at COM_MULT register widths.
diffstat:
sys/arch/arm/cortex/a9_mpsubr.S | 41 ++++++++++++++++++++++++++++++++++++++---
1 files changed, 38 insertions(+), 3 deletions(-)
diffs (63 lines):
diff -r f14f71d455ff -r 904d07cb8f68 sys/arch/arm/cortex/a9_mpsubr.S
--- a/sys/arch/arm/cortex/a9_mpsubr.S Fri Jan 24 05:13:06 2014 +0000
+++ b/sys/arch/arm/cortex/a9_mpsubr.S Fri Jan 24 05:14:11 2014 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: a9_mpsubr.S,v 1.11 2013/12/26 00:19:07 joerg Exp $ */
+/* $NetBSD: a9_mpsubr.S,v 1.12 2014/01/24 05:14:11 matt Exp $ */
/*-
* Copyright (c) 2012 The NetBSD Foundation, Inc.
* All rights reserved.
@@ -227,16 +227,51 @@
mov r2, #TIMO
ldr r3, .Luart0
-1: ldrb r1, [r3, #(COM_LSR*COM_MULT)]
+1:
+#if COM_MULT == 1
+ ldrb r1, [r3, #(COM_LSR*COM_MULT)]
+#else
+#if COM_MULT == 2
+ ldrh r1, [r3, #(COM_LSR*COM_MULT)]
+#elif COM_MULT == 4
+ ldr r1, [r3, #(COM_LSR*COM_MULT)]
+#endif
+#ifdef COM_BSWAP
+ lsr r1, r1, #(COM_MULT-1)*8
+#endif
+#endif
tst r1, #LSR_TXRDY
bne 2f
subs r2, r2, #1
bne 1b
2:
+#if COM_MULT == 1
strb r0, [r3, #COM_DATA]
+#else
+#ifdef COM_BSWAP
+ lsl r0, r0, #(COM_MULT-1)*8
+#endif
+#if COM_MULT == 2
+ strh r0, [r3, #COM_DATA]
+#else
+ str r0, [r3, #COM_DATA]
+#endif
+#endif
mov r2, #TIMO
-3: ldrb r1, [r3, #(COM_LSR*COM_MULT)]
+3:
+#if COM_MULT == 1
+ ldrb r1, [r3, #(COM_LSR*COM_MULT)]
+#else
+#if COM_MULT == 2
+ ldrh r1, [r3, #(COM_LSR*COM_MULT)]
+#elif COM_MULT == 4
+ ldr r1, [r3, #(COM_LSR*COM_MULT)]
+#endif
+#ifdef COM_BSWAP
+ lsr r1, r1, #(COM_MULT-1)*8
+#endif
+#endif
tst r1, #LSR_TSRE
bne 4f
subs r2, r2, #1
Home |
Main Index |
Thread Index |
Old Index