diff options
Diffstat (limited to 'i686/lgdt.c')
-rw-r--r-- | i686/lgdt.c | 25 |
1 files changed, 0 insertions, 25 deletions
diff --git a/i686/lgdt.c b/i686/lgdt.c deleted file mode 100644 index 473a91d..0000000 --- a/i686/lgdt.c +++ /dev/null @@ -1,25 +0,0 @@ -#include "gdt.h" - -struct __attribute__((packed)) Pointer { - uint16_t limit; - uint32_t base; -}; - -static struct SegmentDescriptor_t segments[8] __attribute__((aligned(32))); - -void -gdt_install() -{ - const struct Pointer ptr = {sizeof(segments) - 1, (unsigned)&segments}; - SegmentDescriptor(&segments[0], 0, 0, 0); /* null segment */ - SegmentDescriptor(&segments[2], 0, 0xffffffff, 0x9a); /* ktext segment */ - SegmentDescriptor(&segments[3], 0, 0xffffffff, 0x92); /* kdata segment */ - - __asm__("lgdt (%0)" : : "a"(&ptr)); - - /* load the kernel data segment */ - __asm__("mov %0, %%ds; mov %0, %%es; mov %0, %%fs; mov %0, %%gs; mov %0, %%ss" : : "ax"(kdataDescriptor)); - - /* load the kernel code segment */ - __asm__("ljmp %0, $1f\n1:" : : "i"(ktextDescriptor)); -} |