• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Community
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
    • Software-verification
      • Kestrel-books
      • X86isa
        • Program-execution
        • Sdm-instruction-set-summary
        • Tlb
        • Running-linux
        • Introduction
        • Asmtest
        • X86isa-build-instructions
        • Publications
        • Contributors
        • Machine
        • Implemented-opcodes
        • To-do
        • Proof-utilities
        • Peripherals
        • Model-validation
        • Modelcalls
        • Concrete-simulation-examples
        • Utils
        • Debugging-code-proofs
          • System-level-marking-view-proof-utilities
            • Rb-alt
            • Unwind-x86-interpreter-in-marking-view
            • Program-at-alt
            • Get-prefixes-alt
            • Get-prefixes-in-system-level-marking-view
            • Rb-in-system-level-marking-view
            • Xlate-equiv-memory-and-rml08
            • Reasoning-about-page-tables
              • Create-qword-address-list
              • Mult-8-qword-paddr-listp
              • Gather-paging-structures
                • Gather-all-paging-structure-qword-addresses
                • All-mem-except-paging-structures-equal
                • Gather-qword-addresses-corresponding-to-1-entry
                • Xlation-governing-entries-paddrs
                • Xlate-equiv-structures
                • Xlation-governing-entries-paddrs-for-page-dir-ptr-table
                • Xlation-governing-entries-paddrs-for-page-directory
                • All-xlation-governing-entries-paddrs
                • Xlation-governing-entries-paddrs-for-pml4-table
                  • Xlation-governing-entries-paddrs-for-page-table
                  • Gather-pml4-table-qword-addresses
                  • Xlate-equiv-memory
                  • Open-qword-paddr-list
                • Qword-paddr-listp
                • Find-l-addrs-from-disjoint-p$-of-two-las-to-pas-aux
                • Find-first-arg-of-disjoint-p$-candidates
                • Paging-basics
              • Las-to-pas-two-n-ind-hint
              • Find-l-addrs-from-disjoint-p-of-las-to-pas-1-aux
              • Replace-element
              • Phys-mem-values-same
            • Non-marking-view-proof-utilities
            • App-view-proof-utilities
        • Axe
        • Execloader
      • Math
      • Testing-utilities
    • Gather-paging-structures

    Xlation-governing-entries-paddrs-for-pml4-table

    Signature
    (xlation-governing-entries-paddrs-for-pml4-table 
         lin-addr pml4-base-addr x86) 
     
      → 
    *

    Definitions and Theorems

    Function: xlation-governing-entries-paddrs-for-pml4-table

    (defun xlation-governing-entries-paddrs-for-pml4-table
           (lin-addr pml4-base-addr x86)
     (declare (xargs :stobjs (x86)))
     (declare (type (signed-byte 48) lin-addr)
              (type (unsigned-byte 52)
                    pml4-base-addr))
     (declare
          (xargs :guard (and (not (app-view x86))
                             (canonical-address-p lin-addr)
                             (equal (loghead 12 pml4-base-addr) 0))))
     (let
      ((__function__ 'xlation-governing-entries-paddrs-for-pml4-table))
      (declare (ignorable __function__))
      (b* ((pml4-entry-addr
                (pml4-table-entry-addr lin-addr pml4-base-addr))
           (pml4-entry (rm-low-64 pml4-entry-addr x86))
           (pml4te-ps? (equal (page-size pml4-entry) 1))
           ((when pml4te-ps?)
            (addr-range 8 pml4-entry-addr))
           (ptr-table-base-addr (ash (ia32e-pml4ebits->pdpt pml4-entry)
                                     12))
           (ptr-table-addresses (xlation-governing-entries-paddrs-for-page-dir-ptr-table
                                     lin-addr ptr-table-base-addr x86)))
        (append (addr-range 8 pml4-entry-addr)
                ptr-table-addresses))))

    Theorem: xlation-governing-entries-paddrs-for-pml4-table-and-xw-not-mem

    (defthm
         xlation-governing-entries-paddrs-for-pml4-table-and-xw-not-mem
      (implies (and (not (equal fld :mem))
                    (not (equal fld :app-view)))
               (equal (xlation-governing-entries-paddrs-for-pml4-table
                           lin-addr
                           base-addr (xw fld index value x86))
                      (xlation-governing-entries-paddrs-for-pml4-table
                           lin-addr
                           base-addr (double-rewrite x86)))))

    Theorem: xlation-governing-entries-paddrs-for-pml4-table-and-xw-mem-not-member

    (defthm
     xlation-governing-entries-paddrs-for-pml4-table-and-xw-mem-not-member
     (implies (not (member-p index
                             (xlation-governing-entries-paddrs-for-pml4-table
                                  lin-addr
                                  base-addr (double-rewrite x86))))
              (equal (xlation-governing-entries-paddrs-for-pml4-table
                          lin-addr
                          base-addr (xw :mem index value x86))
                     (xlation-governing-entries-paddrs-for-pml4-table
                          lin-addr
                          base-addr (double-rewrite x86)))))

    Theorem: ia32e-la-to-pa-pml4-table-values-and-xw-mem-not-member

    (defthm ia32e-la-to-pa-pml4-table-values-and-xw-mem-not-member
     (implies
         (and (not (member-p index
                             (xlation-governing-entries-paddrs-for-pml4-table
                                  lin-addr
                                  base-addr (double-rewrite x86))))
              (physical-address-p base-addr)
              (equal (loghead 12 base-addr) 0)
              (canonical-address-p lin-addr))
         (and (equal (mv-nth 0
                             (ia32e-la-to-pa-pml4-table
                                  lin-addr base-addr wp smep
                                  smap ac nxe implicit-supervisor-access
                                  r-w-x cpl (xw :mem index value x86)))
                     (mv-nth 0
                             (ia32e-la-to-pa-pml4-table
                                  lin-addr base-addr wp smep
                                  smap ac nxe implicit-supervisor-access
                                  r-w-x cpl (double-rewrite x86))))
              (equal (mv-nth 1
                             (ia32e-la-to-pa-pml4-table
                                  lin-addr base-addr wp smep
                                  smap ac nxe implicit-supervisor-access
                                  r-w-x cpl (xw :mem index value x86)))
                     (mv-nth 1
                             (ia32e-la-to-pa-pml4-table
                                  lin-addr base-addr wp smep
                                  smap ac nxe implicit-supervisor-access
                                  r-w-x cpl (double-rewrite x86)))))))