diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2017-06-10 20:55:56 +0200 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2017-06-10 20:55:56 +0200 |
commit | eea5bf4b859eb56c5772c58ca54937a90a10e7ee (patch) | |
tree | 391b31a28a3740d3fd52a9a9d1c651bc9f12cc2b /src/boot/boot_gdt.asm | |
parent | 1625a4752545e54c439a38f3393ab9d72bfee721 (diff) | |
download | abaos-eea5bf4b859eb56c5772c58ca54937a90a10e7ee.tar.gz abaos-eea5bf4b859eb56c5772c58ca54937a90a10e7ee.tar.bz2 |
moved bootloader to subdirectory
Diffstat (limited to 'src/boot/boot_gdt.asm')
-rw-r--r-- | src/boot/boot_gdt.asm | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/boot/boot_gdt.asm b/src/boot/boot_gdt.asm new file mode 100644 index 0000000..87e1585 --- /dev/null +++ b/src/boot/boot_gdt.asm @@ -0,0 +1,43 @@ +; GDT global descriptor table + +gdt_start: + +; mandatory null entry +gdt_null: + dd 0x0 + dd 0x0 + +; code segment +; base=0x0, limit=0xfffff +; flags: present (not paged), ring 0, executable, direction bit +; conforming, writable, not accessed +; granularity: 4kb pages, 32-bit mode, no 64-bit segment, AVL would +; be for our own extensions +gdt_code: + dw 0xffff ; limit (bits 0-15) + dw 0x0 ; base (bits 0-15) + db 0x0 ; base (bits 16-23) + db 10011010b ; flags + db 11001111b ; flags, limit (bits 16-19) + db 0x0 ; base (bit 24-31) + +; flat model, same as code segment, but flags are +; flags: ring 0, +gdt_data: + dw 0xffff ; limit (bits 0-15) + dw 0x0 ; base (bits 0-15) + db 0x0 ; base (bits 16-23) + db 10010010b ; flags + db 11001111b ; flags, limit (bits 16-19) + db 0x0 ; base (bit 24-31) + +gdt_end: + +gdt_descriptor: + dw gdt_end -gdt_start - 1 ; size + dd gdt_start ; start address of the GDT + +; constants representing the segment bases +CODE_SEGMENT equ gdt_code - gdt_start +DATA_SEGMENT equ gdt_data - gdt_start + |