diff options
author | Ian Campbell <ian.campbell@xensource.com> | 2006-11-27 13:50:02 +0000 |
---|---|---|
committer | Ian Campbell <ian.campbell@xensource.com> | 2006-11-27 13:50:02 +0000 |
commit | 9276d7173d48566fa81a74d1991a4183d0bc9498 (patch) | |
tree | 1bcb101d9d0467db33fd927cd27fb0588c899606 /patches/linux-2.6.16.31/x86-increase-interrupt-vector-range.patch | |
parent | 403cab8f9d4125cef88abeb80427c5af9bee5488 (diff) | |
download | xen-9276d7173d48566fa81a74d1991a4183d0bc9498.tar.gz xen-9276d7173d48566fa81a74d1991a4183d0bc9498.tar.bz2 xen-9276d7173d48566fa81a74d1991a4183d0bc9498.zip |
[LINUX] Update to Linux 2.6.16.31
Updated linux-2.6-xen-sparse/arch/x86_64/kernel/acpi/Makefile
Signed-off-by: Ian Campbell <ian.campbell@xensource.com>
Diffstat (limited to 'patches/linux-2.6.16.31/x86-increase-interrupt-vector-range.patch')
-rw-r--r-- | patches/linux-2.6.16.31/x86-increase-interrupt-vector-range.patch | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/patches/linux-2.6.16.31/x86-increase-interrupt-vector-range.patch b/patches/linux-2.6.16.31/x86-increase-interrupt-vector-range.patch new file mode 100644 index 0000000000..0ac84e4aca --- /dev/null +++ b/patches/linux-2.6.16.31/x86-increase-interrupt-vector-range.patch @@ -0,0 +1,89 @@ +diff -pruN ../orig-linux-2.6.16.29/arch/i386/kernel/entry.S ./arch/i386/kernel/entry.S +--- ../orig-linux-2.6.16.29/arch/i386/kernel/entry.S 2006-09-19 14:05:44.000000000 +0100 ++++ ./arch/i386/kernel/entry.S 2006-09-19 14:05:56.000000000 +0100 +@@ -406,7 +406,7 @@ vector=0 + ENTRY(irq_entries_start) + .rept NR_IRQS + ALIGN +-1: pushl $vector-256 ++1: pushl $~(vector) + jmp common_interrupt + .data + .long 1b +@@ -423,7 +423,7 @@ common_interrupt: + + #define BUILD_INTERRUPT(name, nr) \ + ENTRY(name) \ +- pushl $nr-256; \ ++ pushl $~(nr); \ + SAVE_ALL \ + movl %esp,%eax; \ + call smp_/**/name; \ +diff -pruN ../orig-linux-2.6.16.29/arch/i386/kernel/irq.c ./arch/i386/kernel/irq.c +--- ../orig-linux-2.6.16.29/arch/i386/kernel/irq.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./arch/i386/kernel/irq.c 2006-09-19 14:05:56.000000000 +0100 +@@ -53,8 +53,8 @@ static union irq_ctx *softirq_ctx[NR_CPU + */ + fastcall unsigned int do_IRQ(struct pt_regs *regs) + { +- /* high bits used in ret_from_ code */ +- int irq = regs->orig_eax & 0xff; ++ /* high bit used in ret_from_ code */ ++ int irq = ~regs->orig_eax; + #ifdef CONFIG_4KSTACKS + union irq_ctx *curctx, *irqctx; + u32 *isp; +diff -pruN ../orig-linux-2.6.16.29/arch/x86_64/kernel/entry.S ./arch/x86_64/kernel/entry.S +--- ../orig-linux-2.6.16.29/arch/x86_64/kernel/entry.S 2006-09-12 19:02:10.000000000 +0100 ++++ ./arch/x86_64/kernel/entry.S 2006-09-19 14:05:56.000000000 +0100 +@@ -596,7 +596,7 @@ retint_kernel: + */ + .macro apicinterrupt num,func + INTR_FRAME +- pushq $\num-256 ++ pushq $~(\num) + CFI_ADJUST_CFA_OFFSET 8 + interrupt \func + jmp ret_from_intr +diff -pruN ../orig-linux-2.6.16.29/arch/x86_64/kernel/irq.c ./arch/x86_64/kernel/irq.c +--- ../orig-linux-2.6.16.29/arch/x86_64/kernel/irq.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./arch/x86_64/kernel/irq.c 2006-09-19 14:05:56.000000000 +0100 +@@ -96,8 +96,8 @@ skip: + */ + asmlinkage unsigned int do_IRQ(struct pt_regs *regs) + { +- /* high bits used in ret_from_ code */ +- unsigned irq = regs->orig_rax & 0xff; ++ /* high bit used in ret_from_ code */ ++ unsigned irq = ~regs->orig_rax; + + exit_idle(); + irq_enter(); +diff -pruN ../orig-linux-2.6.16.29/arch/x86_64/kernel/smp.c ./arch/x86_64/kernel/smp.c +--- ../orig-linux-2.6.16.29/arch/x86_64/kernel/smp.c 2006-09-12 19:02:10.000000000 +0100 ++++ ./arch/x86_64/kernel/smp.c 2006-09-19 14:05:56.000000000 +0100 +@@ -135,10 +135,10 @@ asmlinkage void smp_invalidate_interrupt + + cpu = smp_processor_id(); + /* +- * orig_rax contains the interrupt vector - 256. ++ * orig_rax contains the negated interrupt vector. + * Use that to determine where the sender put the data. + */ +- sender = regs->orig_rax + 256 - INVALIDATE_TLB_VECTOR_START; ++ sender = ~regs->orig_rax - INVALIDATE_TLB_VECTOR_START; + f = &per_cpu(flush_state, sender); + + if (!cpu_isset(cpu, f->flush_cpumask)) +diff -pruN ../orig-linux-2.6.16.29/include/asm-x86_64/hw_irq.h ./include/asm-x86_64/hw_irq.h +--- ../orig-linux-2.6.16.29/include/asm-x86_64/hw_irq.h 2006-09-12 19:02:10.000000000 +0100 ++++ ./include/asm-x86_64/hw_irq.h 2006-09-19 14:05:56.000000000 +0100 +@@ -127,7 +127,7 @@ asmlinkage void IRQ_NAME(nr); \ + __asm__( \ + "\n.p2align\n" \ + "IRQ" #nr "_interrupt:\n\t" \ +- "push $" #nr "-256 ; " \ ++ "push $~(" #nr ") ; " \ + "jmp common_interrupt"); + + #if defined(CONFIG_X86_IO_APIC) |