Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/common/lib/libc/arch/arm/atomic apcs-gnu only passes one reg...



details:   https://anonhg.NetBSD.org/src/rev/ae434fab39cf
branches:  trunk
changeset: 327354:ae434fab39cf
user:      matt <matt%NetBSD.org@localhost>
date:      Wed Mar 05 17:20:48 2014 +0000

description:
apcs-gnu only passes one register on the stack.
ldrd always loads little endian (low address, low register).

diffstat:

 common/lib/libc/arch/arm/atomic/atomic_cas_64.S |  11 +++--------
 1 files changed, 3 insertions(+), 8 deletions(-)

diffs (25 lines):

diff -r 9731f559495a -r ae434fab39cf common/lib/libc/arch/arm/atomic/atomic_cas_64.S
--- a/common/lib/libc/arch/arm/atomic/atomic_cas_64.S   Wed Mar 05 16:33:33 2014 +0000
+++ b/common/lib/libc/arch/arm/atomic/atomic_cas_64.S   Wed Mar 05 17:20:48 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: atomic_cas_64.S,v 1.9 2014/03/04 16:15:28 matt Exp $   */
+/*     $NetBSD: atomic_cas_64.S,v 1.10 2014/03/05 17:20:48 matt Exp $  */
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -41,13 +41,8 @@
 #ifdef __ARM_EABI__
        ldrd    r4, r5, [sp, #16]       /* fetch new value */
 #else
-#if __ARMEB__
-       ldr     r5, [sp, #16]           /* fetch new value */
-       ldr     r4, [sp, #20]           /* fetch new value */
-#else
-       ldr     r4, [sp, #16]           /* fetch new value */
-       ldr     r5, [sp, #20]           /* fetch new value */
-#endif
+       ldr     r5, [sp, #16]           /* second word third argument */
+       mov     r4, r3                  /* first word third argument */
        mov     r3, r2                  /* r2 will be overwritten by r1 which ... */
        mov     r2, r1                  /* r1 will be overwritten by ldrexd */
 #endif



Home | Main Index | Thread Index | Old Index