]> git.karo-electronics.de Git - linux-beck.git/commit
x86: 64 bits: shrink and align IRQ stubs
authorH. Peter Anvin <hpa@zytor.com>
Tue, 11 Nov 2008 21:51:52 +0000 (13:51 -0800)
committerH. Peter Anvin <hpa@zytor.com>
Tue, 11 Nov 2008 21:51:52 +0000 (13:51 -0800)
commit939b787130bf22887a09d8fd2641a094dcef8c22
tree6bdd272bb742bf2916d35c04cb8a6dd24e2dd135
parentb7c6244f13d37592003b46e12500a90e9781ad9d
x86: 64 bits: shrink and align IRQ stubs

Move the IRQ stub generation to assembly to simplify it and for
consistency with 32 bits.  Doing it in a C file with asm() statements
doesn't help clarity, and it prevents some optimizations.

Shrink the IRQ stubs down to just over four bytes per (we fit seven
into a 32-byte chunk.)  This shrinks the total icache consumption of
the IRQ stubs down to an even kilobyte, if all of them are in active
use.

The downside is that we end up with a double jump, which could have a
negative effect on some pipelines.  The double jump is always inside
the same cacheline on any modern chips.

To get the most effect, cache-align the IRQ stubs.

This makes the 64-bit code match changes already done to the 32-bit
code, and should open up irqinit*.c for unification.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
arch/x86/include/asm/hw_irq.h
arch/x86/kernel/entry_64.S
arch/x86/kernel/irqinit_64.c