This reverts commit 77f48ec28e4ccff94d2e5f4260a83ac27a7f3099.

The in-kernel workarounds will be replaced with GCC's new
"asm inline" syntax.

Signed-off-by: Masahiro Yamada <[email protected]>
---

I blindly reverted here, but I will clean it up
in a different way later.

 arch/x86/include/asm/alternative-asm.h | 20 ++++++--------------
 arch/x86/include/asm/alternative.h     | 11 +++++++++--
 arch/x86/kernel/macros.S               |  1 -
 3 files changed, 15 insertions(+), 17 deletions(-)

diff --git a/arch/x86/include/asm/alternative-asm.h 
b/arch/x86/include/asm/alternative-asm.h
index 8e4ea39..31b627b 100644
--- a/arch/x86/include/asm/alternative-asm.h
+++ b/arch/x86/include/asm/alternative-asm.h
@@ -7,24 +7,16 @@
 #include <asm/asm.h>
 
 #ifdef CONFIG_SMP
-.macro LOCK_PREFIX_HERE
+       .macro LOCK_PREFIX
+672:   lock
        .pushsection .smp_locks,"a"
        .balign 4
-       .long 671f - .          # offset
+       .long 672b - .
        .popsection
-671:
-.endm
-
-.macro LOCK_PREFIX insn:vararg
-       LOCK_PREFIX_HERE
-       lock \insn
-.endm
+       .endm
 #else
-.macro LOCK_PREFIX_HERE
-.endm
-
-.macro LOCK_PREFIX insn:vararg
-.endm
+       .macro LOCK_PREFIX
+       .endm
 #endif
 
 /*
diff --git a/arch/x86/include/asm/alternative.h 
b/arch/x86/include/asm/alternative.h
index d7faa16..4cd6a3b 100644
--- a/arch/x86/include/asm/alternative.h
+++ b/arch/x86/include/asm/alternative.h
@@ -31,8 +31,15 @@
  */
 
 #ifdef CONFIG_SMP
-#define LOCK_PREFIX_HERE "LOCK_PREFIX_HERE\n\t"
-#define LOCK_PREFIX "LOCK_PREFIX "
+#define LOCK_PREFIX_HERE \
+               ".pushsection .smp_locks,\"a\"\n"       \
+               ".balign 4\n"                           \
+               ".long 671f - .\n" /* offset */         \
+               ".popsection\n"                         \
+               "671:"
+
+#define LOCK_PREFIX LOCK_PREFIX_HERE "\n\tlock; "
+
 #else /* ! CONFIG_SMP */
 #define LOCK_PREFIX_HERE ""
 #define LOCK_PREFIX ""
diff --git a/arch/x86/kernel/macros.S b/arch/x86/kernel/macros.S
index 852487a..f1fe1d5 100644
--- a/arch/x86/kernel/macros.S
+++ b/arch/x86/kernel/macros.S
@@ -8,4 +8,3 @@
 
 #include <linux/compiler.h>
 #include <asm/refcount.h>
-#include <asm/alternative-asm.h>
-- 
2.7.4

Reply via email to