提交 f6dc247c 编写于 作者: G Glauber de Oliveira Costa 提交者: Ingo Molnar

x86: change gdt acessor macro name

This patch changes the name of x86_64 macro used to access the per-cpu
gdt. It is now equal to the i386 version, which will allow code to be shared.
Signed-off-by: NGlauber de Oliveira Costa <gcosta@redhat.com>
Signed-off-by: NIngo Molnar <mingo@elte.hu>
Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
上级 6b68f01b
...@@ -228,7 +228,7 @@ void __cpuinit cpu_init (void) ...@@ -228,7 +228,7 @@ void __cpuinit cpu_init (void)
* and set up the GDT descriptor: * and set up the GDT descriptor:
*/ */
if (cpu) if (cpu)
memcpy(cpu_gdt(cpu), cpu_gdt_table, GDT_SIZE); memcpy(get_cpu_gdt_table(cpu), cpu_gdt_table, GDT_SIZE);
cpu_gdt_descr[cpu].size = GDT_SIZE; cpu_gdt_descr[cpu].size = GDT_SIZE;
load_gdt((const struct desc_ptr *)&cpu_gdt_descr[cpu]); load_gdt((const struct desc_ptr *)&cpu_gdt_descr[cpu]);
......
...@@ -140,7 +140,7 @@ void fix_processor_context(void) ...@@ -140,7 +140,7 @@ void fix_processor_context(void)
set_tss_desc(cpu,t); /* This just modifies memory; should not be necessary. But... This is necessary, because 386 hardware has concept of busy TSS or some similar stupidity. */ set_tss_desc(cpu,t); /* This just modifies memory; should not be necessary. But... This is necessary, because 386 hardware has concept of busy TSS or some similar stupidity. */
cpu_gdt(cpu)[GDT_ENTRY_TSS].type = 9; get_cpu_gdt_table(cpu)[GDT_ENTRY_TSS].type = 9;
syscall_init(); /* This sets MSR_*STAR and related */ syscall_init(); /* This sets MSR_*STAR and related */
load_TR_desc(); /* This does ltr */ load_TR_desc(); /* This does ltr */
......
...@@ -297,7 +297,7 @@ static void __cpuinit vsyscall_set_cpu(int cpu) ...@@ -297,7 +297,7 @@ static void __cpuinit vsyscall_set_cpu(int cpu)
/* Store cpu number in limit so that it can be loaded quickly /* Store cpu number in limit so that it can be loaded quickly
in user space in vgetcpu. in user space in vgetcpu.
12 bits for the CPU and 8 bits for the node. */ 12 bits for the CPU and 8 bits for the node. */
d = (unsigned long *)(cpu_gdt(cpu) + GDT_ENTRY_PER_CPU); d = (unsigned long *)(get_cpu_gdt_table(cpu) + GDT_ENTRY_PER_CPU);
*d = 0x0f40000000000ULL; *d = 0x0f40000000000ULL;
*d |= cpu; *d |= cpu;
*d |= (node & 0xf) << 12; *d |= (node & 0xf) << 12;
......
...@@ -48,7 +48,7 @@ static inline void write_ldt_entry(struct desc_struct *ldt, ...@@ -48,7 +48,7 @@ static inline void write_ldt_entry(struct desc_struct *ldt,
} }
/* the cpu gdt accessor */ /* the cpu gdt accessor */
#define cpu_gdt(_cpu) ((struct desc_struct *)cpu_gdt_descr[_cpu].address) #define get_cpu_gdt_table(x) ((struct desc_struct *)cpu_gdt_descr[x].address)
static inline void load_gdt(const struct desc_ptr *ptr) static inline void load_gdt(const struct desc_ptr *ptr)
{ {
...@@ -141,15 +141,15 @@ static inline void set_tss_desc(unsigned cpu, void *addr) ...@@ -141,15 +141,15 @@ static inline void set_tss_desc(unsigned cpu, void *addr)
* -1? seg base+limit should be pointing to the address of the * -1? seg base+limit should be pointing to the address of the
* last valid byte * last valid byte
*/ */
set_tssldt_descriptor(&cpu_gdt(cpu)[GDT_ENTRY_TSS], set_tssldt_descriptor(&get_cpu_gdt_table(cpu)[GDT_ENTRY_TSS],
(unsigned long)addr, DESC_TSS, (unsigned long)addr, DESC_TSS,
IO_BITMAP_OFFSET + IO_BITMAP_BYTES + sizeof(unsigned long) - 1); IO_BITMAP_OFFSET + IO_BITMAP_BYTES + sizeof(unsigned long) - 1);
} }
static inline void set_ldt_desc(unsigned cpu, void *addr, int size) static inline void set_ldt_desc(unsigned cpu, void *addr, int size)
{ {
set_tssldt_descriptor(&cpu_gdt(cpu)[GDT_ENTRY_LDT], (unsigned long)addr, set_tssldt_descriptor(&get_cpu_gdt_table(cpu)[GDT_ENTRY_LDT],
DESC_LDT, size * 8 - 1); (unsigned long)addr, DESC_LDT, size * 8 - 1);
} }
#define LDT_entry_a(info) \ #define LDT_entry_a(info) \
...@@ -183,7 +183,7 @@ static inline void set_ldt_desc(unsigned cpu, void *addr, int size) ...@@ -183,7 +183,7 @@ static inline void set_ldt_desc(unsigned cpu, void *addr, int size)
static inline void load_TLS(struct thread_struct *t, unsigned int cpu) static inline void load_TLS(struct thread_struct *t, unsigned int cpu)
{ {
unsigned int i; unsigned int i;
u64 *gdt = (u64 *)(cpu_gdt(cpu) + GDT_ENTRY_TLS_MIN); u64 *gdt = (u64 *)(get_cpu_gdt_table(cpu) + GDT_ENTRY_TLS_MIN);
for (i = 0; i < GDT_ENTRY_TLS_ENTRIES; i++) for (i = 0; i < GDT_ENTRY_TLS_ENTRIES; i++)
gdt[i] = t->tls_array[i]; gdt[i] = t->tls_array[i];
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册