diff options
author | Glauber de Oliveira Costa <gcosta@redhat.com> | 2008-01-30 07:31:12 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-01-30 07:31:12 -0500 |
commit | 8d947344c47a40626730bb80d136d8daac9f2060 (patch) | |
tree | 3987eb84706b2f4e968d6838da9d2d1f6888e34e /arch/x86/kernel | |
parent | 010d4f8221cf51a2ab8b037d0149506b397d073f (diff) |
x86: change write_idt_entry signature
this patch changes write_idt_entry signature. It now takes a gate_desc
instead of the a and b parameters. It will allow it to be later unified
between i386 and x86_64.
Signed-off-by: Glauber de Oliveira Costa <gcosta@redhat.com>
CC: Zachary Amsden <zach@vmware.com>
CC: Jeremy Fitzhardinge <Jeremy.Fitzhardinge.citrix.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86/kernel')
-rw-r--r-- | arch/x86/kernel/paravirt_32.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/vmi_32.c | 10 |
2 files changed, 10 insertions, 2 deletions
diff --git a/arch/x86/kernel/paravirt_32.c b/arch/x86/kernel/paravirt_32.c index f4e3a8e01cf2..13bbc99b639b 100644 --- a/arch/x86/kernel/paravirt_32.c +++ b/arch/x86/kernel/paravirt_32.c | |||
@@ -381,7 +381,7 @@ struct pv_cpu_ops pv_cpu_ops = { | |||
381 | .load_tls = native_load_tls, | 381 | .load_tls = native_load_tls, |
382 | .write_ldt_entry = write_dt_entry, | 382 | .write_ldt_entry = write_dt_entry, |
383 | .write_gdt_entry = write_dt_entry, | 383 | .write_gdt_entry = write_dt_entry, |
384 | .write_idt_entry = write_dt_entry, | 384 | .write_idt_entry = native_write_idt_entry, |
385 | .load_sp0 = native_load_sp0, | 385 | .load_sp0 = native_load_sp0, |
386 | 386 | ||
387 | .irq_enable_syscall_ret = native_irq_enable_syscall_ret, | 387 | .irq_enable_syscall_ret = native_irq_enable_syscall_ret, |
diff --git a/arch/x86/kernel/vmi_32.c b/arch/x86/kernel/vmi_32.c index 4cfda7dbe90f..a635b22de25f 100644 --- a/arch/x86/kernel/vmi_32.c +++ b/arch/x86/kernel/vmi_32.c | |||
@@ -62,6 +62,7 @@ static struct { | |||
62 | void (*cpuid)(void /* non-c */); | 62 | void (*cpuid)(void /* non-c */); |
63 | void (*_set_ldt)(u32 selector); | 63 | void (*_set_ldt)(u32 selector); |
64 | void (*set_tr)(u32 selector); | 64 | void (*set_tr)(u32 selector); |
65 | void (*write_idt_entry)(struct desc_struct *, int, u32, u32); | ||
65 | void (*set_kernel_stack)(u32 selector, u32 sp0); | 66 | void (*set_kernel_stack)(u32 selector, u32 sp0); |
66 | void (*allocate_page)(u32, u32, u32, u32, u32); | 67 | void (*allocate_page)(u32, u32, u32, u32, u32); |
67 | void (*release_page)(u32, u32); | 68 | void (*release_page)(u32, u32); |
@@ -214,6 +215,12 @@ static void vmi_set_tr(void) | |||
214 | vmi_ops.set_tr(GDT_ENTRY_TSS*sizeof(struct desc_struct)); | 215 | vmi_ops.set_tr(GDT_ENTRY_TSS*sizeof(struct desc_struct)); |
215 | } | 216 | } |
216 | 217 | ||
218 | static void vmi_write_idt_entry(gate_desc *dt, int entry, const gate_desc *g) | ||
219 | { | ||
220 | u32 *idt_entry = (u32 *)g; | ||
221 | vmi_ops.write_idt_entry(dt, entry, idt_entry[0], idt_entry[2]); | ||
222 | } | ||
223 | |||
217 | static void vmi_load_sp0(struct tss_struct *tss, | 224 | static void vmi_load_sp0(struct tss_struct *tss, |
218 | struct thread_struct *thread) | 225 | struct thread_struct *thread) |
219 | { | 226 | { |
@@ -792,7 +799,8 @@ static inline int __init activate_vmi(void) | |||
792 | pv_cpu_ops.load_tls = vmi_load_tls; | 799 | pv_cpu_ops.load_tls = vmi_load_tls; |
793 | para_fill(pv_cpu_ops.write_ldt_entry, WriteLDTEntry); | 800 | para_fill(pv_cpu_ops.write_ldt_entry, WriteLDTEntry); |
794 | para_fill(pv_cpu_ops.write_gdt_entry, WriteGDTEntry); | 801 | para_fill(pv_cpu_ops.write_gdt_entry, WriteGDTEntry); |
795 | para_fill(pv_cpu_ops.write_idt_entry, WriteIDTEntry); | 802 | para_wrap(pv_cpu_ops.write_idt_entry, vmi_write_idt_entry, |
803 | write_idt_entry, WriteIDTEntry); | ||
796 | para_wrap(pv_cpu_ops.load_sp0, vmi_load_sp0, set_kernel_stack, UpdateKernelStack); | 804 | para_wrap(pv_cpu_ops.load_sp0, vmi_load_sp0, set_kernel_stack, UpdateKernelStack); |
797 | para_fill(pv_cpu_ops.set_iopl_mask, SetIOPLMask); | 805 | para_fill(pv_cpu_ops.set_iopl_mask, SetIOPLMask); |
798 | para_fill(pv_cpu_ops.io_delay, IODelay); | 806 | para_fill(pv_cpu_ops.io_delay, IODelay); |