Library mcertikos.driver.CertiKOS
*********************************************************************** * * * The CertiKOS Certified Kit Operating System * * * * The FLINT Group, Yale University * * * * Copyright The FLINT Group, Yale University. All rights reserved. * * This file is distributed under the terms of the Yale University * * Non-Commercial License Agreement. * * * ***********************************************************************
Require Import Coqlib.
Require Wfsimpl.
Require AST.
Require Iteration.
Require Floats.
Require SelectLong.
Require RTLgen.
Require Inlining.
Require ValueDomain.
Require Tailcall.
Require Allocation.
Require Ctypes.
Require Csyntax.
Require Int31.
Require Wfsimpl.
Require AST.
Require Iteration.
Require Floats.
Require SelectLong.
Require RTLgen.
Require Inlining.
Require ValueDomain.
Require Tailcall.
Require Allocation.
Require Ctypes.
Require Csyntax.
Require Int31.
CompCertX:test-compcert-param-memory instantiations of extractees with concrete memory model
Require InitializersImpl.
Require Import mcertikos.driver.CertiKOSImpl.
Require Import liblayers.compcertx.ErrorMonad.
Require Import liblayers.logic.Modules.
Require Import liblayers.logic.Layers.
Require Import String.
Require Import mcertikos.clib.CDataTypes.
Require Import mcertikos.devdrivers.ConsoleBuffIntroGenLinkSource.
Require Import mcertikos.devdrivers.AbsConsoleBuffIntroGenLinkSource.
Require Import mcertikos.devdrivers.SerialIntroGenLinkSource.
Require Import mcertikos.devdrivers.SerialGenLinkSource.
Require Import mcertikos.devdrivers.IoApicGenLinkSource.
Require Import mcertikos.devdrivers.LApicGenLinkSource.
Require Import mcertikos.devdrivers.ConsoleGenLinkSource.
Require Import mcertikos.devdrivers.HandlerIntroGenLinkSource.
Require Import mcertikos.devdrivers.HandlerSwGenLinkSource.
Require Import mcertikos.devdrivers.HandlerAsmGenLinkSource.
Require Import mcertikos.devdrivers.HandlerCxtGenLinkSource.
Require Import mcertikos.devdrivers.HandlerOpGenLinkSource.
Require Import mcertikos.devdrivers.HandlerGenLinkSource.
Require Import mcertikos.devdrivers.AbsHandlerGenLinkSource.
Require Import mcertikos.mm.ContainerGenLinkSource.
Require Import mcertikos.mm.ALInitGenLinkSource.
Require Import mcertikos.mm.ALOpGenLinkSource.
Require Import mcertikos.mm.ALGenLinkSource.
Require Import mcertikos.mm.PTIntroGenLinkSource.
Require Import mcertikos.mm.PTOpGenLinkSource.
Require Import mcertikos.mm.PTCommGenLinkSource.
Require Import mcertikos.mm.PTKernGenLinkSource.
Require Import mcertikos.mm.PTInitGenLinkSource.
Require Import mcertikos.mm.PTBitGenLinkSource.
Require Import mcertikos.mm.PTNewGenLinkSource.
Require Import mcertikos.mm.ShareIntroGenLinkSource.
Require Import mcertikos.mm.ShareOpGenLinkSource.
Require Import mcertikos.mm.ShareGenLinkSource.
Require Import mcertikos.proc.KContextGenLinkSource.
Require Import mcertikos.proc.KContextNewGenLinkSource.
Require Import mcertikos.proc.ThreadIntroGenLinkSource.
Require Import mcertikos.proc.ThreadInitGenLinkSource.
Require Import mcertikos.proc.QueueIntroGenLinkSource.
Require Import mcertikos.proc.QueueInitGenLinkSource.
Require Import mcertikos.proc.CurIDGenLinkSource.
Require Import mcertikos.proc.ThreadSchedGenLinkSource.
Require Import mcertikos.proc.ThreadGenLinkSource.
Require Import mcertikos.proc.IPCIntroGenLinkSource.
Require Import mcertikos.proc.IPCGenLinkSource.
Require Import mcertikos.proc.UCtxtIntroGenLinkSource.
Require Import mcertikos.proc.ProcGenLinkSource.
Require Import mcertikos.trap.TrapArgGenLinkSource.
Require Import mcertikos.trap.TrapGenLinkSource.
Require Import mcertikos.trap.DispatchGenLinkSource.
Require Import mcertikos.trap.SysCallGenLinkSource.
Require Import mcertikos.virt.intel.EPTIntroGenLinkSource.
Require Import mcertikos.virt.intel.EPTOpGenLinkSource.
Require Import mcertikos.virt.intel.EPTInitGenLinkSource.
Require Import mcertikos.virt.intel.VMCSIntroGenLinkSource.
Require Import mcertikos.virt.intel.VMCSInitGenLinkSource.
Require Import mcertikos.virt.intel.VMXIntroGenLinkSource.
Require Import mcertikos.virt.intel.VMXInitGenLinkSource.
Require Import RealParamsImpl.
Require Export CompCertiKOSproofImpl.
Section WITHCOMPCERTIKOS.
Require Import mcertikos.driver.CertiKOSImpl.
Require Import liblayers.compcertx.ErrorMonad.
Require Import liblayers.logic.Modules.
Require Import liblayers.logic.Layers.
Require Import String.
Require Import mcertikos.clib.CDataTypes.
Require Import mcertikos.devdrivers.ConsoleBuffIntroGenLinkSource.
Require Import mcertikos.devdrivers.AbsConsoleBuffIntroGenLinkSource.
Require Import mcertikos.devdrivers.SerialIntroGenLinkSource.
Require Import mcertikos.devdrivers.SerialGenLinkSource.
Require Import mcertikos.devdrivers.IoApicGenLinkSource.
Require Import mcertikos.devdrivers.LApicGenLinkSource.
Require Import mcertikos.devdrivers.ConsoleGenLinkSource.
Require Import mcertikos.devdrivers.HandlerIntroGenLinkSource.
Require Import mcertikos.devdrivers.HandlerSwGenLinkSource.
Require Import mcertikos.devdrivers.HandlerAsmGenLinkSource.
Require Import mcertikos.devdrivers.HandlerCxtGenLinkSource.
Require Import mcertikos.devdrivers.HandlerOpGenLinkSource.
Require Import mcertikos.devdrivers.HandlerGenLinkSource.
Require Import mcertikos.devdrivers.AbsHandlerGenLinkSource.
Require Import mcertikos.mm.ContainerGenLinkSource.
Require Import mcertikos.mm.ALInitGenLinkSource.
Require Import mcertikos.mm.ALOpGenLinkSource.
Require Import mcertikos.mm.ALGenLinkSource.
Require Import mcertikos.mm.PTIntroGenLinkSource.
Require Import mcertikos.mm.PTOpGenLinkSource.
Require Import mcertikos.mm.PTCommGenLinkSource.
Require Import mcertikos.mm.PTKernGenLinkSource.
Require Import mcertikos.mm.PTInitGenLinkSource.
Require Import mcertikos.mm.PTBitGenLinkSource.
Require Import mcertikos.mm.PTNewGenLinkSource.
Require Import mcertikos.mm.ShareIntroGenLinkSource.
Require Import mcertikos.mm.ShareOpGenLinkSource.
Require Import mcertikos.mm.ShareGenLinkSource.
Require Import mcertikos.proc.KContextGenLinkSource.
Require Import mcertikos.proc.KContextNewGenLinkSource.
Require Import mcertikos.proc.ThreadIntroGenLinkSource.
Require Import mcertikos.proc.ThreadInitGenLinkSource.
Require Import mcertikos.proc.QueueIntroGenLinkSource.
Require Import mcertikos.proc.QueueInitGenLinkSource.
Require Import mcertikos.proc.CurIDGenLinkSource.
Require Import mcertikos.proc.ThreadSchedGenLinkSource.
Require Import mcertikos.proc.ThreadGenLinkSource.
Require Import mcertikos.proc.IPCIntroGenLinkSource.
Require Import mcertikos.proc.IPCGenLinkSource.
Require Import mcertikos.proc.UCtxtIntroGenLinkSource.
Require Import mcertikos.proc.ProcGenLinkSource.
Require Import mcertikos.trap.TrapArgGenLinkSource.
Require Import mcertikos.trap.TrapGenLinkSource.
Require Import mcertikos.trap.DispatchGenLinkSource.
Require Import mcertikos.trap.SysCallGenLinkSource.
Require Import mcertikos.virt.intel.EPTIntroGenLinkSource.
Require Import mcertikos.virt.intel.EPTOpGenLinkSource.
Require Import mcertikos.virt.intel.EPTInitGenLinkSource.
Require Import mcertikos.virt.intel.VMCSIntroGenLinkSource.
Require Import mcertikos.virt.intel.VMCSInitGenLinkSource.
Require Import mcertikos.virt.intel.VMXIntroGenLinkSource.
Require Import mcertikos.virt.intel.VMXInitGenLinkSource.
Require Import RealParamsImpl.
Require Export CompCertiKOSproofImpl.
Section WITHCOMPCERTIKOS.
Can be useful for debugging: <
Definition add_loc {A} s (r: res A): res A :=
match r with
| OK a => OK a
| Error e => Error (MSG (append s ": ") :: e)
end.
>
Definition add_loc {A} (s: string) (r: res A) := r.
Local Notation "M ⊗ Mrest" := (Mrest ⊕ M)
(right associativity, at level 35, only parsing).
Definition certikos_plus_ctxt CTXT: res LAsm.module :=
M4010 <- add_loc "DConsoleBuffIntro" DConsoleBuffIntro_impl;
M4020 <- add_loc "DAbsConsoleBuffIntro" DAbsConsoleBuffIntro_impl;
M4030 <- add_loc "DSerialIntro" DSerialIntro_impl;
M4040 <- add_loc "DSerial" DSerial_impl;
M4050 <- add_loc "DIoApic" DIoApic_impl;
M4060 <- add_loc "DLApic" DLApic_impl;
M4070 <- add_loc "DConsole" DConsole_impl;
M4080 <- add_loc "DHandlerIntro" DHandlerIntro_impl;
M4081 <- add_loc "DHandlerSw" DHandlerSw_impl;
M4082 <- add_loc "DHandlerAsm" DHandlerAsm_impl;
M4083 <- add_loc "DHandlerCxt" DHandlerCxt_impl;
M4085 <- add_loc "DHandlerOp" DHandlerOp_impl;
M4090 <- add_loc "DHandler" DHandler_impl;
M4100 <- add_loc "DAbsHandler" DAbsHandler_impl;
M0010 <- add_loc "MContainer" MContainer_impl;
M0020 <- add_loc "MALInit" MALInit_impl;
M0030 <- add_loc "MALOp" MALOp_impl;
M0040 <- add_loc "MALT" MALT_impl;
M0050 <- add_loc "MPTIntro" MPTIntro_impl;
M0060 <- add_loc "MPTOp" MPTOp_impl;
M0070 <- add_loc "MPTCommon" MPTCommon_impl;
M0080 <- add_loc "MPTKern" MPTKern_impl;
M0090 <- add_loc "MPTInit" MPTInit_impl;
M0100 <- add_loc "MPTBit" MPTBit_impl;
M0110 <- add_loc "MPTNew" MPTNew_impl;
M0120 <- add_loc "MShareIntro" MShareIntro_impl;
M0130 <- add_loc "MShareOp" MShareOp_impl;
M0140 <- add_loc "MShare" MShare_impl;
M1000 <- add_loc "PKContext" PKContext_impl;
M1010 <- add_loc "PKContextNew" PKContextNew_impl;
M1020 <- add_loc "PThreadIntro" PThreadIntro_impl;
M1030 <- add_loc "PThreadInit" PThreadInit_impl;
M1040 <- add_loc "PQueueIntro" PQueueIntro_impl;
M1050 <- add_loc "PQueueInit" PQueueInit_impl;
M1060 <- add_loc "PCurID" PCurID_impl;
M1070 <- add_loc "PThreadSched" PThreadSched_impl;
M1080 <- add_loc "PThread" PThread_impl;
M1090 <- add_loc "PIPCIntro" PIPCIntro_impl;
M1100 <- add_loc "PIPC" PIPC_impl;
M1110 <- add_loc "PUCtxtIntro" PUCtxtIntro_impl;
M1120 <- add_loc "PProc" PProc_impl;
M2000 <- add_loc "VEPTIntro" VEPTIntro_impl;
M2010 <- add_loc "VEPTOp" VEPTOp_impl;
M2020 <- add_loc "VEPTInit" VEPTInit_impl;
M2030 <- add_loc "VVMCSIntro" VVMCSIntro_impl;
M2040 <- add_loc "VVMCSInit" VVMCSInit_impl;
M2050 <- add_loc "VVMXIntro" VVMXIntro_impl;
M2060 <- add_loc "VVMXInit" VVMXInit_impl;
M3000 <- add_loc "TTrapArg" TTrapArg_impl;
M3010 <- add_loc "TTrap" TTrap_impl;
M3020 <- add_loc "TDispatch" TDispatch_impl;
M3030 <- add_loc "TSysCall" TSysCall_impl;
ret (M4010 ⊗ M4020 ⊗ M4030 ⊗ M4040 ⊗ M4050 ⊗ M4060 ⊗ M4070 ⊗ M4080 ⊗ M4081 ⊗ M4082 ⊗ M4083 ⊗ M4085 ⊗ M4090 ⊗ M4100 ⊗ M0010 ⊗ M0020 ⊗ M0030 ⊗ M0040 ⊗ M0050 ⊗ M0060 ⊗ M0070 ⊗
M0080 ⊗ M0090 ⊗ M0100 ⊗ M0110 ⊗ M0120 ⊗ M0130 ⊗ M0140 ⊗
M1000 ⊗ M1010 ⊗ M1020 ⊗ M1030 ⊗ M1040 ⊗ M1050 ⊗ ∅ ⊗ M1060 ⊗ M1070 ⊗
M1080 ⊗ M1090 ⊗ M1100 ⊗ M1110 ⊗ M1120 ⊗
M2000 ⊗ M2010 ⊗ M2020 ⊗ M2030 ⊗ M2040 ⊗ M2050 ⊗ M2060 ⊗
M3000 ⊗ M3010 ⊗ M3020 ⊗ M3030 ⊗
CTXT).
Definition certikos := certikos_plus_ctxt ∅.
End WITHCOMPCERTIKOS.
Require Import OracleInstances.
Extract Constant LEnv ⇒ "fun _ -> failwith ""LEnv cannot be utilized in the code.""".
Local Notation "M ⊗ Mrest" := (Mrest ⊕ M)
(right associativity, at level 35, only parsing).
Definition certikos_plus_ctxt CTXT: res LAsm.module :=
M4010 <- add_loc "DConsoleBuffIntro" DConsoleBuffIntro_impl;
M4020 <- add_loc "DAbsConsoleBuffIntro" DAbsConsoleBuffIntro_impl;
M4030 <- add_loc "DSerialIntro" DSerialIntro_impl;
M4040 <- add_loc "DSerial" DSerial_impl;
M4050 <- add_loc "DIoApic" DIoApic_impl;
M4060 <- add_loc "DLApic" DLApic_impl;
M4070 <- add_loc "DConsole" DConsole_impl;
M4080 <- add_loc "DHandlerIntro" DHandlerIntro_impl;
M4081 <- add_loc "DHandlerSw" DHandlerSw_impl;
M4082 <- add_loc "DHandlerAsm" DHandlerAsm_impl;
M4083 <- add_loc "DHandlerCxt" DHandlerCxt_impl;
M4085 <- add_loc "DHandlerOp" DHandlerOp_impl;
M4090 <- add_loc "DHandler" DHandler_impl;
M4100 <- add_loc "DAbsHandler" DAbsHandler_impl;
M0010 <- add_loc "MContainer" MContainer_impl;
M0020 <- add_loc "MALInit" MALInit_impl;
M0030 <- add_loc "MALOp" MALOp_impl;
M0040 <- add_loc "MALT" MALT_impl;
M0050 <- add_loc "MPTIntro" MPTIntro_impl;
M0060 <- add_loc "MPTOp" MPTOp_impl;
M0070 <- add_loc "MPTCommon" MPTCommon_impl;
M0080 <- add_loc "MPTKern" MPTKern_impl;
M0090 <- add_loc "MPTInit" MPTInit_impl;
M0100 <- add_loc "MPTBit" MPTBit_impl;
M0110 <- add_loc "MPTNew" MPTNew_impl;
M0120 <- add_loc "MShareIntro" MShareIntro_impl;
M0130 <- add_loc "MShareOp" MShareOp_impl;
M0140 <- add_loc "MShare" MShare_impl;
M1000 <- add_loc "PKContext" PKContext_impl;
M1010 <- add_loc "PKContextNew" PKContextNew_impl;
M1020 <- add_loc "PThreadIntro" PThreadIntro_impl;
M1030 <- add_loc "PThreadInit" PThreadInit_impl;
M1040 <- add_loc "PQueueIntro" PQueueIntro_impl;
M1050 <- add_loc "PQueueInit" PQueueInit_impl;
M1060 <- add_loc "PCurID" PCurID_impl;
M1070 <- add_loc "PThreadSched" PThreadSched_impl;
M1080 <- add_loc "PThread" PThread_impl;
M1090 <- add_loc "PIPCIntro" PIPCIntro_impl;
M1100 <- add_loc "PIPC" PIPC_impl;
M1110 <- add_loc "PUCtxtIntro" PUCtxtIntro_impl;
M1120 <- add_loc "PProc" PProc_impl;
M2000 <- add_loc "VEPTIntro" VEPTIntro_impl;
M2010 <- add_loc "VEPTOp" VEPTOp_impl;
M2020 <- add_loc "VEPTInit" VEPTInit_impl;
M2030 <- add_loc "VVMCSIntro" VVMCSIntro_impl;
M2040 <- add_loc "VVMCSInit" VVMCSInit_impl;
M2050 <- add_loc "VVMXIntro" VVMXIntro_impl;
M2060 <- add_loc "VVMXInit" VVMXInit_impl;
M3000 <- add_loc "TTrapArg" TTrapArg_impl;
M3010 <- add_loc "TTrap" TTrap_impl;
M3020 <- add_loc "TDispatch" TDispatch_impl;
M3030 <- add_loc "TSysCall" TSysCall_impl;
ret (M4010 ⊗ M4020 ⊗ M4030 ⊗ M4040 ⊗ M4050 ⊗ M4060 ⊗ M4070 ⊗ M4080 ⊗ M4081 ⊗ M4082 ⊗ M4083 ⊗ M4085 ⊗ M4090 ⊗ M4100 ⊗ M0010 ⊗ M0020 ⊗ M0030 ⊗ M0040 ⊗ M0050 ⊗ M0060 ⊗ M0070 ⊗
M0080 ⊗ M0090 ⊗ M0100 ⊗ M0110 ⊗ M0120 ⊗ M0130 ⊗ M0140 ⊗
M1000 ⊗ M1010 ⊗ M1020 ⊗ M1030 ⊗ M1040 ⊗ M1050 ⊗ ∅ ⊗ M1060 ⊗ M1070 ⊗
M1080 ⊗ M1090 ⊗ M1100 ⊗ M1110 ⊗ M1120 ⊗
M2000 ⊗ M2010 ⊗ M2020 ⊗ M2030 ⊗ M2040 ⊗ M2050 ⊗ M2060 ⊗
M3000 ⊗ M3010 ⊗ M3020 ⊗ M3030 ⊗
CTXT).
Definition certikos := certikos_plus_ctxt ∅.
End WITHCOMPCERTIKOS.
Require Import OracleInstances.
Extract Constant LEnv ⇒ "fun _ -> failwith ""LEnv cannot be utilized in the code.""".