(* * Copyright 2022, Proofcraft Pty Ltd * Copyright 2020, Data61, CSIRO (ABN 41 687 119 230) * * SPDX-License-Identifier: GPL-2.0-only *) chapter \AARCH64 Object Invocations\ theory ArchInvocation_A imports Structures_A begin context Arch begin global_naming AARCH64_A text \ These datatypes encode the arguments to the various possible AARCH64-specific system calls. Selectors are defined for various fields for convenience elsewhere. \ datatype vspace_invocation = VSpaceNothing | VSpaceFlush (vs_flush_type : flush_type) (vs_flush_start : vspace_ref) (vs_flush_end : vspace_ref) (vs_flush_pstart : paddr) (vs_flush_space : obj_ref) (vs_flush_asid : asid) datatype page_table_invocation = PageTableMap (pt_inv_cap : arch_cap) (pt_inv_cslot : cslot_ptr) (pt_map_pte : pte) (pt_map_slot : obj_ref) (pt_map_level : vm_level) | PageTableUnmap (pt_inv_cap : arch_cap) (pt_inv_cslot : cslot_ptr) datatype asid_control_invocation = MakePool obj_ref cslot_ptr cslot_ptr asid datatype asid_pool_invocation = Assign asid obj_ref cslot_ptr datatype page_invocation = PageMap (pg_inv_cap : arch_cap) (pg_inv_cslot : cslot_ptr) (pg_inv_entries : "pte \ obj_ref \ vm_level") | PageUnmap (pg_inv_cap : arch_cap) (pg_inv_cslot : cslot_ptr) | PageGetAddr (pg_get_paddr : obj_ref) | PageFlush (pg_flush_type : flush_type) (pg_flush_start : vspace_ref) (pg_flush_end : vspace_ref) (pg_flush_pStart : paddr) (pg_flush_space : obj_ref) (pg_flush_asid : asid) datatype vcpu_invocation = VCPUSetTCB (vcpu_inv_vcpu : obj_ref) (vcpu_inv_tcb : obj_ref) | VCPUInjectIRQ (vcpu_inv_vcpu : obj_ref) (vcpu_inv_idx : nat) (vcpu_inv_irq : virq) | VCPUReadRegister (vcpu_inv_vcpu : obj_ref) (vcpu_inv_reg : vcpureg) | VCPUWriteRegister (vcpu_inv_vcpu : obj_ref) (vcpu_inv_reg : vcpureg) (vcpu_inv_val : machine_word) | VCPUAckVPPI (vcpu_inv_vcpu : obj_ref) (vcpu_inv_eirq : vppievent_irq) datatype arch_invocation = InvokeVSpace vspace_invocation | InvokePageTable page_table_invocation | InvokePage page_invocation | InvokeASIDControl asid_control_invocation | InvokeASIDPool asid_pool_invocation | InvokeVCPU vcpu_invocation datatype arch_copy_register_sets = ARMNoExtraRegisters definition ArchDefaultExtraRegisters :: arch_copy_register_sets where "ArchDefaultExtraRegisters = ARMNoExtraRegisters" datatype arch_irq_control_invocation = ARMIRQControlInvocation irq cslot_ptr cslot_ptr bool end end