aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorGlauber de Oliveira Costa <gcosta@redhat.com>2008-01-30 07:31:12 -0500
committerIngo Molnar <mingo@elte.hu>2008-01-30 07:31:12 -0500
commit6b68f01baa810e9f63fbf39e9d5c3ef1d94a966f (patch)
treedc7f50673d72677d24dbe9ac8217b832f8d5cb02 /include
parent6842ef0e85a9cc1295f3ef933a230f863b01eb0f (diff)
x86: unify struct desc_ptr
This patch unifies struct desc_ptr between i386 and x86_64. They can be expressed in the exact same way in C code, only having to change the name of one of them. As Xgt_desc_struct is ugly and big, this is the one that goes away. There's also a padding field in i386, but it is not really needed in the C structure definition. Signed-off-by: Glauber de Oliveira Costa <gcosta@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'include')
-rw-r--r--include/asm-x86/desc_32.h16
-rw-r--r--include/asm-x86/lguest.h8
-rw-r--r--include/asm-x86/paravirt.h18
-rw-r--r--include/asm-x86/processor_32.h2
-rw-r--r--include/asm-x86/suspend_32.h4
5 files changed, 21 insertions, 27 deletions
diff --git a/include/asm-x86/desc_32.h b/include/asm-x86/desc_32.h
index c547403f341..bc5ca345346 100644
--- a/include/asm-x86/desc_32.h
+++ b/include/asm-x86/desc_32.h
@@ -12,12 +12,6 @@
12 12
13#include <asm/mmu.h> 13#include <asm/mmu.h>
14 14
15struct Xgt_desc_struct {
16 unsigned short size;
17 unsigned long address __attribute__((packed));
18 unsigned short pad;
19} __attribute__ ((packed));
20
21struct gdt_page 15struct gdt_page
22{ 16{
23 struct desc_struct gdt[GDT_ENTRIES]; 17 struct desc_struct gdt[GDT_ENTRIES];
@@ -29,7 +23,7 @@ static inline struct desc_struct *get_cpu_gdt_table(unsigned int cpu)
29 return per_cpu(gdt_page, cpu).gdt; 23 return per_cpu(gdt_page, cpu).gdt;
30} 24}
31 25
32extern struct Xgt_desc_struct idt_descr; 26extern struct desc_ptr idt_descr;
33extern struct desc_struct idt_table[]; 27extern struct desc_struct idt_table[];
34extern void set_intr_gate(unsigned int irq, void * addr); 28extern void set_intr_gate(unsigned int irq, void * addr);
35 29
@@ -107,22 +101,22 @@ static inline void native_load_tr_desc(void)
107 asm volatile("ltr %w0"::"q" (GDT_ENTRY_TSS*8)); 101 asm volatile("ltr %w0"::"q" (GDT_ENTRY_TSS*8));
108} 102}
109 103
110static inline void native_load_gdt(const struct Xgt_desc_struct *dtr) 104static inline void native_load_gdt(const struct desc_ptr *dtr)
111{ 105{
112 asm volatile("lgdt %0"::"m" (*dtr)); 106 asm volatile("lgdt %0"::"m" (*dtr));
113} 107}
114 108
115static inline void native_load_idt(const struct Xgt_desc_struct *dtr) 109static inline void native_load_idt(const struct desc_ptr *dtr)
116{ 110{
117 asm volatile("lidt %0"::"m" (*dtr)); 111 asm volatile("lidt %0"::"m" (*dtr));
118} 112}
119 113
120static inline void native_store_gdt(struct Xgt_desc_struct *dtr) 114static inline void native_store_gdt(struct desc_ptr *dtr)
121{ 115{
122 asm ("sgdt %0":"=m" (*dtr)); 116 asm ("sgdt %0":"=m" (*dtr));
123} 117}
124 118
125static inline void native_store_idt(struct Xgt_desc_struct *dtr) 119static inline void native_store_idt(struct desc_ptr *dtr)
126{ 120{
127 asm ("sidt %0":"=m" (*dtr)); 121 asm ("sidt %0":"=m" (*dtr));
128} 122}
diff --git a/include/asm-x86/lguest.h b/include/asm-x86/lguest.h
index 17c908c0ef1..3585a1628b5 100644
--- a/include/asm-x86/lguest.h
+++ b/include/asm-x86/lguest.h
@@ -44,13 +44,13 @@ struct lguest_ro_state
44{ 44{
45 /* Host information we need to restore when we switch back. */ 45 /* Host information we need to restore when we switch back. */
46 u32 host_cr3; 46 u32 host_cr3;
47 struct Xgt_desc_struct host_idt_desc; 47 struct desc_ptr host_idt_desc;
48 struct Xgt_desc_struct host_gdt_desc; 48 struct desc_ptr host_gdt_desc;
49 u32 host_sp; 49 u32 host_sp;
50 50
51 /* Fields which are used when guest is running. */ 51 /* Fields which are used when guest is running. */
52 struct Xgt_desc_struct guest_idt_desc; 52 struct desc_ptr guest_idt_desc;
53 struct Xgt_desc_struct guest_gdt_desc; 53 struct desc_ptr guest_gdt_desc;
54 struct i386_hw_tss guest_tss; 54 struct i386_hw_tss guest_tss;
55 struct desc_struct guest_idt[IDT_ENTRIES]; 55 struct desc_struct guest_idt[IDT_ENTRIES];
56 struct desc_struct guest_gdt[GDT_ENTRIES]; 56 struct desc_struct guest_gdt[GDT_ENTRIES];
diff --git a/include/asm-x86/paravirt.h b/include/asm-x86/paravirt.h
index e95c2a65516..0333fb6988b 100644
--- a/include/asm-x86/paravirt.h
+++ b/include/asm-x86/paravirt.h
@@ -20,7 +20,7 @@
20 20
21struct page; 21struct page;
22struct thread_struct; 22struct thread_struct;
23struct Xgt_desc_struct; 23struct desc_ptr;
24struct tss_struct; 24struct tss_struct;
25struct mm_struct; 25struct mm_struct;
26struct desc_struct; 26struct desc_struct;
@@ -88,10 +88,10 @@ struct pv_cpu_ops {
88 88
89 /* Segment descriptor handling */ 89 /* Segment descriptor handling */
90 void (*load_tr_desc)(void); 90 void (*load_tr_desc)(void);
91 void (*load_gdt)(const struct Xgt_desc_struct *); 91 void (*load_gdt)(const struct desc_ptr *);
92 void (*load_idt)(const struct Xgt_desc_struct *); 92 void (*load_idt)(const struct desc_ptr *);
93 void (*store_gdt)(struct Xgt_desc_struct *); 93 void (*store_gdt)(struct desc_ptr *);
94 void (*store_idt)(struct Xgt_desc_struct *); 94 void (*store_idt)(struct desc_ptr *);
95 void (*set_ldt)(const void *desc, unsigned entries); 95 void (*set_ldt)(const void *desc, unsigned entries);
96 unsigned long (*store_tr)(void); 96 unsigned long (*store_tr)(void);
97 void (*load_tls)(struct thread_struct *t, unsigned int cpu); 97 void (*load_tls)(struct thread_struct *t, unsigned int cpu);
@@ -630,11 +630,11 @@ static inline void load_TR_desc(void)
630{ 630{
631 PVOP_VCALL0(pv_cpu_ops.load_tr_desc); 631 PVOP_VCALL0(pv_cpu_ops.load_tr_desc);
632} 632}
633static inline void load_gdt(const struct Xgt_desc_struct *dtr) 633static inline void load_gdt(const struct desc_ptr *dtr)
634{ 634{
635 PVOP_VCALL1(pv_cpu_ops.load_gdt, dtr); 635 PVOP_VCALL1(pv_cpu_ops.load_gdt, dtr);
636} 636}
637static inline void load_idt(const struct Xgt_desc_struct *dtr) 637static inline void load_idt(const struct desc_ptr *dtr)
638{ 638{
639 PVOP_VCALL1(pv_cpu_ops.load_idt, dtr); 639 PVOP_VCALL1(pv_cpu_ops.load_idt, dtr);
640} 640}
@@ -642,11 +642,11 @@ static inline void set_ldt(const void *addr, unsigned entries)
642{ 642{
643 PVOP_VCALL2(pv_cpu_ops.set_ldt, addr, entries); 643 PVOP_VCALL2(pv_cpu_ops.set_ldt, addr, entries);
644} 644}
645static inline void store_gdt(struct Xgt_desc_struct *dtr) 645static inline void store_gdt(struct desc_ptr *dtr)
646{ 646{
647 PVOP_VCALL1(pv_cpu_ops.store_gdt, dtr); 647 PVOP_VCALL1(pv_cpu_ops.store_gdt, dtr);
648} 648}
649static inline void store_idt(struct Xgt_desc_struct *dtr) 649static inline void store_idt(struct desc_ptr *dtr)
650{ 650{
651 PVOP_VCALL1(pv_cpu_ops.store_idt, dtr); 651 PVOP_VCALL1(pv_cpu_ops.store_idt, dtr);
652} 652}
diff --git a/include/asm-x86/processor_32.h b/include/asm-x86/processor_32.h
index bc48ad64de4..e5056ab9dd9 100644
--- a/include/asm-x86/processor_32.h
+++ b/include/asm-x86/processor_32.h
@@ -707,7 +707,7 @@ extern void enable_sep_cpu(void);
707extern int sysenter_setup(void); 707extern int sysenter_setup(void);
708 708
709/* Defined in head.S */ 709/* Defined in head.S */
710extern struct Xgt_desc_struct early_gdt_descr; 710extern struct desc_ptr early_gdt_descr;
711 711
712extern void cpu_set_gdt(int); 712extern void cpu_set_gdt(int);
713extern void switch_to_new_gdt(void); 713extern void switch_to_new_gdt(void);
diff --git a/include/asm-x86/suspend_32.h b/include/asm-x86/suspend_32.h
index a2520732ffd..1bbda3ad779 100644
--- a/include/asm-x86/suspend_32.h
+++ b/include/asm-x86/suspend_32.h
@@ -12,8 +12,8 @@ static inline int arch_prepare_suspend(void) { return 0; }
12struct saved_context { 12struct saved_context {
13 u16 es, fs, gs, ss; 13 u16 es, fs, gs, ss;
14 unsigned long cr0, cr2, cr3, cr4; 14 unsigned long cr0, cr2, cr3, cr4;
15 struct Xgt_desc_struct gdt; 15 struct desc_ptr gdt;
16 struct Xgt_desc_struct idt; 16 struct desc_ptr idt;
17 u16 ldt; 17 u16 ldt;
18 u16 tss; 18 u16 tss;
19 unsigned long tr; 19 unsigned long tr;