diff options
author | Dominik Brodowski <linux@dominikbrodowski.net> | 2018-02-20 16:01:12 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2018-02-21 10:54:05 -0500 |
commit | b2855d8d2de0fa15c1ff30c69ed7756b00c48b22 (patch) | |
tree | 30d9adb642ba519bb162c3a1387c926d4ebf9746 | |
parent | 3aa99fc3e708b9cd9b4cfe2df0b7a66cf293e3cf (diff) |
x86/entry/64: Move ASM_CLAC to interrupt_entry()
Moving ASM_CLAC to interrupt_entry means two instructions (addq / pushq
and call interrupt_entry) are not covered by it. However, it offers a
noticeable size reduction (-.2k):
text data bss dec hex filename
16882 0 0 16882 41f2 entry_64.o-orig
16623 0 0 16623 40ef entry_64.o
Suggested-by: Brian Gerst <brgerst@gmail.com>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: David Woodhouse <dwmw2@infradead.org>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: dan.j.williams@intel.com
Link: http://lkml.kernel.org/r/20180220210113.6725-6-linux@dominikbrodowski.net
Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r-- | arch/x86/entry/entry_64.S | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S index 8ea03cf94a2d..42a4b652469d 100644 --- a/arch/x86/entry/entry_64.S +++ b/arch/x86/entry/entry_64.S | |||
@@ -572,6 +572,7 @@ END(irq_entries_start) | |||
572 | /* 8(%rsp): ~(interrupt number) */ | 572 | /* 8(%rsp): ~(interrupt number) */ |
573 | ENTRY(interrupt_entry) | 573 | ENTRY(interrupt_entry) |
574 | UNWIND_HINT_FUNC | 574 | UNWIND_HINT_FUNC |
575 | ASM_CLAC | ||
575 | cld | 576 | cld |
576 | 577 | ||
577 | testb $3, CS-ORIG_RAX+8(%rsp) | 578 | testb $3, CS-ORIG_RAX+8(%rsp) |
@@ -614,7 +615,6 @@ END(interrupt_entry) | |||
614 | */ | 615 | */ |
615 | .p2align CONFIG_X86_L1_CACHE_SHIFT | 616 | .p2align CONFIG_X86_L1_CACHE_SHIFT |
616 | common_interrupt: | 617 | common_interrupt: |
617 | ASM_CLAC | ||
618 | addq $-0x80, (%rsp) /* Adjust vector to [-256, -1] range */ | 618 | addq $-0x80, (%rsp) /* Adjust vector to [-256, -1] range */ |
619 | call interrupt_entry | 619 | call interrupt_entry |
620 | UNWIND_HINT_REGS indirect=1 | 620 | UNWIND_HINT_REGS indirect=1 |
@@ -811,7 +811,6 @@ END(common_interrupt) | |||
811 | .macro apicinterrupt3 num sym do_sym | 811 | .macro apicinterrupt3 num sym do_sym |
812 | ENTRY(\sym) | 812 | ENTRY(\sym) |
813 | UNWIND_HINT_IRET_REGS | 813 | UNWIND_HINT_IRET_REGS |
814 | ASM_CLAC | ||
815 | pushq $~(\num) | 814 | pushq $~(\num) |
816 | .Lcommon_\sym: | 815 | .Lcommon_\sym: |
817 | call interrupt_entry | 816 | call interrupt_entry |