
modified: compiler/create_crosscompiler.sh deleted: notes modified: src/.gdb_history deleted: src/amd64_vol2.pdf modified: src/bootloader/bios_functions/bios_disk.asm modified: src/bootloader/bios_functions/print.asm modified: src/bootloader/bootloader.asm modified: src/bootloader/cpu_check.asm modified: src/bootloader/enter_kernel.asm deleted: src/bootloader/enter_kernel_backup modified: src/bootloader/gdt.asm deleted: src/bootloader/multicore.asm deleted: src/bootloader/notes new file: src/debug/gdbinit.gdb deleted: src/indigo_os modified: src/kernel/include/libc.h modified: src/kernel/include/paging.h modified: src/kernel/include/video.h modified: src/kernel/kernel.c modified: src/kernel/libs/acpi.c modified: src/kernel/libs/drivers/serial.c modified: src/kernel/libs/drivers/video.c modified: src/kernel/libs/libc.c modified: src/kernel/libs/page.c modified: src/link.ld modified: src/makefile new file: tools/README.md modified: tools/page/page.py
30 lines
769 B
Python
Executable File
30 lines
769 B
Python
Executable File
#!/usr/bin/env python3
|
|
from math import ceil as c
|
|
def get_offsets(addr):
|
|
if addr % 4096:
|
|
print("You must align to 4096!")
|
|
return 0
|
|
if addr > 2 ** 47:
|
|
print("Address too big!")
|
|
return 0
|
|
|
|
|
|
pte = (addr >> 12) & 0x1ff
|
|
pde = (addr >> 21) & 0x1ff
|
|
pdpe =(addr >> 30) & 0x1ff
|
|
pml4 =(addr >> 39) & 0x1ff
|
|
print("pte:\t{}\npde:\t{}\npdpe:\t{}\npml4:\t{}".format(pte, pde, pdpe, pml4))
|
|
|
|
def get_table_size(addr):
|
|
pte_cnt = c(c(addr / (1 << 12)) / 512) * 512
|
|
pde_cnt = c(c(addr / (1 << 21)) / 512) * 512
|
|
pdpe_cnt = c(c(addr / (1 << 30)) / 512) * 512
|
|
pml4_cnt = c(c(addr / (1 << 39)) / 512) * 512
|
|
|
|
|
|
return((pte_cnt + pde_cnt + pdpe_cnt + pml4_cnt) * 8)
|
|
|
|
ts = get_table_size(34359738368)
|
|
print(ts)
|
|
|