Module Name: src
Committed By: matt
Date: Tue Mar 4 03:50:37 UTC 2014
Modified Files:
src/common/lib/libc/arch/arm/atomic: atomic_cas_64.S
Log Message:
Fix non-EABI loading of argument. Deal with endian issues.
Fixes PR/48635
To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S
diff -u src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S:1.6 src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S:1.7
--- src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S:1.6 Tue Mar 4 03:34:22 2014
+++ src/common/lib/libc/arch/arm/atomic/atomic_cas_64.S Tue Mar 4 03:50:37 2014
@@ -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 @@ ENTRY_NP(_atomic_cas_64)
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