x86: fix percpu_write with 64-bit constants
Brian Gerst [Wed, 21 Jan 2009 08:26:05 +0000 (17:26 +0900)]
Impact: slightly better code generation for percpu_to_op()

The processor will sign-extend 32-bit immediate values in 64-bit
operations.  Use the 'e' constraint ("32-bit signed integer constant,
or a symbolic reference known to fit that range") for 64-bit constants.

Signed-off-by: Brian Gerst <brgerst@gmail.com>
Signed-off-by: Tejun Heo <tj@kernel.org>

arch/x86/include/asm/percpu.h

index ce980db..0b64af4 100644 (file)
@@ -75,7 +75,7 @@ do {                                                  \
        case 8:                                         \
                asm(op "q %1,"__percpu_arg(0)           \
                    : "+m" (var)                        \
-                   : "r" ((T__)val));                  \
+                   : "re" ((T__)val));                 \
                break;                                  \
        default: __bad_percpu_size();                   \
        }                                               \