diff options
author | Rob Herring <robh@kernel.org> | 2015-10-22 09:22:09 -0500 |
---|---|---|
committer | Rob Herring <robh@kernel.org> | 2015-10-22 09:22:09 -0500 |
commit | f92ce7618f0cb0ced87ea1cfe994d2e8473c61b4 (patch) | |
tree | 8589e85799e0de7b1cdf0b4e8f08397eeeb72a74 /arch/x86/kernel/paravirt.c | |
parent | 307751ee3212df0d047b0e1a93ce21f2e511d1a1 (diff) | |
parent | eb3fcf007fffe5830d815e713591f3e858f2a365 (diff) |
Merge branch 'dt-doc-cleanup' into for-next
Diffstat (limited to 'arch/x86/kernel/paravirt.c')
-rw-r--r-- | arch/x86/kernel/paravirt.c | 16 |
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) |