summaryrefslogtreecommitdiff
path: root/arch/x86/kernel/paravirt.c
diff options
context:
space:
mode:
authorRob Herring <robh@kernel.org>2015-10-22 09:22:09 -0500
committerRob Herring <robh@kernel.org>2015-10-22 09:22:09 -0500
commitf92ce7618f0cb0ced87ea1cfe994d2e8473c61b4 (patch)
tree8589e85799e0de7b1cdf0b4e8f08397eeeb72a74 /arch/x86/kernel/paravirt.c
parent307751ee3212df0d047b0e1a93ce21f2e511d1a1 (diff)
parenteb3fcf007fffe5830d815e713591f3e858f2a365 (diff)
Merge branch 'dt-doc-cleanup' into for-next
Diffstat (limited to 'arch/x86/kernel/paravirt.c')
-rw-r--r--arch/x86/kernel/paravirt.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c
index f68e48f5f6c2..c2130aef3f9d 100644
--- a/arch/x86/kernel/paravirt.c
+++ b/arch/x86/kernel/paravirt.c
@@ -41,10 +41,18 @@
#include <asm/timer.h>
#include <asm/special_insns.h>
-/* nop stub */
-void _paravirt_nop(void)
-{
-}
+/*
+ * nop stub, which must not clobber anything *including the stack* to
+ * avoid confusing the entry prologues.
+ */
+extern void _paravirt_nop(void);
+asm (".pushsection .entry.text, \"ax\"\n"
+ ".global _paravirt_nop\n"
+ "_paravirt_nop:\n\t"
+ "ret\n\t"
+ ".size _paravirt_nop, . - _paravirt_nop\n\t"
+ ".type _paravirt_nop, @function\n\t"
+ ".popsection");
/* identity function, which can be inlined */
u32 _paravirt_ident_32(u32 x)