diff options
author | Glauber de Oliveira Costa <gcosta@redhat.com> | 2008-01-30 07:31:13 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-01-30 07:31:13 -0500 |
commit | 75b8bb3e56ca09a467fbbe5229bc68627f7445be (patch) | |
tree | b0eba1d65eb2022fbda902c99edd066b1b3f34da /arch | |
parent | 014b15be30c04622d130946ab7c0a9101b523a8a (diff) |
x86: change write_ldt_entry signature
this patch changes the signature of write_ldt_entry.
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')
-rw-r--r-- | arch/x86/kernel/ldt.c | 3 | ||||
-rw-r--r-- | arch/x86/kernel/paravirt_32.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/vmi_32.c | 11 | ||||
-rw-r--r-- | arch/x86/xen/enlighten.c | 4 |
4 files changed, 14 insertions, 6 deletions
diff --git a/arch/x86/kernel/ldt.c b/arch/x86/kernel/ldt.c index 3e872b468533..b8ef46270e24 100644 --- a/arch/x86/kernel/ldt.c +++ b/arch/x86/kernel/ldt.c | |||
@@ -229,8 +229,7 @@ static int write_ldt(void __user *ptr, unsigned long bytecount, int oldmode) | |||
229 | 229 | ||
230 | /* Install the new entry ... */ | 230 | /* Install the new entry ... */ |
231 | install: | 231 | install: |
232 | write_ldt_entry(mm->context.ldt, ldt_info.entry_number, | 232 | write_ldt_entry(mm->context.ldt, ldt_info.entry_number, &ldt); |
233 | ldt.a, ldt.b); | ||
234 | error = 0; | 233 | error = 0; |
235 | 234 | ||
236 | out_unlock: | 235 | out_unlock: |
diff --git a/arch/x86/kernel/paravirt_32.c b/arch/x86/kernel/paravirt_32.c index 77602c1252d7..dd063fba2b21 100644 --- a/arch/x86/kernel/paravirt_32.c +++ b/arch/x86/kernel/paravirt_32.c | |||
@@ -379,7 +379,7 @@ struct pv_cpu_ops pv_cpu_ops = { | |||
379 | .store_idt = native_store_idt, | 379 | .store_idt = native_store_idt, |
380 | .store_tr = native_store_tr, | 380 | .store_tr = native_store_tr, |
381 | .load_tls = native_load_tls, | 381 | .load_tls = native_load_tls, |
382 | .write_ldt_entry = write_dt_entry, | 382 | .write_ldt_entry = native_write_ldt_entry, |
383 | .write_gdt_entry = native_write_gdt_entry, | 383 | .write_gdt_entry = native_write_gdt_entry, |
384 | .write_idt_entry = native_write_idt_entry, | 384 | .write_idt_entry = native_write_idt_entry, |
385 | .load_sp0 = native_load_sp0, | 385 | .load_sp0 = native_load_sp0, |
diff --git a/arch/x86/kernel/vmi_32.c b/arch/x86/kernel/vmi_32.c index 21edd0d6eae5..10c46419d35d 100644 --- a/arch/x86/kernel/vmi_32.c +++ b/arch/x86/kernel/vmi_32.c | |||
@@ -64,6 +64,7 @@ static struct { | |||
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 (*write_idt_entry)(struct desc_struct *, int, u32, u32); |
66 | void (*write_gdt_entry)(struct desc_struct *, int, u32, u32); | 66 | void (*write_gdt_entry)(struct desc_struct *, int, u32, u32); |
67 | void (*write_ldt_entry)(struct desc_struct *, int, u32, u32); | ||
67 | void (*set_kernel_stack)(u32 selector, u32 sp0); | 68 | void (*set_kernel_stack)(u32 selector, u32 sp0); |
68 | void (*allocate_page)(u32, u32, u32, u32, u32); | 69 | void (*allocate_page)(u32, u32, u32, u32, u32); |
69 | void (*release_page)(u32, u32); | 70 | void (*release_page)(u32, u32); |
@@ -229,6 +230,13 @@ static void vmi_write_gdt_entry(struct desc_struct *dt, int entry, | |||
229 | vmi_ops.write_gdt_entry(dt, entry, gdt_entry[0], gdt_entry[2]); | 230 | vmi_ops.write_gdt_entry(dt, entry, gdt_entry[0], gdt_entry[2]); |
230 | } | 231 | } |
231 | 232 | ||
233 | static void vmi_write_ldt_entry(struct desc_struct *dt, int entry, | ||
234 | const void *desc) | ||
235 | { | ||
236 | u32 *ldt_entry = (u32 *)desc; | ||
237 | vmi_ops.write_idt_entry(dt, entry, ldt_entry[0], ldt_entry[2]); | ||
238 | } | ||
239 | |||
232 | static void vmi_load_sp0(struct tss_struct *tss, | 240 | static void vmi_load_sp0(struct tss_struct *tss, |
233 | struct thread_struct *thread) | 241 | struct thread_struct *thread) |
234 | { | 242 | { |
@@ -805,7 +813,8 @@ static inline int __init activate_vmi(void) | |||
805 | para_fill(pv_cpu_ops.store_idt, GetIDT); | 813 | para_fill(pv_cpu_ops.store_idt, GetIDT); |
806 | para_fill(pv_cpu_ops.store_tr, GetTR); | 814 | para_fill(pv_cpu_ops.store_tr, GetTR); |
807 | pv_cpu_ops.load_tls = vmi_load_tls; | 815 | pv_cpu_ops.load_tls = vmi_load_tls; |
808 | para_fill(pv_cpu_ops.write_ldt_entry, WriteLDTEntry); | 816 | para_wrap(pv_cpu_ops.write_ldt_entry, vmi_write_ldt_entry, |
817 | write_ldt_entry, WriteLDTEntry); | ||
809 | para_wrap(pv_cpu_ops.write_gdt_entry, vmi_write_gdt_entry, | 818 | para_wrap(pv_cpu_ops.write_gdt_entry, vmi_write_gdt_entry, |
810 | write_gdt_entry, WriteGDTEntry); | 819 | write_gdt_entry, WriteGDTEntry); |
811 | para_wrap(pv_cpu_ops.write_idt_entry, vmi_write_idt_entry, | 820 | para_wrap(pv_cpu_ops.write_idt_entry, vmi_write_idt_entry, |
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c index 7f98c63f6381..72dd14d0685c 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c | |||
@@ -357,11 +357,11 @@ static void xen_load_tls(struct thread_struct *t, unsigned int cpu) | |||
357 | } | 357 | } |
358 | 358 | ||
359 | static void xen_write_ldt_entry(struct desc_struct *dt, int entrynum, | 359 | static void xen_write_ldt_entry(struct desc_struct *dt, int entrynum, |
360 | u32 low, u32 high) | 360 | const void *ptr) |
361 | { | 361 | { |
362 | unsigned long lp = (unsigned long)&dt[entrynum]; | 362 | unsigned long lp = (unsigned long)&dt[entrynum]; |
363 | xmaddr_t mach_lp = virt_to_machine(lp); | 363 | xmaddr_t mach_lp = virt_to_machine(lp); |
364 | u64 entry = (u64)high << 32 | low; | 364 | u64 entry = *(u64 *)ptr; |
365 | 365 | ||
366 | preempt_disable(); | 366 | preempt_disable(); |
367 | 367 | ||