X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/b60166b327a9108b07e3069fa6568a451529ffd9..HEAD:/lunaix-os/scripts/gdb/lunadbg/arch/x86/pte.py diff --git a/lunaix-os/scripts/gdb/lunadbg/arch/x86/pte.py b/lunaix-os/scripts/gdb/lunadbg/arch/x86/pte.py index 5785376..444cb3f 100644 --- a/lunaix-os/scripts/gdb/lunadbg/arch/x86/pte.py +++ b/lunaix-os/scripts/gdb/lunadbg/arch/x86/pte.py @@ -38,23 +38,31 @@ class PageTableHelperBase: @staticmethod def vaddr_width(): raise NotImplementedError() + + @staticmethod + def pte_size(): + raise NotImplementedError() class PageTableHelper32(PageTableHelperBase): @staticmethod def translation_level(level = -1): return [0, 1][level] + @staticmethod + def pgtable_len(): + return (1 << 10) + @staticmethod def translation_shift_bits(level): - return [9, 0][level] + 12 + return [10, 0][level] + 12 @staticmethod def mapping_present(pte): return bool(pte & 1) @staticmethod - def huge_page(pte): - return bool(pte & (1 << 7)) + def huge_page(pte, po): + return bool(pte & (1 << 7)) and po @staticmethod def protections(pte): @@ -96,6 +104,10 @@ class PageTableHelper32(PageTableHelperBase): @staticmethod def vaddr_width(): return 32 + + @staticmethod + def pte_size(): + return 4 class PageTableHelper64(PageTableHelperBase): pass \ No newline at end of file