diff options
author | Nicolas Pitre <nico@cam.org> | 2006-02-08 21:19:37 +0000 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2006-02-08 21:19:37 +0000 |
commit | 5964eae835c3b98c69d338950651f7f414f96477 (patch) | |
tree | c4ea7c8a3447dc7f41d6cce5b6dc96000e7dc159 /arch/arm/kernel/entry-armv.S | |
parent | 49bca4c2815feafd5f999bf43baf87e0dd8d1d08 (diff) | |
download | blackbird-op-linux-5964eae835c3b98c69d338950651f7f414f96477.tar.gz blackbird-op-linux-5964eae835c3b98c69d338950651f7f414f96477.zip |
[ARM] 3310/1: add a comment about the possible __kuser_cmpxchg transient false
negative
Patch from Nicolas Pitre
The pre ARMv5 implementation can be aborted if an exception occurs in
the middle of it. Because of that, the ARMv6 implementation doesn't
re-attempt the operation on a failed strex either. Let's make this
transient nature of such a false positive more explicit in the
definition.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/kernel/entry-armv.S')
-rw-r--r-- | arch/arm/kernel/entry-armv.S | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index f248bbfe745f..964cd717506b 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S @@ -709,7 +709,12 @@ __kuser_memory_barrier: @ 0xffff0fa0 * The C flag is also set if *ptr was changed to allow for assembly * optimization in the calling code. * - * Note: this routine already includes memory barriers as needed. + * Notes: + * + * - This routine already includes memory barriers as needed. + * + * - A failure might be transient, i.e. it is possible, although unlikely, + * that "failure" be returned even if *ptr == oldval. * * For example, a user space atomic_add implementation could look like this: * |