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 Fix non-EABI loading of argu...



details:   https://anonhg.NetBSD.org/src/rev/d1d9c3786e5a
branches:  trunk
changeset: 794033:d1d9c3786e5a
user:      matt <matt%NetBSD.org@localhost>
date:      Tue Mar 04 03:50:37 2014 +0000

description:
Fix non-EABI loading of argument.  Deal with endian issues.
Fixes PR/48635

diffstat:

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

diffs (25 lines):

diff -r fd8b02e65a45 -r d1d9c3786e5a common/lib/libc/arch/arm/atomic/atomic_cas_64.S
--- a/common/lib/libc/arch/arm/atomic/atomic_cas_64.S   Tue Mar 04 03:49:07 2014 +0000
+++ b/common/lib/libc/arch/arm/atomic/atomic_cas_64.S   Tue Mar 04 03:50:37 2014 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: atomic_cas_64.S,v 1.6 2014/03/04 03:34:22 matt Exp $   */
+/*     $NetBSD: atomic_cas_64.S,v 1.7 2014/03/04 03:50:37 matt Exp $   */
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -40,9 +40,13 @@
        mov     ip, r0                  /* we need r0 for return value */
 #ifdef __ARM_EABI__
        ldrd    r4, r5, [sp, #16]       /* fetch new value */
+#elif __ARMEB__
+       ldr     r5, [sp, #16]           /* fetch new value */
+       ldr     r4, [sp, #20]           /* fetch new value */
 #else
-       ldr     r4, [sp, #0]            /* fetch new value */
-       ldr     r5, [sp, #4]            /* fetch new value */
+       ldr     r4, [sp, #16]           /* fetch new value */
+       ldr     r5, [sp, #20]           /* fetch new value */
+#endif
        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