mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
Linux: upgrade patches to 2.6.16.13.
Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk> --HG-- rename : patches/linux-2.6.16/device_bind.patch => patches/linux-2.6.16.13/device_bind.patch rename : patches/linux-2.6.16/i386-mach-io-check-nmi.patch => patches/linux-2.6.16.13/i386-mach-io-check-nmi.patch rename : patches/linux-2.6.16/net-csum.patch => patches/linux-2.6.16.13/net-csum.patch rename : patches/linux-2.6.16/pmd-shared.patch => patches/linux-2.6.16.13/pmd-shared.patch rename : patches/linux-2.6.16/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch => patches/linux-2.6.16.13/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch rename : patches/linux-2.6.16/smp-alts.patch => patches/linux-2.6.16.13/smp-alts.patch rename : patches/linux-2.6.16/x86-increase-interrupt-vector-range.patch => patches/linux-2.6.16.13/x86-increase-interrupt-vector-range.patch rename : patches/linux-2.6.16/xenoprof-generic.patch => patches/linux-2.6.16.13/xenoprof-generic.patch
This commit is contained in:
1 parent
44cf443c79
commit
d3997b960e
9 files changed
+190
-208
No files matched your search
@@ -1,5 +1,6 @@
|
||||
--- linux-2.6.16/drivers/base/bus.c 2006-03-16 10:50:20.000000000 -0500
|
||||
+++ linux-2.6.16/drivers/base/bus.c 2006-03-16 11:02:08.000000000 -0500
|
||||
diff -pruN ../pristine-linux-2.6.16.13/drivers/base/bus.c ./drivers/base/bus.c
|
||||
--- ../pristine-linux-2.6.16.13/drivers/base/bus.c 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./drivers/base/bus.c 2006-05-04 17:41:30.000000000 +0100
|
||||
@@ -188,6 +188,11 @@ static ssize_t driver_bind(struct device
|
||||
up(&dev->sem);
|
||||
if (dev->parent)
|
||||
+6
-6
@@ -1,6 +1,6 @@
|
||||
diff -pruN ../pristine-linux-2.6.16/arch/i386/kernel/traps.c ./arch/i386/kernel/traps.c
|
||||
--- ../pristine-linux-2.6.16/arch/i386/kernel/traps.c 2006-03-20 05:53:29.000000000 +0000
|
||||
+++ ./arch/i386/kernel/traps.c 2006-03-20 19:38:17.000000000 +0000
|
||||
diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/traps.c ./arch/i386/kernel/traps.c
|
||||
--- ../pristine-linux-2.6.16.13/arch/i386/kernel/traps.c 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./arch/i386/kernel/traps.c 2006-05-04 17:41:34.000000000 +0100
|
||||
@@ -567,18 +567,11 @@ static void mem_parity_error(unsigned ch
|
||||
|
||||
static void io_check_error(unsigned char reason, struct pt_regs * regs)
|
||||
@@ -21,9 +21,9 @@ diff -pruN ../pristine-linux-2.6.16/arch/i386/kernel/traps.c ./arch/i386/kernel/
|
||||
}
|
||||
|
||||
static void unknown_nmi_error(unsigned char reason, struct pt_regs * regs)
|
||||
diff -pruN ../pristine-linux-2.6.16/include/asm-i386/mach-default/mach_traps.h ./include/asm-i386/mach-default/mach_traps.h
|
||||
--- ../pristine-linux-2.6.16/include/asm-i386/mach-default/mach_traps.h 2006-03-20 05:53:29.000000000 +0000
|
||||
+++ ./include/asm-i386/mach-default/mach_traps.h 2006-03-20 19:38:17.000000000 +0000
|
||||
diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/mach-default/mach_traps.h ./include/asm-i386/mach-default/mach_traps.h
|
||||
--- ../pristine-linux-2.6.16.13/include/asm-i386/mach-default/mach_traps.h 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./include/asm-i386/mach-default/mach_traps.h 2006-05-04 17:41:34.000000000 +0100
|
||||
@@ -15,6 +15,18 @@ static inline void clear_mem_error(unsig
|
||||
outb(reason, 0x61);
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
diff -pruN ../pristine-linux-2.6.16/net/ipv4/netfilter/ip_nat_proto_tcp.c ./net/ipv4/netfilter/ip_nat_proto_tcp.c
|
||||
--- ../pristine-linux-2.6.16/net/ipv4/netfilter/ip_nat_proto_tcp.c 2006-03-20 05:53:29.000000000 +0000
|
||||
+++ ./net/ipv4/netfilter/ip_nat_proto_tcp.c 2006-03-20 19:38:19.000000000 +0000
|
||||
diff -pruN ../pristine-linux-2.6.16.13/net/ipv4/netfilter/ip_nat_proto_tcp.c ./net/ipv4/netfilter/ip_nat_proto_tcp.c
|
||||
--- ../pristine-linux-2.6.16.13/net/ipv4/netfilter/ip_nat_proto_tcp.c 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./net/ipv4/netfilter/ip_nat_proto_tcp.c 2006-05-04 17:41:37.000000000 +0100
|
||||
@@ -129,10 +129,14 @@ tcp_manip_pkt(struct sk_buff **pskb,
|
||||
if (hdrsize < sizeof(*hdr))
|
||||
return 1;
|
||||
@@ -17,9 +17,9 @@ diff -pruN ../pristine-linux-2.6.16/net/ipv4/netfilter/ip_nat_proto_tcp.c ./net/
|
||||
return 1;
|
||||
}
|
||||
|
||||
diff -pruN ../pristine-linux-2.6.16/net/ipv4/netfilter/ip_nat_proto_udp.c ./net/ipv4/netfilter/ip_nat_proto_udp.c
|
||||
--- ../pristine-linux-2.6.16/net/ipv4/netfilter/ip_nat_proto_udp.c 2006-03-20 05:53:29.000000000 +0000
|
||||
+++ ./net/ipv4/netfilter/ip_nat_proto_udp.c 2006-03-20 19:38:19.000000000 +0000
|
||||
diff -pruN ../pristine-linux-2.6.16.13/net/ipv4/netfilter/ip_nat_proto_udp.c ./net/ipv4/netfilter/ip_nat_proto_udp.c
|
||||
--- ../pristine-linux-2.6.16.13/net/ipv4/netfilter/ip_nat_proto_udp.c 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./net/ipv4/netfilter/ip_nat_proto_udp.c 2006-05-04 17:41:37.000000000 +0100
|
||||
@@ -113,11 +113,16 @@ udp_manip_pkt(struct sk_buff **pskb,
|
||||
newport = tuple->dst.u.udp.port;
|
||||
portptr = &hdr->dest;
|
||||
@@ -39,19 +39,19 @@ diff -pruN ../pristine-linux-2.6.16/net/ipv4/netfilter/ip_nat_proto_udp.c ./net/
|
||||
*portptr = newport;
|
||||
return 1;
|
||||
}
|
||||
diff -r 601fa226a761 net/ipv4/xfrm4_output.c
|
||||
--- a/net/ipv4/xfrm4_output.c Wed Apr 19 18:52:30 2006
|
||||
+++ b/net/ipv4/xfrm4_output.c Thu Apr 20 15:49:40 2006
|
||||
@@ -16,6 +16,8 @@
|
||||
#include <net/ip.h>
|
||||
diff -pruN ../pristine-linux-2.6.16.13/net/ipv4/xfrm4_output.c ./net/ipv4/xfrm4_output.c
|
||||
--- ../pristine-linux-2.6.16.13/net/ipv4/xfrm4_output.c 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./net/ipv4/xfrm4_output.c 2006-05-04 17:41:37.000000000 +0100
|
||||
@@ -17,6 +17,8 @@
|
||||
#include <net/xfrm.h>
|
||||
#include <net/icmp.h>
|
||||
+
|
||||
+extern int skb_checksum_setup(struct sk_buff *skb);
|
||||
|
||||
+extern int skb_checksum_setup(struct sk_buff *skb);
|
||||
+
|
||||
/* Add encapsulation header.
|
||||
*
|
||||
@@ -103,6 +105,10 @@
|
||||
* In transport mode, the IP header will be moved forward to make space
|
||||
@@ -103,6 +105,10 @@ static int xfrm4_output_one(struct sk_bu
|
||||
struct xfrm_state *x = dst->xfrm;
|
||||
int err;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
diff -pruN ../pristine-linux-2.6.16/arch/i386/mm/pageattr.c ./arch/i386/mm/pageattr.c
|
||||
--- ../pristine-linux-2.6.16/arch/i386/mm/pageattr.c 2006-03-20 05:53:29.000000000 +0000
|
||||
+++ ./arch/i386/mm/pageattr.c 2006-03-20 19:38:23.000000000 +0000
|
||||
diff -pruN ../pristine-linux-2.6.16.13/arch/i386/mm/pageattr.c ./arch/i386/mm/pageattr.c
|
||||
--- ../pristine-linux-2.6.16.13/arch/i386/mm/pageattr.c 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./arch/i386/mm/pageattr.c 2006-05-04 17:41:40.000000000 +0100
|
||||
@@ -78,7 +78,7 @@ static void set_pmd_pte(pte_t *kpte, uns
|
||||
unsigned long flags;
|
||||
|
||||
@@ -10,9 +10,9 @@ diff -pruN ../pristine-linux-2.6.16/arch/i386/mm/pageattr.c ./arch/i386/mm/pagea
|
||||
return;
|
||||
|
||||
spin_lock_irqsave(&pgd_lock, flags);
|
||||
diff -pruN ../pristine-linux-2.6.16/arch/i386/mm/pgtable.c ./arch/i386/mm/pgtable.c
|
||||
--- ../pristine-linux-2.6.16/arch/i386/mm/pgtable.c 2006-03-20 05:53:29.000000000 +0000
|
||||
+++ ./arch/i386/mm/pgtable.c 2006-03-20 19:38:23.000000000 +0000
|
||||
diff -pruN ../pristine-linux-2.6.16.13/arch/i386/mm/pgtable.c ./arch/i386/mm/pgtable.c
|
||||
--- ../pristine-linux-2.6.16.13/arch/i386/mm/pgtable.c 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./arch/i386/mm/pgtable.c 2006-05-04 17:41:40.000000000 +0100
|
||||
@@ -215,9 +215,10 @@ void pgd_ctor(void *pgd, kmem_cache_t *c
|
||||
spin_lock_irqsave(&pgd_lock, flags);
|
||||
}
|
||||
@@ -85,9 +85,9 @@ diff -pruN ../pristine-linux-2.6.16/arch/i386/mm/pgtable.c ./arch/i386/mm/pgtabl
|
||||
/* in the non-PAE case, free_pgtables() clears user pgd entries */
|
||||
kmem_cache_free(pgd_cache, pgd);
|
||||
}
|
||||
diff -pruN ../pristine-linux-2.6.16/include/asm-i386/pgtable-2level-defs.h ./include/asm-i386/pgtable-2level-defs.h
|
||||
--- ../pristine-linux-2.6.16/include/asm-i386/pgtable-2level-defs.h 2006-03-20 05:53:29.000000000 +0000
|
||||
+++ ./include/asm-i386/pgtable-2level-defs.h 2006-03-20 19:38:23.000000000 +0000
|
||||
diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/pgtable-2level-defs.h ./include/asm-i386/pgtable-2level-defs.h
|
||||
--- ../pristine-linux-2.6.16.13/include/asm-i386/pgtable-2level-defs.h 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./include/asm-i386/pgtable-2level-defs.h 2006-05-04 17:41:40.000000000 +0100
|
||||
@@ -1,6 +1,8 @@
|
||||
#ifndef _I386_PGTABLE_2LEVEL_DEFS_H
|
||||
#define _I386_PGTABLE_2LEVEL_DEFS_H
|
||||
@@ -97,9 +97,9 @@ diff -pruN ../pristine-linux-2.6.16/include/asm-i386/pgtable-2level-defs.h ./inc
|
||||
/*
|
||||
* traditional i386 two-level paging structure:
|
||||
*/
|
||||
diff -pruN ../pristine-linux-2.6.16/include/asm-i386/pgtable-3level-defs.h ./include/asm-i386/pgtable-3level-defs.h
|
||||
--- ../pristine-linux-2.6.16/include/asm-i386/pgtable-3level-defs.h 2006-03-20 05:53:29.000000000 +0000
|
||||
+++ ./include/asm-i386/pgtable-3level-defs.h 2006-03-20 19:38:23.000000000 +0000
|
||||
diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/pgtable-3level-defs.h ./include/asm-i386/pgtable-3level-defs.h
|
||||
--- ../pristine-linux-2.6.16.13/include/asm-i386/pgtable-3level-defs.h 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./include/asm-i386/pgtable-3level-defs.h 2006-05-04 17:41:40.000000000 +0100
|
||||
@@ -1,6 +1,8 @@
|
||||
#ifndef _I386_PGTABLE_3LEVEL_DEFS_H
|
||||
#define _I386_PGTABLE_3LEVEL_DEFS_H
|
||||
+6
-7
@@ -1,8 +1,7 @@
|
||||
Index: sysenter/linux-2.6-xen-sparse/arch/i386/kernel/entry.S
|
||||
===================================================================
|
||||
--- linux-2.6.16.orig/arch/i386/kernel/entry.S 2006-04-05 11:12:51.000000000 +0100
|
||||
+++ linux-2.6.16/arch/i386/kernel/entry.S 2006-04-05 11:12:52.000000000 +0100
|
||||
@@ -177,7 +177,7 @@
|
||||
diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/entry.S ./arch/i386/kernel/entry.S
|
||||
--- ../pristine-linux-2.6.16.13/arch/i386/kernel/entry.S 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./arch/i386/kernel/entry.S 2006-05-04 17:41:44.000000000 +0100
|
||||
@@ -177,7 +177,7 @@ need_resched:
|
||||
|
||||
# sysenter call handler stub
|
||||
ENTRY(sysenter_entry)
|
||||
@@ -11,7 +10,7 @@ Index: sysenter/linux-2.6-xen-sparse/arch/i386/kernel/entry.S
|
||||
sysenter_past_esp:
|
||||
sti
|
||||
pushl $(__USER_DS)
|
||||
@@ -492,7 +492,7 @@
|
||||
@@ -492,7 +492,7 @@ device_not_available_emulate:
|
||||
* that sets up the real kernel stack. Check here, since we can't
|
||||
* allow the wrong stack to be used.
|
||||
*
|
||||
@@ -20,7 +19,7 @@ Index: sysenter/linux-2.6-xen-sparse/arch/i386/kernel/entry.S
|
||||
* already pushed 3 words if it hits on the sysenter instruction:
|
||||
* eflags, cs and eip.
|
||||
*
|
||||
@@ -504,7 +504,7 @@
|
||||
@@ -504,7 +504,7 @@ device_not_available_emulate:
|
||||
cmpw $__KERNEL_CS,4(%esp); \
|
||||
jne ok; \
|
||||
label: \
|
||||
@@ -1,6 +1,6 @@
|
||||
diff -pruN ../pristine-linux-2.6.16/arch/i386/Kconfig ./arch/i386/Kconfig
|
||||
--- ../pristine-linux-2.6.16/arch/i386/Kconfig 2006-03-20 05:53:29.000000000 +0000
|
||||
+++ ./arch/i386/Kconfig 2006-03-20 19:38:27.000000000 +0000
|
||||
diff -pruN ../pristine-linux-2.6.16.13/arch/i386/Kconfig ./arch/i386/Kconfig
|
||||
--- ../pristine-linux-2.6.16.13/arch/i386/Kconfig 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./arch/i386/Kconfig 2006-05-04 17:41:45.000000000 +0100
|
||||
@@ -202,6 +202,19 @@ config SMP
|
||||
|
||||
If you don't know what to do here, say N.
|
||||
@@ -21,9 +21,9 @@ diff -pruN ../pristine-linux-2.6.16/arch/i386/Kconfig ./arch/i386/Kconfig
|
||||
config NR_CPUS
|
||||
int "Maximum number of CPUs (2-255)"
|
||||
range 2 255
|
||||
diff -pruN ../pristine-linux-2.6.16/arch/i386/kernel/Makefile ./arch/i386/kernel/Makefile
|
||||
--- ../pristine-linux-2.6.16/arch/i386/kernel/Makefile 2006-03-20 05:53:29.000000000 +0000
|
||||
+++ ./arch/i386/kernel/Makefile 2006-03-20 19:38:27.000000000 +0000
|
||||
diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/Makefile ./arch/i386/kernel/Makefile
|
||||
--- ../pristine-linux-2.6.16.13/arch/i386/kernel/Makefile 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./arch/i386/kernel/Makefile 2006-05-04 17:41:45.000000000 +0100
|
||||
@@ -37,6 +37,7 @@ obj-$(CONFIG_EFI) += efi.o efi_stub.o
|
||||
obj-$(CONFIG_DOUBLEFAULT) += doublefault.o
|
||||
obj-$(CONFIG_VM86) += vm86.o
|
||||
@@ -32,9 +32,9 @@ diff -pruN ../pristine-linux-2.6.16/arch/i386/kernel/Makefile ./arch/i386/kernel
|
||||
|
||||
EXTRA_AFLAGS := -traditional
|
||||
|
||||
diff -pruN ../pristine-linux-2.6.16/arch/i386/kernel/smpalts.c ./arch/i386/kernel/smpalts.c
|
||||
--- ../pristine-linux-2.6.16/arch/i386/kernel/smpalts.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ ./arch/i386/kernel/smpalts.c 2006-03-20 19:38:27.000000000 +0000
|
||||
diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/smpalts.c ./arch/i386/kernel/smpalts.c
|
||||
--- ../pristine-linux-2.6.16.13/arch/i386/kernel/smpalts.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ ./arch/i386/kernel/smpalts.c 2006-05-04 17:41:45.000000000 +0100
|
||||
@@ -0,0 +1,85 @@
|
||||
+#include <linux/kernel.h>
|
||||
+#include <asm/system.h>
|
||||
@@ -121,9 +121,9 @@ diff -pruN ../pristine-linux-2.6.16/arch/i386/kernel/smpalts.c ./arch/i386/kerne
|
||||
+ asm volatile ("jmp 1f\n1:");
|
||||
+ mb();
|
||||
+}
|
||||
diff -pruN ../pristine-linux-2.6.16/arch/i386/kernel/smpboot.c ./arch/i386/kernel/smpboot.c
|
||||
--- ../pristine-linux-2.6.16/arch/i386/kernel/smpboot.c 2006-03-20 05:53:29.000000000 +0000
|
||||
+++ ./arch/i386/kernel/smpboot.c 2006-03-20 19:38:27.000000000 +0000
|
||||
diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/smpboot.c ./arch/i386/kernel/smpboot.c
|
||||
--- ../pristine-linux-2.6.16.13/arch/i386/kernel/smpboot.c 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./arch/i386/kernel/smpboot.c 2006-05-04 17:41:45.000000000 +0100
|
||||
@@ -1218,6 +1218,11 @@ static void __init smp_boot_cpus(unsigne
|
||||
if (max_cpus <= cpucount+1)
|
||||
continue;
|
||||
@@ -148,9 +148,9 @@ diff -pruN ../pristine-linux-2.6.16/arch/i386/kernel/smpboot.c ./arch/i386/kerne
|
||||
local_irq_enable();
|
||||
per_cpu(cpu_state, cpu) = CPU_UP_PREPARE;
|
||||
/* Unleash the CPU! */
|
||||
diff -pruN ../pristine-linux-2.6.16/arch/i386/kernel/vmlinux.lds.S ./arch/i386/kernel/vmlinux.lds.S
|
||||
--- ../pristine-linux-2.6.16/arch/i386/kernel/vmlinux.lds.S 2006-03-20 05:53:29.000000000 +0000
|
||||
+++ ./arch/i386/kernel/vmlinux.lds.S 2006-03-20 19:38:27.000000000 +0000
|
||||
diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/vmlinux.lds.S ./arch/i386/kernel/vmlinux.lds.S
|
||||
--- ../pristine-linux-2.6.16.13/arch/i386/kernel/vmlinux.lds.S 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./arch/i386/kernel/vmlinux.lds.S 2006-05-04 17:41:45.000000000 +0100
|
||||
@@ -34,6 +34,13 @@ SECTIONS
|
||||
__ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) { *(__ex_table) }
|
||||
__stop___ex_table = .;
|
||||
@@ -165,9 +165,9 @@ diff -pruN ../pristine-linux-2.6.16/arch/i386/kernel/vmlinux.lds.S ./arch/i386/k
|
||||
RODATA
|
||||
|
||||
/* writeable */
|
||||
diff -pruN ../pristine-linux-2.6.16/include/asm-i386/atomic.h ./include/asm-i386/atomic.h
|
||||
--- ../pristine-linux-2.6.16/include/asm-i386/atomic.h 2006-03-20 05:53:29.000000000 +0000
|
||||
+++ ./include/asm-i386/atomic.h 2006-03-20 19:38:27.000000000 +0000
|
||||
diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/atomic.h ./include/asm-i386/atomic.h
|
||||
--- ../pristine-linux-2.6.16.13/include/asm-i386/atomic.h 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./include/asm-i386/atomic.h 2006-05-04 17:41:45.000000000 +0100
|
||||
@@ -4,18 +4,13 @@
|
||||
#include <linux/config.h>
|
||||
#include <linux/compiler.h>
|
||||
@@ -188,9 +188,9 @@ diff -pruN ../pristine-linux-2.6.16/include/asm-i386/atomic.h ./include/asm-i386
|
||||
/*
|
||||
* Make sure gcc doesn't try to be clever and move things around
|
||||
* on us. We need to use _exactly_ the address the user gave us,
|
||||
diff -pruN ../pristine-linux-2.6.16/include/asm-i386/bitops.h ./include/asm-i386/bitops.h
|
||||
--- ../pristine-linux-2.6.16/include/asm-i386/bitops.h 2006-03-20 05:53:29.000000000 +0000
|
||||
+++ ./include/asm-i386/bitops.h 2006-03-20 19:38:27.000000000 +0000
|
||||
diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/bitops.h ./include/asm-i386/bitops.h
|
||||
--- ../pristine-linux-2.6.16.13/include/asm-i386/bitops.h 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./include/asm-i386/bitops.h 2006-05-04 17:41:45.000000000 +0100
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
#include <linux/config.h>
|
||||
@@ -266,9 +266,9 @@ diff -pruN ../pristine-linux-2.6.16/include/asm-i386/bitops.h ./include/asm-i386
|
||||
"btcl %2,%1\n\tsbbl %0,%0"
|
||||
:"=r" (oldbit),"+m" (ADDR)
|
||||
:"Ir" (nr) : "memory");
|
||||
diff -pruN ../pristine-linux-2.6.16/include/asm-i386/futex.h ./include/asm-i386/futex.h
|
||||
--- ../pristine-linux-2.6.16/include/asm-i386/futex.h 2006-03-20 05:53:29.000000000 +0000
|
||||
+++ ./include/asm-i386/futex.h 2006-03-20 19:38:27.000000000 +0000
|
||||
diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/futex.h ./include/asm-i386/futex.h
|
||||
--- ../pristine-linux-2.6.16.13/include/asm-i386/futex.h 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./include/asm-i386/futex.h 2006-05-04 17:41:45.000000000 +0100
|
||||
@@ -28,7 +28,7 @@
|
||||
"1: movl %2, %0\n\
|
||||
movl %0, %3\n" \
|
||||
@@ -287,9 +287,9 @@ diff -pruN ../pristine-linux-2.6.16/include/asm-i386/futex.h ./include/asm-i386/
|
||||
oldval, uaddr, oparg);
|
||||
break;
|
||||
case FUTEX_OP_OR:
|
||||
diff -pruN ../pristine-linux-2.6.16/include/asm-i386/rwsem.h ./include/asm-i386/rwsem.h
|
||||
--- ../pristine-linux-2.6.16/include/asm-i386/rwsem.h 2006-03-20 05:53:29.000000000 +0000
|
||||
+++ ./include/asm-i386/rwsem.h 2006-03-20 19:38:27.000000000 +0000
|
||||
diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/rwsem.h ./include/asm-i386/rwsem.h
|
||||
--- ../pristine-linux-2.6.16.13/include/asm-i386/rwsem.h 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./include/asm-i386/rwsem.h 2006-05-04 17:41:45.000000000 +0100
|
||||
@@ -40,6 +40,7 @@
|
||||
|
||||
#include <linux/list.h>
|
||||
@@ -370,9 +370,9 @@ diff -pruN ../pristine-linux-2.6.16/include/asm-i386/rwsem.h ./include/asm-i386/
|
||||
: "+r"(tmp), "=m"(sem->count)
|
||||
: "r"(sem), "m"(sem->count)
|
||||
: "memory");
|
||||
diff -pruN ../pristine-linux-2.6.16/include/asm-i386/smp_alt.h ./include/asm-i386/smp_alt.h
|
||||
--- ../pristine-linux-2.6.16/include/asm-i386/smp_alt.h 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ ./include/asm-i386/smp_alt.h 2006-03-20 19:38:27.000000000 +0000
|
||||
diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/smp_alt.h ./include/asm-i386/smp_alt.h
|
||||
--- ../pristine-linux-2.6.16.13/include/asm-i386/smp_alt.h 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ ./include/asm-i386/smp_alt.h 2006-05-04 17:41:45.000000000 +0100
|
||||
@@ -0,0 +1,32 @@
|
||||
+#ifndef __ASM_SMP_ALT_H__
|
||||
+#define __ASM_SMP_ALT_H__
|
||||
@@ -406,9 +406,9 @@ diff -pruN ../pristine-linux-2.6.16/include/asm-i386/smp_alt.h ./include/asm-i38
|
||||
+#endif
|
||||
+
|
||||
+#endif /* __ASM_SMP_ALT_H__ */
|
||||
diff -pruN ../pristine-linux-2.6.16/include/asm-i386/spinlock.h ./include/asm-i386/spinlock.h
|
||||
--- ../pristine-linux-2.6.16/include/asm-i386/spinlock.h 2006-03-20 05:53:29.000000000 +0000
|
||||
+++ ./include/asm-i386/spinlock.h 2006-03-20 19:38:27.000000000 +0000
|
||||
diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/spinlock.h ./include/asm-i386/spinlock.h
|
||||
--- ../pristine-linux-2.6.16.13/include/asm-i386/spinlock.h 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./include/asm-i386/spinlock.h 2006-05-04 17:41:45.000000000 +0100
|
||||
@@ -6,6 +6,7 @@
|
||||
#include <asm/page.h>
|
||||
#include <linux/config.h>
|
||||
@@ -488,9 +488,9 @@ diff -pruN ../pristine-linux-2.6.16/include/asm-i386/spinlock.h ./include/asm-i3
|
||||
: "=m" (rw->lock) : : "memory");
|
||||
}
|
||||
|
||||
diff -pruN ../pristine-linux-2.6.16/include/asm-i386/system.h ./include/asm-i386/system.h
|
||||
--- ../pristine-linux-2.6.16/include/asm-i386/system.h 2006-03-20 05:53:29.000000000 +0000
|
||||
+++ ./include/asm-i386/system.h 2006-03-20 19:38:27.000000000 +0000
|
||||
diff -pruN ../pristine-linux-2.6.16.13/include/asm-i386/system.h ./include/asm-i386/system.h
|
||||
--- ../pristine-linux-2.6.16.13/include/asm-i386/system.h 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./include/asm-i386/system.h 2006-05-04 17:41:45.000000000 +0100
|
||||
@@ -5,7 +5,7 @@
|
||||
#include <linux/kernel.h>
|
||||
#include <asm/segment.h>
|
||||
@@ -0,0 +1,89 @@
|
||||
diff -pruN ../pristine-linux-2.6.16.13/arch/i386/kernel/entry.S ./arch/i386/kernel/entry.S
|
||||
--- ../pristine-linux-2.6.16.13/arch/i386/kernel/entry.S 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./arch/i386/kernel/entry.S 2006-05-04 17:41:49.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 ../pristine-linux-2.6.16.13/arch/i386/kernel/irq.c ./arch/i386/kernel/irq.c
|
||||
--- ../pristine-linux-2.6.16.13/arch/i386/kernel/irq.c 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./arch/i386/kernel/irq.c 2006-05-04 17:41:49.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 ../pristine-linux-2.6.16.13/arch/x86_64/kernel/entry.S ./arch/x86_64/kernel/entry.S
|
||||
--- ../pristine-linux-2.6.16.13/arch/x86_64/kernel/entry.S 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./arch/x86_64/kernel/entry.S 2006-05-04 17:41:49.000000000 +0100
|
||||
@@ -601,7 +601,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 ../pristine-linux-2.6.16.13/arch/x86_64/kernel/irq.c ./arch/x86_64/kernel/irq.c
|
||||
--- ../pristine-linux-2.6.16.13/arch/x86_64/kernel/irq.c 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./arch/x86_64/kernel/irq.c 2006-05-04 17:41:49.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 ../pristine-linux-2.6.16.13/arch/x86_64/kernel/smp.c ./arch/x86_64/kernel/smp.c
|
||||
--- ../pristine-linux-2.6.16.13/arch/x86_64/kernel/smp.c 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./arch/x86_64/kernel/smp.c 2006-05-04 17:41:49.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 ../pristine-linux-2.6.16.13/include/asm-x86_64/hw_irq.h ./include/asm-x86_64/hw_irq.h
|
||||
--- ../pristine-linux-2.6.16.13/include/asm-x86_64/hw_irq.h 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./include/asm-x86_64/hw_irq.h 2006-05-04 17:41:49.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)
|
||||
+24
-24
@@ -1,6 +1,6 @@
|
||||
diff -pruN ../pristine-linux-2.6.16/drivers/oprofile/buffer_sync.c ./drivers/oprofile/buffer_sync.c
|
||||
--- ../pristine-linux-2.6.16/drivers/oprofile/buffer_sync.c 2006-03-20 05:53:29.000000000 +0000
|
||||
+++ ./drivers/oprofile/buffer_sync.c 2006-04-03 15:53:05.000000000 +0100
|
||||
diff -pruN ../pristine-linux-2.6.16.13/drivers/oprofile/buffer_sync.c ./drivers/oprofile/buffer_sync.c
|
||||
--- ../pristine-linux-2.6.16.13/drivers/oprofile/buffer_sync.c 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./drivers/oprofile/buffer_sync.c 2006-05-04 17:41:51.000000000 +0100
|
||||
@@ -6,6 +6,10 @@
|
||||
*
|
||||
* @author John Levon <levon@movementarian.org>
|
||||
@@ -89,9 +89,9 @@ diff -pruN ../pristine-linux-2.6.16/drivers/oprofile/buffer_sync.c ./drivers/opr
|
||||
if (state == sb_bt_start) {
|
||||
state = sb_bt_ignore;
|
||||
atomic_inc(&oprofile_stats.bt_lost_no_mapping);
|
||||
diff -pruN ../pristine-linux-2.6.16/drivers/oprofile/cpu_buffer.c ./drivers/oprofile/cpu_buffer.c
|
||||
--- ../pristine-linux-2.6.16/drivers/oprofile/cpu_buffer.c 2006-03-20 05:53:29.000000000 +0000
|
||||
+++ ./drivers/oprofile/cpu_buffer.c 2006-04-03 15:53:05.000000000 +0100
|
||||
diff -pruN ../pristine-linux-2.6.16.13/drivers/oprofile/cpu_buffer.c ./drivers/oprofile/cpu_buffer.c
|
||||
--- ../pristine-linux-2.6.16.13/drivers/oprofile/cpu_buffer.c 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./drivers/oprofile/cpu_buffer.c 2006-05-04 17:41:51.000000000 +0100
|
||||
@@ -6,6 +6,10 @@
|
||||
*
|
||||
* @author John Levon <levon@movementarian.org>
|
||||
@@ -161,9 +161,9 @@ diff -pruN ../pristine-linux-2.6.16/drivers/oprofile/cpu_buffer.c ./drivers/opro
|
||||
/* notice a task switch */
|
||||
if (cpu_buf->last_task != task) {
|
||||
cpu_buf->last_task = task;
|
||||
diff -pruN ../pristine-linux-2.6.16/drivers/oprofile/cpu_buffer.h ./drivers/oprofile/cpu_buffer.h
|
||||
--- ../pristine-linux-2.6.16/drivers/oprofile/cpu_buffer.h 2006-03-20 05:53:29.000000000 +0000
|
||||
+++ ./drivers/oprofile/cpu_buffer.h 2006-04-03 15:53:05.000000000 +0100
|
||||
diff -pruN ../pristine-linux-2.6.16.13/drivers/oprofile/cpu_buffer.h ./drivers/oprofile/cpu_buffer.h
|
||||
--- ../pristine-linux-2.6.16.13/drivers/oprofile/cpu_buffer.h 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./drivers/oprofile/cpu_buffer.h 2006-05-04 17:41:51.000000000 +0100
|
||||
@@ -36,7 +36,7 @@ struct oprofile_cpu_buffer {
|
||||
volatile unsigned long tail_pos;
|
||||
unsigned long buffer_size;
|
||||
@@ -185,9 +185,9 @@ diff -pruN ../pristine-linux-2.6.16/drivers/oprofile/cpu_buffer.h ./drivers/opro
|
||||
+#define CPU_TRACE_BEGIN 3
|
||||
|
||||
#endif /* OPROFILE_CPU_BUFFER_H */
|
||||
diff -pruN ../pristine-linux-2.6.16/drivers/oprofile/event_buffer.h ./drivers/oprofile/event_buffer.h
|
||||
--- ../pristine-linux-2.6.16/drivers/oprofile/event_buffer.h 2006-03-20 05:53:29.000000000 +0000
|
||||
+++ ./drivers/oprofile/event_buffer.h 2006-04-03 15:53:05.000000000 +0100
|
||||
diff -pruN ../pristine-linux-2.6.16.13/drivers/oprofile/event_buffer.h ./drivers/oprofile/event_buffer.h
|
||||
--- ../pristine-linux-2.6.16.13/drivers/oprofile/event_buffer.h 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./drivers/oprofile/event_buffer.h 2006-05-04 17:41:51.000000000 +0100
|
||||
@@ -29,11 +29,12 @@ void wake_up_buffer_waiter(void);
|
||||
#define CPU_SWITCH_CODE 2
|
||||
#define COOKIE_SWITCH_CODE 3
|
||||
@@ -202,9 +202,9 @@ diff -pruN ../pristine-linux-2.6.16/drivers/oprofile/event_buffer.h ./drivers/op
|
||||
|
||||
#define INVALID_COOKIE ~0UL
|
||||
#define NO_COOKIE 0UL
|
||||
diff -pruN ../pristine-linux-2.6.16/drivers/oprofile/oprof.c ./drivers/oprofile/oprof.c
|
||||
--- ../pristine-linux-2.6.16/drivers/oprofile/oprof.c 2006-03-20 05:53:29.000000000 +0000
|
||||
+++ ./drivers/oprofile/oprof.c 2006-04-03 15:53:05.000000000 +0100
|
||||
diff -pruN ../pristine-linux-2.6.16.13/drivers/oprofile/oprof.c ./drivers/oprofile/oprof.c
|
||||
--- ../pristine-linux-2.6.16.13/drivers/oprofile/oprof.c 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./drivers/oprofile/oprof.c 2006-05-04 17:41:51.000000000 +0100
|
||||
@@ -5,6 +5,10 @@
|
||||
* @remark Read the file COPYING
|
||||
*
|
||||
@@ -243,9 +243,9 @@ diff -pruN ../pristine-linux-2.6.16/drivers/oprofile/oprof.c ./drivers/oprofile/
|
||||
int oprofile_setup(void)
|
||||
{
|
||||
int err;
|
||||
diff -pruN ../pristine-linux-2.6.16/drivers/oprofile/oprof.h ./drivers/oprofile/oprof.h
|
||||
--- ../pristine-linux-2.6.16/drivers/oprofile/oprof.h 2006-03-20 05:53:29.000000000 +0000
|
||||
+++ ./drivers/oprofile/oprof.h 2006-04-03 15:53:05.000000000 +0100
|
||||
diff -pruN ../pristine-linux-2.6.16.13/drivers/oprofile/oprof.h ./drivers/oprofile/oprof.h
|
||||
--- ../pristine-linux-2.6.16.13/drivers/oprofile/oprof.h 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./drivers/oprofile/oprof.h 2006-05-04 17:41:51.000000000 +0100
|
||||
@@ -35,5 +35,7 @@ void oprofile_create_files(struct super_
|
||||
void oprofile_timer_init(struct oprofile_operations * ops);
|
||||
|
||||
@@ -254,9 +254,9 @@ diff -pruN ../pristine-linux-2.6.16/drivers/oprofile/oprof.h ./drivers/oprofile/
|
||||
+int oprofile_set_active(void);
|
||||
|
||||
#endif /* OPROF_H */
|
||||
diff -pruN ../pristine-linux-2.6.16/drivers/oprofile/oprofile_files.c ./drivers/oprofile/oprofile_files.c
|
||||
--- ../pristine-linux-2.6.16/drivers/oprofile/oprofile_files.c 2006-03-20 05:53:29.000000000 +0000
|
||||
+++ ./drivers/oprofile/oprofile_files.c 2006-04-03 15:53:05.000000000 +0100
|
||||
diff -pruN ../pristine-linux-2.6.16.13/drivers/oprofile/oprofile_files.c ./drivers/oprofile/oprofile_files.c
|
||||
--- ../pristine-linux-2.6.16.13/drivers/oprofile/oprofile_files.c 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./drivers/oprofile/oprofile_files.c 2006-05-04 17:41:51.000000000 +0100
|
||||
@@ -5,15 +5,21 @@
|
||||
* @remark Read the file COPYING
|
||||
*
|
||||
@@ -361,9 +361,9 @@ diff -pruN ../pristine-linux-2.6.16/drivers/oprofile/oprofile_files.c ./drivers/
|
||||
oprofilefs_create_file(sb, root, "buffer", &event_buffer_fops);
|
||||
oprofilefs_create_ulong(sb, root, "buffer_size", &fs_buffer_size);
|
||||
oprofilefs_create_ulong(sb, root, "buffer_watershed", &fs_buffer_watershed);
|
||||
diff -pruN ../pristine-linux-2.6.16/include/linux/oprofile.h ./include/linux/oprofile.h
|
||||
--- ../pristine-linux-2.6.16/include/linux/oprofile.h 2006-03-20 05:53:29.000000000 +0000
|
||||
+++ ./include/linux/oprofile.h 2006-04-03 15:53:05.000000000 +0100
|
||||
diff -pruN ../pristine-linux-2.6.16.13/include/linux/oprofile.h ./include/linux/oprofile.h
|
||||
--- ../pristine-linux-2.6.16.13/include/linux/oprofile.h 2006-05-02 22:38:44.000000000 +0100
|
||||
+++ ./include/linux/oprofile.h 2006-05-04 17:41:51.000000000 +0100
|
||||
@@ -16,6 +16,8 @@
|
||||
#include <linux/types.h>
|
||||
#include <linux/spinlock.h>
|
||||
@@ -1,107 +0,0 @@
|
||||
Subject: Increase x86 interrupt vector range
|
||||
|
||||
Remove the limit of 256 interrupt vectors by changing the value
|
||||
stored in orig_{e,r}ax to be the negated interrupt vector.
|
||||
The orig_{e,r}ax needs to be < 0 to allow the signal code to
|
||||
distinguish between return from interrupt and return from syscall.
|
||||
With this change applied, NR_IRQS can be > 256.
|
||||
|
||||
Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
|
||||
---
|
||||
arch/i386/kernel/entry.S | 4 ++--
|
||||
arch/i386/kernel/irq.c | 4 ++--
|
||||
arch/x86_64/kernel/entry.S | 2 +-
|
||||
arch/x86_64/kernel/irq.c | 4 ++--
|
||||
arch/x86_64/kernel/smp.c | 4 ++--
|
||||
include/asm-x86_64/hw_irq.h | 2 +-
|
||||
6 files changed, 10 insertions(+), 10 deletions(-)
|
||||
|
||||
diff -r 7d239c83edea arch/i386/kernel/entry.S
|
||||
--- a/arch/i386/kernel/entry.S Mon Mar 20 06:00:20 2006 +0000
|
||||
+++ b/arch/i386/kernel/entry.S Fri Mar 31 17:01:35 2006 +0100
|
||||
@@ -406,7 +406,7 @@ ENTRY(irq_entries_start)
|
||||
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 -r 7d239c83edea arch/i386/kernel/irq.c
|
||||
--- a/arch/i386/kernel/irq.c Mon Mar 20 06:00:20 2006 +0000
|
||||
+++ b/arch/i386/kernel/irq.c Fri Mar 31 17:01:35 2006 +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 -r 7d239c83edea arch/x86_64/kernel/entry.S
|
||||
--- a/arch/x86_64/kernel/entry.S Mon Mar 20 06:00:20 2006 +0000
|
||||
+++ b/arch/x86_64/kernel/entry.S Fri Mar 31 17:01:35 2006 +0100
|
||||
@@ -609,7 +609,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 -r 7d239c83edea arch/x86_64/kernel/irq.c
|
||||
--- a/arch/x86_64/kernel/irq.c Mon Mar 20 06:00:20 2006 +0000
|
||||
+++ b/arch/x86_64/kernel/irq.c Fri Mar 31 17:01:35 2006 +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 -r 7d239c83edea arch/x86_64/kernel/smp.c
|
||||
--- a/arch/x86_64/kernel/smp.c Mon Mar 20 06:00:20 2006 +0000
|
||||
+++ b/arch/x86_64/kernel/smp.c Fri Mar 31 17:01:35 2006 +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 -r 7d239c83edea include/asm-x86_64/hw_irq.h
|
||||
--- a/include/asm-x86_64/hw_irq.h Mon Mar 20 06:00:20 2006 +0000
|
||||
+++ b/include/asm-x86_64/hw_irq.h Fri Mar 31 17:01:35 2006 +0100
|
||||
@@ -127,7 +127,7 @@ __asm__( \
|
||||
__asm__( \
|
||||
"\n.p2align\n" \
|
||||
"IRQ" #nr "_interrupt:\n\t" \
|
||||
- "push $" #nr "-256 ; " \
|
||||
+ "push $~(" #nr ") ; " \
|
||||
"jmp common_interrupt");
|
||||
|
||||
#if defined(CONFIG_X86_IO_APIC)
|
||||