diff options
Diffstat (limited to 'include')
36 files changed, 634 insertions, 130 deletions
diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h index 9d774d07d95b..00c23433b39f 100644 --- a/include/asm-generic/pgtable.h +++ b/include/asm-generic/pgtable.h | |||
| @@ -183,6 +183,19 @@ static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addres | |||
| 183 | #endif | 183 | #endif |
| 184 | 184 | ||
| 185 | /* | 185 | /* |
| 186 | * A facility to provide batching of the reload of page tables with the | ||
| 187 | * actual context switch code for paravirtualized guests. By convention, | ||
| 188 | * only one of the lazy modes (CPU, MMU) should be active at any given | ||
| 189 | * time, entry should never be nested, and entry and exits should always | ||
| 190 | * be paired. This is for sanity of maintaining and reasoning about the | ||
| 191 | * kernel code. | ||
| 192 | */ | ||
| 193 | #ifndef __HAVE_ARCH_ENTER_LAZY_CPU_MODE | ||
| 194 | #define arch_enter_lazy_cpu_mode() do {} while (0) | ||
| 195 | #define arch_leave_lazy_cpu_mode() do {} while (0) | ||
| 196 | #endif | ||
| 197 | |||
| 198 | /* | ||
| 186 | * When walking page tables, get the address of the next boundary, | 199 | * When walking page tables, get the address of the next boundary, |
| 187 | * or the end address of the range if that comes earlier. Although no | 200 | * or the end address of the range if that comes earlier. Although no |
| 188 | * vma end wraps to 0, rounded up __boundary may wrap to 0 throughout. | 201 | * vma end wraps to 0, rounded up __boundary may wrap to 0 throughout. |
diff --git a/include/asm-i386/apic.h b/include/asm-i386/apic.h index 41a44319905f..3a61206fd108 100644 --- a/include/asm-i386/apic.h +++ b/include/asm-i386/apic.h | |||
| @@ -43,6 +43,8 @@ extern void generic_apic_probe(void); | |||
| 43 | #define apic_write native_apic_write | 43 | #define apic_write native_apic_write |
| 44 | #define apic_write_atomic native_apic_write_atomic | 44 | #define apic_write_atomic native_apic_write_atomic |
| 45 | #define apic_read native_apic_read | 45 | #define apic_read native_apic_read |
| 46 | #define setup_boot_clock setup_boot_APIC_clock | ||
| 47 | #define setup_secondary_clock setup_secondary_APIC_clock | ||
| 46 | #endif | 48 | #endif |
| 47 | 49 | ||
| 48 | static __inline fastcall void native_apic_write(unsigned long reg, | 50 | static __inline fastcall void native_apic_write(unsigned long reg, |
diff --git a/include/asm-i386/bugs.h b/include/asm-i386/bugs.h index 38f1aebbbdb5..c90c7c499302 100644 --- a/include/asm-i386/bugs.h +++ b/include/asm-i386/bugs.h | |||
| @@ -160,7 +160,7 @@ static void __init check_config(void) | |||
| 160 | * If we configured ourselves for a TSC, we'd better have one! | 160 | * If we configured ourselves for a TSC, we'd better have one! |
| 161 | */ | 161 | */ |
| 162 | #ifdef CONFIG_X86_TSC | 162 | #ifdef CONFIG_X86_TSC |
| 163 | if (!cpu_has_tsc) | 163 | if (!cpu_has_tsc && !tsc_disable) |
| 164 | panic("Kernel compiled for Pentium+, requires TSC feature!"); | 164 | panic("Kernel compiled for Pentium+, requires TSC feature!"); |
| 165 | #endif | 165 | #endif |
| 166 | 166 | ||
diff --git a/include/asm-i386/desc.h b/include/asm-i386/desc.h index f398cc456448..050831f34f71 100644 --- a/include/asm-i386/desc.h +++ b/include/asm-i386/desc.h | |||
| @@ -22,7 +22,7 @@ struct Xgt_desc_struct { | |||
| 22 | 22 | ||
| 23 | extern struct Xgt_desc_struct idt_descr; | 23 | extern struct Xgt_desc_struct idt_descr; |
| 24 | DECLARE_PER_CPU(struct Xgt_desc_struct, cpu_gdt_descr); | 24 | DECLARE_PER_CPU(struct Xgt_desc_struct, cpu_gdt_descr); |
| 25 | 25 | extern struct Xgt_desc_struct early_gdt_descr; | |
| 26 | 26 | ||
| 27 | static inline struct desc_struct *get_cpu_gdt_table(unsigned int cpu) | 27 | static inline struct desc_struct *get_cpu_gdt_table(unsigned int cpu) |
| 28 | { | 28 | { |
diff --git a/include/asm-i386/elf.h b/include/asm-i386/elf.h index 369035dfe4b6..8d33c9bb7c1c 100644 --- a/include/asm-i386/elf.h +++ b/include/asm-i386/elf.h | |||
| @@ -90,8 +90,8 @@ typedef struct user_fxsr_struct elf_fpxregset_t; | |||
| 90 | pr_reg[6] = regs->eax; \ | 90 | pr_reg[6] = regs->eax; \ |
| 91 | pr_reg[7] = regs->xds; \ | 91 | pr_reg[7] = regs->xds; \ |
| 92 | pr_reg[8] = regs->xes; \ | 92 | pr_reg[8] = regs->xes; \ |
| 93 | savesegment(fs,pr_reg[9]); \ | 93 | pr_reg[9] = regs->xfs; \ |
| 94 | pr_reg[10] = regs->xgs; \ | 94 | savesegment(gs,pr_reg[10]); \ |
| 95 | pr_reg[11] = regs->orig_eax; \ | 95 | pr_reg[11] = regs->orig_eax; \ |
| 96 | pr_reg[12] = regs->eip; \ | 96 | pr_reg[12] = regs->eip; \ |
| 97 | pr_reg[13] = regs->xcs; \ | 97 | pr_reg[13] = regs->xcs; \ |
diff --git a/include/asm-i386/idle.h b/include/asm-i386/idle.h new file mode 100644 index 000000000000..87ab93911199 --- /dev/null +++ b/include/asm-i386/idle.h | |||
| @@ -0,0 +1,14 @@ | |||
| 1 | #ifndef _ASM_I386_IDLE_H | ||
| 2 | #define _ASM_I386_IDLE_H 1 | ||
| 3 | |||
| 4 | #define IDLE_START 1 | ||
| 5 | #define IDLE_END 2 | ||
| 6 | |||
| 7 | struct notifier_block; | ||
| 8 | void idle_notifier_register(struct notifier_block *n); | ||
| 9 | void idle_notifier_unregister(struct notifier_block *n); | ||
| 10 | |||
| 11 | void exit_idle(void); | ||
| 12 | void enter_idle(void); | ||
| 13 | |||
| 14 | #endif | ||
diff --git a/include/asm-i386/mce.h b/include/asm-i386/mce.h index 7cc1a973bf00..b0a02ee34ffd 100644 --- a/include/asm-i386/mce.h +++ b/include/asm-i386/mce.h | |||
| @@ -3,3 +3,5 @@ extern void mcheck_init(struct cpuinfo_x86 *c); | |||
| 3 | #else | 3 | #else |
| 4 | #define mcheck_init(c) do {} while(0) | 4 | #define mcheck_init(c) do {} while(0) |
| 5 | #endif | 5 | #endif |
| 6 | |||
| 7 | extern int mce_disabled; | ||
diff --git a/include/asm-i386/mmu_context.h b/include/asm-i386/mmu_context.h index 68ff102d6f5e..e6aa30f8de5b 100644 --- a/include/asm-i386/mmu_context.h +++ b/include/asm-i386/mmu_context.h | |||
| @@ -63,7 +63,7 @@ static inline void switch_mm(struct mm_struct *prev, | |||
| 63 | } | 63 | } |
| 64 | 64 | ||
| 65 | #define deactivate_mm(tsk, mm) \ | 65 | #define deactivate_mm(tsk, mm) \ |
| 66 | asm("movl %0,%%fs": :"r" (0)); | 66 | asm("movl %0,%%gs": :"r" (0)); |
| 67 | 67 | ||
| 68 | #define activate_mm(prev, next) \ | 68 | #define activate_mm(prev, next) \ |
| 69 | switch_mm((prev),(next),NULL) | 69 | switch_mm((prev),(next),NULL) |
diff --git a/include/asm-i386/paravirt.h b/include/asm-i386/paravirt.h index 9f06265065f4..6317e0a4d735 100644 --- a/include/asm-i386/paravirt.h +++ b/include/asm-i386/paravirt.h | |||
| @@ -59,90 +59,102 @@ struct paravirt_ops | |||
| 59 | convention. This makes it easier to implement inline | 59 | convention. This makes it easier to implement inline |
| 60 | assembler replacements. */ | 60 | assembler replacements. */ |
| 61 | 61 | ||
| 62 | void (fastcall *cpuid)(unsigned int *eax, unsigned int *ebx, | 62 | void (*cpuid)(unsigned int *eax, unsigned int *ebx, |
| 63 | unsigned int *ecx, unsigned int *edx); | 63 | unsigned int *ecx, unsigned int *edx); |
| 64 | 64 | ||
| 65 | unsigned long (fastcall *get_debugreg)(int regno); | 65 | unsigned long (*get_debugreg)(int regno); |
| 66 | void (fastcall *set_debugreg)(int regno, unsigned long value); | 66 | void (*set_debugreg)(int regno, unsigned long value); |
| 67 | 67 | ||
| 68 | void (fastcall *clts)(void); | 68 | void (*clts)(void); |
| 69 | 69 | ||
| 70 | unsigned long (fastcall *read_cr0)(void); | 70 | unsigned long (*read_cr0)(void); |
| 71 | void (fastcall *write_cr0)(unsigned long); | 71 | void (*write_cr0)(unsigned long); |
| 72 | 72 | ||
| 73 | unsigned long (fastcall *read_cr2)(void); | 73 | |
