aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorRusty Russell <rusty@rustcorp.com.au>2007-05-02 13:27:10 -0400
committerAndi Kleen <andi@basil.nowhere.org>2007-05-02 13:27:10 -0400
commitae1ee11be77f51cedb6c569887dddc70c163ab6d (patch)
treee579a6a6d10c6835cab9af47a2795bf40f669da6 /include
parent8f9aeca7a081d81c4c9862be1e04f15b5ab5461f (diff)
[PATCH] i386: Use per-cpu variables for GDT, PDA
Allocating PDA and GDT at boot is a pain. Using simple per-cpu variables adds happiness (although we need the GDT page-aligned for Xen, which we do in a followup patch). [akpm@linux-foundation.org: build fix] Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Andi Kleen <ak@suse.de> Cc: Andi Kleen <ak@suse.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'include')
-rw-r--r--include/asm-generic/percpu.h1
-rw-r--r--include/asm-i386/desc.h1
-rw-r--r--include/asm-i386/pda.h7
-rw-r--r--include/asm-i386/processor.h2
4 files changed, 6 insertions, 5 deletions
diff --git a/include/asm-generic/percpu.h b/include/asm-generic/percpu.h
index 196376262240..d984a9041436 100644
--- a/include/asm-generic/percpu.h
+++ b/include/asm-generic/percpu.h
@@ -1,6 +1,7 @@
1#ifndef _ASM_GENERIC_PERCPU_H_ 1#ifndef _ASM_GENERIC_PERCPU_H_
2#define _ASM_GENERIC_PERCPU_H_ 2#define _ASM_GENERIC_PERCPU_H_
3#include <linux/compiler.h> 3#include <linux/compiler.h>
4#include <linux/threads.h>
4 5
5#define __GENERIC_PER_CPU 6#define __GENERIC_PER_CPU
6#ifdef CONFIG_SMP 7#ifdef CONFIG_SMP
diff --git a/include/asm-i386/desc.h b/include/asm-i386/desc.h
index 050831f34f71..53c5916687b6 100644
--- a/include/asm-i386/desc.h
+++ b/include/asm-i386/desc.h
@@ -22,6 +22,7 @@ struct Xgt_desc_struct {
22 22
23extern struct Xgt_desc_struct idt_descr; 23extern struct Xgt_desc_struct idt_descr;
24DECLARE_PER_CPU(struct Xgt_desc_struct, cpu_gdt_descr); 24DECLARE_PER_CPU(struct Xgt_desc_struct, cpu_gdt_descr);
25DECLARE_PER_CPU(struct desc_struct, cpu_gdt[GDT_ENTRIES]);
25extern struct Xgt_desc_struct early_gdt_descr; 26extern struct Xgt_desc_struct early_gdt_descr;
26 27
27static inline struct desc_struct *get_cpu_gdt_table(unsigned int cpu) 28static inline struct desc_struct *get_cpu_gdt_table(unsigned int cpu)
diff --git a/include/asm-i386/pda.h b/include/asm-i386/pda.h
index b12d59a318b7..aef7f732f77e 100644
--- a/include/asm-i386/pda.h
+++ b/include/asm-i386/pda.h
@@ -8,6 +8,7 @@
8 8
9#include <linux/stddef.h> 9#include <linux/stddef.h>
10#include <linux/types.h> 10#include <linux/types.h>
11#include <asm/percpu.h>
11 12
12struct i386_pda 13struct i386_pda
13{ 14{
@@ -18,10 +19,8 @@ struct i386_pda
18 struct pt_regs *irq_regs; 19 struct pt_regs *irq_regs;
19}; 20};
20 21
21extern struct i386_pda *_cpu_pda[]; 22DECLARE_PER_CPU(struct i386_pda, _cpu_pda);
22 23#define cpu_pda(i) (&per_cpu(_cpu_pda, (i)))
23#define cpu_pda(i) (_cpu_pda[i])
24
25#define pda_offset(field) offsetof(struct i386_pda, field) 24#define pda_offset(field) offsetof(struct i386_pda, field)
26 25
27extern void __bad_pda_field(void); 26extern void __bad_pda_field(void);
diff --git a/include/asm-i386/processor.h b/include/asm-i386/processor.h
index 01ae0ffcf236..cd940befef53 100644
--- a/include/asm-i386/processor.h
+++ b/include/asm-i386/processor.h
@@ -743,7 +743,7 @@ extern unsigned long boot_option_idle_override;
743extern void enable_sep_cpu(void); 743extern void enable_sep_cpu(void);
744extern int sysenter_setup(void); 744extern int sysenter_setup(void);
745 745
746extern int init_gdt(int cpu, struct task_struct *idle); 746extern void init_gdt(int cpu, struct task_struct *idle);
747extern void cpu_set_gdt(int); 747extern void cpu_set_gdt(int);
748extern void secondary_cpu_init(void); 748extern void secondary_cpu_init(void);
749 749