/SPARTAN/trunk/arch/ia32/include/pm.h |
---|
129,6 → 129,8 |
} __attribute__ ((packed)); |
extern struct ptr_16_32 gdtr; |
extern struct ptr_16_32 bsp_bootstrap_gdtr; |
extern struct ptr_16_32 ap_bootstrap_gdtr; |
extern struct tss *tss_p; |
extern struct descriptor gdt[]; |
/SPARTAN/trunk/arch/ia32/src/pm.c |
---|
172,6 → 172,7 |
/* |
* Update addresses in GDT and IDT to their virtual counterparts. |
*/ |
if (config.cpu_active == 1) |
gdtr.base = (__address) gdt; |
idtr.base = (__address) idt; |
__asm__ volatile ("lgdt %0\n" : : "m" (gdtr)); |
/SPARTAN/trunk/arch/ia32/src/smp/smp.c |
---|
141,7 → 141,8 |
memcpy(gdt_new, gdt, GDT_ITEMS*sizeof(struct descriptor)); |
memsetb((__address)(&gdt_new[TSS_DES]), sizeof(struct descriptor), 0); |
gdtr.base = KA2PA((__address) gdt_new); |
ap_bootstrap_gdtr.base = KA2PA((__address) gdt_new); |
gdtr.base = (__address) gdt_new; |
if (l_apic_send_init_ipi(ops->cpu_apic_id(i))) { |
/* |