Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: x86: Clear irqstack thread_info x86: Make relocatable kernel work with new binutils
This commit is contained in:
@@ -129,8 +129,7 @@ void __cpuinit irq_ctx_init(int cpu)
|
|||||||
irqctx = page_address(alloc_pages_node(cpu_to_node(cpu),
|
irqctx = page_address(alloc_pages_node(cpu_to_node(cpu),
|
||||||
THREAD_FLAGS,
|
THREAD_FLAGS,
|
||||||
THREAD_ORDER));
|
THREAD_ORDER));
|
||||||
irqctx->tinfo.task = NULL;
|
memset(&irqctx->tinfo, 0, sizeof(struct thread_info));
|
||||||
irqctx->tinfo.exec_domain = NULL;
|
|
||||||
irqctx->tinfo.cpu = cpu;
|
irqctx->tinfo.cpu = cpu;
|
||||||
irqctx->tinfo.preempt_count = HARDIRQ_OFFSET;
|
irqctx->tinfo.preempt_count = HARDIRQ_OFFSET;
|
||||||
irqctx->tinfo.addr_limit = MAKE_MM_SEG(0);
|
irqctx->tinfo.addr_limit = MAKE_MM_SEG(0);
|
||||||
@@ -140,10 +139,8 @@ void __cpuinit irq_ctx_init(int cpu)
|
|||||||
irqctx = page_address(alloc_pages_node(cpu_to_node(cpu),
|
irqctx = page_address(alloc_pages_node(cpu_to_node(cpu),
|
||||||
THREAD_FLAGS,
|
THREAD_FLAGS,
|
||||||
THREAD_ORDER));
|
THREAD_ORDER));
|
||||||
irqctx->tinfo.task = NULL;
|
memset(&irqctx->tinfo, 0, sizeof(struct thread_info));
|
||||||
irqctx->tinfo.exec_domain = NULL;
|
|
||||||
irqctx->tinfo.cpu = cpu;
|
irqctx->tinfo.cpu = cpu;
|
||||||
irqctx->tinfo.preempt_count = 0;
|
|
||||||
irqctx->tinfo.addr_limit = MAKE_MM_SEG(0);
|
irqctx->tinfo.addr_limit = MAKE_MM_SEG(0);
|
||||||
|
|
||||||
per_cpu(softirq_ctx, cpu) = irqctx;
|
per_cpu(softirq_ctx, cpu) = irqctx;
|
||||||
|
@@ -34,11 +34,9 @@ OUTPUT_FORMAT(CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT)
|
|||||||
#ifdef CONFIG_X86_32
|
#ifdef CONFIG_X86_32
|
||||||
OUTPUT_ARCH(i386)
|
OUTPUT_ARCH(i386)
|
||||||
ENTRY(phys_startup_32)
|
ENTRY(phys_startup_32)
|
||||||
jiffies = jiffies_64;
|
|
||||||
#else
|
#else
|
||||||
OUTPUT_ARCH(i386:x86-64)
|
OUTPUT_ARCH(i386:x86-64)
|
||||||
ENTRY(phys_startup_64)
|
ENTRY(phys_startup_64)
|
||||||
jiffies_64 = jiffies;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_X86_64) && defined(CONFIG_DEBUG_RODATA)
|
#if defined(CONFIG_X86_64) && defined(CONFIG_DEBUG_RODATA)
|
||||||
@@ -142,6 +140,15 @@ SECTIONS
|
|||||||
CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES)
|
CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES)
|
||||||
|
|
||||||
DATA_DATA
|
DATA_DATA
|
||||||
|
/*
|
||||||
|
* Workaround a binutils (2.20.51.0.12 to 2.21.51.0.3) bug.
|
||||||
|
* This makes jiffies relocatable in such binutils
|
||||||
|
*/
|
||||||
|
#ifdef CONFIG_X86_32
|
||||||
|
jiffies = jiffies_64;
|
||||||
|
#else
|
||||||
|
jiffies_64 = jiffies;
|
||||||
|
#endif
|
||||||
CONSTRUCTORS
|
CONSTRUCTORS
|
||||||
|
|
||||||
/* rarely changed data like cpu maps */
|
/* rarely changed data like cpu maps */
|
||||||
|
Reference in New Issue
Block a user