;=----------------------------------------------------------------------------=; ; OS on Kaleid ; ; ; ; Desc: Memory Design Structures ; ; (x86_64 architecture only) ; ; ; ; ; ; Copyright © 2018-2020 The OS/K Team ; ; ; ; This file is part of OS/K. ; ; ; ; OS/K is free software: you can redistribute it and/or modify ; ; it under the terms of the GNU General Public License as published by ; ; the Free Software Foundation, either version 3 of the License, or ; ; (at your option) any later version. ; ; ; ; OS/K is distributed in the hope that it will be useful, ; ; but WITHOUT ANY WARRANTY; without even the implied warranty of ; ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; ; GNU General Public License for more details. ; ; ; ; You should have received a copy of the GNU General Public License ; ; along with OS/K. If not, see . ; ;=----------------------------------------------------------------------------=; [BITS 32] extern kernelEnd extern _bss global newKernelEnd global newStackEnd global GDT64 [section .text] KERNEL_STACK equ 8 * 1024 * 1024 ; 8MB of stack newKernelEnd dq 0x0 newStackEnd dq 0x0 [section .rodata] ;; GDT WITH DOC ALIGN 4096 GDT64: ;; Null selector within 64 bits .null: dq 0x0 ; Zero entry ;; 64-bit code selector (ring 0) .code: equ $ - GDT64 dq (1<<43) | (1<<44) | (1<<47) | (1<<53) ; | | | | ; | | | `------ 64-bit selector ; | | `---------------- Present selector ; | `-------------------------- Descriptor type ; `------------------------------------ Executable segment .pointer: dw $ - GDT64 - 1 dq GDT64 ;; EMPTY PAGE TABLES (identity of the first 4GiB) [section .bss] ALIGN 4096 PML4_table: resb 4096 PDP_table: resb 4096 PD_table: resb 4096