Library mcertikos.mm.PTNewGenLinkSource

Require Import liblayers.compat.CompatLayers.
Require Import liblayers.compat.CompatClightSem.
Require Import LAsmModuleSemDef.
Require Import CompCertiKOS.
Require Import GlobIdent.
Require Import CDataTypes.
Require Import MPTInitCSource.

Require Import CompCertiKOSproof.
Require Import RealParams.
Require Import I64Layer.

Require Import MPTInit.

Section WITHCOMPCERTIKOS.

  Context `{compcertikos_prf: CompCertiKOS}.

  Context `{real_params_prf : RealParams}.
  Context `{oracle_prop: MultiOracleProp}.

  Definition MPTNew_impl: res LAsm.module :=
    M_pt_resv <- CompCertiKOS.transf_module (pt_resv f_pt_resv);
    M_pt_resv2 <- CompCertiKOS.transf_module (pt_resv2 f_pt_resv2);
    M_pt_new <- CompCertiKOS.transf_module (pt_new f_pt_new);
    
    M_pmap_init <- CompCertiKOS.transf_module (pmap_init f_pmap_init);
    M <- ret ((M_pt_resv M_pt_resv2 M_pt_new M_pmap_init) );
    _ <- eassert nil (LayerOK (M (mptinit L64) mptinit L64));
    
watch out parentheses here:
    ret (
        
group primitives according to the global variables that they use
        M
for L64 and other passthrough primitives
      ).

End WITHCOMPCERTIKOS.