mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 11:03:43 +02:00
x86/entry_32: Convert X86_INVD_BUG to ALTERNATIVE macro
Booting a 486 kernel on an AMD guest with this patch applied, says:
apply_alternatives: feat: 0*32+25, old: (c160a475, len: 5), repl: (c19557d4, len: 5)
c160a475: alt_insn: 68 10 35 00 c1
c19557d4: rpl_insn: 68 80 39 00 c1
which is:
old insn VA: 0xc160a475, CPU feat: X86_FEATURE_XMM, size: 5
simd_coprocessor_error:
c160a475: 68 10 35 00 c1 push $0xc1003510 <do_general_protection>
repl insn: 0xc19557d4, size: 5
c160a475: 68 80 39 00 c1 push $0xc1003980 <do_simd_coprocessor_error>
Signed-off-by: Borislav Petkov <bp@suse.de>
This commit is contained in:
parent
669f8a9001
commit
8e65f6e03a
|
|
@ -816,15 +816,9 @@ ENTRY(simd_coprocessor_error)
|
|||
pushl_cfi $0
|
||||
#ifdef CONFIG_X86_INVD_BUG
|
||||
/* AMD 486 bug: invd from userspace calls exception 19 instead of #GP */
|
||||
661: pushl_cfi $do_general_protection
|
||||
662:
|
||||
.section .altinstructions,"a"
|
||||
altinstruction_entry 661b, 663f, X86_FEATURE_XMM, 662b-661b, 664f-663f, 0
|
||||
.previous
|
||||
.section .altinstr_replacement,"ax"
|
||||
663: pushl $do_simd_coprocessor_error
|
||||
664:
|
||||
.previous
|
||||
ALTERNATIVE "pushl_cfi $do_general_protection", \
|
||||
"pushl $do_simd_coprocessor_error", \
|
||||
X86_FEATURE_XMM
|
||||
#else
|
||||
pushl_cfi $do_simd_coprocessor_error
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user