summaryrefslogtreecommitdiff
path: root/asm/gdt.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/gdt.s')
-rw-r--r--asm/gdt.s42
1 files changed, 0 insertions, 42 deletions
diff --git a/asm/gdt.s b/asm/gdt.s
deleted file mode 100644
index c155ce9..0000000
--- a/asm/gdt.s
+++ /dev/null
@@ -1,42 +0,0 @@
-//http://wiki.osdev.org/GDT_Tutorial
-.global asm_setup_gdt
-//.global tss_flush
-
-// call as setup_gdt(GDT,sizeof(GDT))
-asm_setup_gdt:
-
- // re-fill gdt_descriptor with new GDT location and size
- movl 4(%esp),%eax
- movl %eax, gdt_descriptor+2
-
- movw 8(%esp),%ax
- movw %ax, gdt_descriptor
- //
-
- lgdt gdt_descriptor #load new descriptor table!
-
- // reload to take effect
- reloadSegments:
-
- #Reload CS register containing code selector:
- jmp $0x08,$reload_CS # 0x08 points at the new code selector
-
- reload_CS:
- mov $0x10, %ax #0x10 points at the new data selector
- mov %ax, %ds
- mov %ax, %es
- mov %ax, %fs
- mov %ax, %gs
- mov %ax, %ss
-
- tss_flush:
-
- movw $0x2B,%ax # Load the index of our TSS structure - The index is
- # 0x28, as it is the 5th selector and each is 8 bytes
- # long, but we set the bottom two bits (making 0x2B)
- # so that it has an RPL of 3, not zero.
- ltr %ax # Load 0x2B into the task state register.
-
- ret
-
-ret