//SPARTAN/trunk/arch/amd64/include/pm.h |
---|
116,6 → 116,11 |
__u64 base; |
} __attribute__ ((packed)); |
struct ptr_16_32 { |
__u16 limit; |
__u32 base; |
} __attribute__ ((packed)); |
struct tss { |
__u32 reserve1; |
__u64 rsp0; |
140,6 → 145,8 |
extern struct idescriptor idt[]; |
extern struct ptr_16_64 gdtr; |
extern struct ptr_16_32 bsp_bootstrap_gdtr; |
extern struct ptr_16_32 ap_bootstrap_gdtr; |
extern void pm_init(void); |
//SPARTAN/trunk/arch/amd64/src/boot/boot.S |
---|
66,10 → 66,7 |
jnc no_long_mode |
# Load gdtr, idtr |
lgdt gdtr_inst |
# Load idtr, but it contains mess - we should not get interrupt |
# anyway |
lidt idtr_inst |
lgdt bsp_bootstrap_gdtr |
movl %cr0,%eax |
orl $0x1,%eax |
154,11 → 151,11 |
.quad ptl_1 + (PTL_WRITABLE | PTL_PRESENT) |
.global gdtr_inst |
gdtr_inst: |
bsp_bootstrap_gdtr: |
.word gdtselector(GDT_ITEMS) |
.long KA2PA(gdt) |
.global idtr_inst |
idtr_inst: |
.word idtselector(IDT_ITEMS) |
.long KA2PA(idt) |
.global ap_bootstrap_gdtr |
ap_bootstrap_gdtr: |
.word gdtselector(GDT_ITEMS) |
.long KA2PA(gdt) |