IndigoOS/tools/page/page.py
Brett Weiland 14b109ea24 modified: README.md
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
2021-03-24 15:38:09 -05:00

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)