Module Name: src
Committed By: matt
Date: Sun Aug 11 04:40:06 UTC 2013
Modified Files:
src/sys/arch/arm/arm: lock_cas.S
Log Message:
unified syntax, make it play nice with thumb
To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/arm/lock_cas.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/arm/lock_cas.S
diff -u src/sys/arch/arm/arm/lock_cas.S:1.9 src/sys/arch/arm/arm/lock_cas.S:1.10
--- src/sys/arch/arm/arm/lock_cas.S:1.9 Fri Aug 31 23:42:34 2012
+++ src/sys/arch/arm/arm/lock_cas.S Sun Aug 11 04:40:05 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: lock_cas.S,v 1.9 2012/08/31 23:42:34 matt Exp $ */
+/* $NetBSD: lock_cas.S,v 1.10 2013/08/11 04:40:05 matt Exp $ */
/*-
* Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -108,8 +108,8 @@ STRONG_ALIAS(atomic_cas_ptr_ni,_lock_cas
#endif /* !_ARM_ARCH_6 */
#ifdef __PROG32
-#define SAVE_REGS stmfd sp!, {r4-r5}
-#define RESTORE_REGS ldmfd sp!, {r4-r5}
+#define SAVE_REGS push {r4-r5}
+#define RESTORE_REGS pop {r4-r5}
#else
/* Need to save R14_svc because it'll get trampled if we take a page fault. */
#define SAVE_REGS stmfd sp!, {r4-r6, r14}
@@ -126,32 +126,29 @@ ENTRY(ucas_32)
str r5, [r4, #PCB_ONFAULT]
.globl _C_LABEL(ucas_32_ras_start)
+ mov ip, r0
_C_LABEL(ucas_32_ras_start):
-#ifdef MULTIPROCESSOR
-1: ldrex r5, [r0] /* we should have access */
+#if defined(MULTIPROCESSOR) || defined(_ARM_ARCH_6)
+1: ldrex r5, [ip] /* we should have access */
cmp r1, r5
bne 2f
- strex ip, r2, [r0]
- cmp ip, #0
+ strex r0, r2, [ip]
+ cmp r0, #0
bne 1b
2:
#else
- ldrt r5, [r0]
+ ldrt r5, [ip]
cmp r1, r5
- streqt r2, [r0]
+ strteq r2, [ip]
+ mov r0, #0
#endif
.globl _C_LABEL(ucas_32_ras_end)
_C_LABEL(ucas_32_ras_end):
str r5, [r3]
- mov r0, #0
- str r0, [r4, #PCB_ONFAULT]
- RESTORE_REGS
- RET
-
.Lucasfault:
- mov r5, #0
- str r5, [r4, #PCB_ONFAULT]
+ movs r3, #0
+ str r3, [r4, #PCB_ONFAULT]
RESTORE_REGS
RET
END(ucas_32)