Module Name: src Committed By: matt Date: Fri Jan 24 05:14:11 UTC 2014
Modified Files: src/sys/arch/arm/cortex: a9_mpsubr.S Log Message: Deal with writing bswapped com registers at COM_MULT register widths. To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/cortex/a9_mpsubr.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/cortex/a9_mpsubr.S diff -u src/sys/arch/arm/cortex/a9_mpsubr.S:1.11 src/sys/arch/arm/cortex/a9_mpsubr.S:1.12 --- src/sys/arch/arm/cortex/a9_mpsubr.S:1.11 Thu Dec 26 00:19:07 2013 +++ src/sys/arch/arm/cortex/a9_mpsubr.S Fri Jan 24 05:14:11 2014 @@ -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 @@ xputc: 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