Library mcertikos.mm.MContainerCSource
*********************************************************************** * * * 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 Import AST.
Require Import Integers.
Require Import Values.
Require Import Cop.
Require Import Clight.
Require Import CDataTypes.
Require Import Ctypes.
unsigned int get_nps() { return NPS_LOC; }
Definition get_nps_body : statement :=
Sreturn (Some (Evar NPS_LOC tint)).
Definition f_get_nps := {|
fn_return := tint;
fn_callconv := cc_default;
fn_params := nil;
fn_vars := nil;
fn_temps := nil;
fn_body := get_nps_body
|}.
void set_nps(unsigned int newnps) { NPS_LOC = newnps; }
Let tnewnps: ident := 1 % positive.
Definition set_nps_body : statement :=
Sassign (Evar NPS_LOC tint) (Etempvar tnewnps tint).
Definition f_set_nps := {|
fn_return := Tvoid;
fn_callconv := cc_default;
fn_params := ((tnewnps, tint) :: nil);
fn_vars := nil;
fn_temps := nil;
fn_body := set_nps_body
|}.
struct A { unsigned int isnorm; unsigned int allocated; unsigned int c; }; extern struct A AT_LOC[maxpage]; unsigned int is_norm (unsigned int is_norm_index) { unsigned int tisnorm; tisnorm = AT_LOC[is_norm_index].isnorm; if (tisnorm != 0) { if (tisnorm == 1) tisnorm = 0; else tisnorm = 1; } return tisnorm; }
Let tisnorm: ident := 2 % positive.
Let tis_norm_index: ident := 3 % positive.
Definition is_norm_body : statement :=
(Ssequence
(Sset tisnorm (Efield (Ederef
(Ebinop Oadd (Evar AT_LOC (tarray t_struct_A maxpage))
(Etempvar tis_norm_index tint) (tptr t_struct_A)) t_struct_A)
A_isnorm_ident tint)
)
(Ssequence
(Sifthenelse
(Ebinop One (Etempvar tisnorm tint) (Econst_int (Int.repr 0) tint) tint)
(Sifthenelse
(Ebinop Oeq (Etempvar tisnorm tint) (Econst_int (Int.repr 1) tint) tint)
(Sset tisnorm (Econst_int (Int.repr 0) tint))
(Sset tisnorm (Econst_int (Int.repr 1) tint))
)
Sskip
)
(Sreturn (Some (Etempvar tisnorm tint)))))
.
Definition f_is_norm := {|
fn_return := tint;
fn_callconv := cc_default;
fn_params := ((tis_norm_index, tint) :: nil);
fn_vars := nil;
fn_temps := ((tisnorm, tint) :: nil);
fn_body := is_norm_body
|}.
struct A { unsigned int isnorm; unsigned int allocated; unsigned int c; }; extern struct A AT_LOC[maxpage]; void set_norm (unsigned int set_norm_index, unsigned int norm_val) { AT_LOC[set_norm_index].isnorm = norm_val; AT_LOC[set_norm_index].allocated = 0; AT_LOC[set_norm_index].c = 0; }
Let tset_norm_index: ident := 4 % positive.
Let tnorm_val: ident := 5 % positive.
Definition set_norm_body: statement :=
(Ssequence
(Sassign (Efield (Ederef (Ebinop Oadd (Evar AT_LOC (tarray t_struct_A maxpage))
(Etempvar tset_norm_index tint) (tptr t_struct_A)) t_struct_A) A_isnorm_ident tint) (Etempvar tnorm_val tint))
(Ssequence
(Sassign (Efield (Ederef (Ebinop Oadd (Evar AT_LOC (tarray t_struct_A maxpage))
(Etempvar tset_norm_index tint) (tptr t_struct_A)) t_struct_A) A_allocated_ident tint) (Econst_int (Int.repr 0) tint))
(Sassign (Efield (Ederef (Ebinop Oadd (Evar AT_LOC (tarray t_struct_A maxpage))
(Etempvar tset_norm_index tint) (tptr t_struct_A)) t_struct_A) A_c_ident tint) (Econst_int (Int.repr 0) tint))
))
.
Definition f_set_norm := {|
fn_return := Tvoid;
fn_callconv := cc_default;
fn_params := ((tset_norm_index, tint) :: (tnorm_val, tint) :: nil);
fn_vars := nil;
fn_temps := nil;
fn_body := set_norm_body
|}.
struct A { unsigned int isnorm; unsigned int allocated; unsigned int c; }; extern struct A AT_LOC[maxpage]; unsigned int at_get (unsigned int at_get_index) { unsigned int allocated; allocated = AT_LOC[at_get_index].allocated; if (allocated != 0) allocated = 1; return allocated; }
Let tallocated: ident := 6 % positive.
Let tat_get_index: ident := 7 % positive.
Definition at_get_body : statement :=
(Ssequence
(Sset tallocated (Efield (Ederef (Ebinop Oadd (Evar AT_LOC (tarray t_struct_A maxpage))
(Etempvar tat_get_index tint) (tptr t_struct_A)) t_struct_A) A_allocated_ident tint))
(Ssequence
(Sifthenelse
(Ebinop One (Etempvar tallocated tint) (Econst_int (Int.repr 0) tint) tint)
(Sset tallocated (Econst_int (Int.repr 1) tint))
Sskip)
(Sreturn (Some (Etempvar tallocated tint)))))
.
Definition f_at_get := {|
fn_return := tint;
fn_callconv := cc_default;
fn_params := ((tat_get_index, tint) :: nil);
fn_vars := nil;
fn_temps := ((tallocated, tint) :: nil);
fn_body := at_get_body
|}.
struct A { int isnorm; int allocated; unsigned int c; }; extern struct A AT_LOC[1048576]; void at_set (unsigned int at_set_index, unsigned int allocated_val) { AT_LOC[at_set_index].allocated = allocated_val; }
Let tat_set_index: ident := 8 % positive.
Let tallocated_val: ident := 9 % positive.
Definition at_set_body: statement :=
(Sassign (Efield (Ederef (Ebinop Oadd (Evar AT_LOC (tarray t_struct_A maxpage))
(Etempvar tat_set_index tint) (tptr t_struct_A)) t_struct_A) A_allocated_ident tint) (Etempvar tallocated_val tint))
.
Definition f_at_set := {|
fn_return := Tvoid;
fn_callconv := cc_default;
fn_params := ((tat_set_index, tint) :: (tallocated_val, tint) :: nil);
fn_vars := nil;
fn_temps := nil;
fn_body := at_set_body
|}.
struct A { unsigned int isnorm; unsigned int allocated; unsigned int c; }; extern struct A AT_LOC[maxpage]; unsigned int at_get_c (unsigned int at_get_c_index) { unsigned int c; c = AT_LOC[at_get_c_index].c; return c; }
Let tc: ident := 10 % positive.
Let tat_get_c_index: ident := 11 % positive.
Definition at_get_c_body : statement :=
(Ssequence
(Sset tc (Efield (Ederef (Ebinop Oadd (Evar AT_LOC (tarray t_struct_A maxpage))
(Etempvar tat_get_c_index tint) (tptr t_struct_A)) t_struct_A) A_c_ident tint))
(Sreturn (Some (Etempvar tc tint))))
.
Definition f_at_get_c := {|
fn_return := tint;
fn_callconv := cc_default;
fn_params := ((tat_get_c_index, tint) :: nil);
fn_vars := nil;
fn_temps := ((tc, tint) :: nil);
fn_body := at_get_c_body
|}.
struct A { int isnorm; int allocated; unsigned int c; }; extern struct A AT_LOC[1048576]; void at_set_c (unsigned int at_set_c_index, unsigned int c_val) { AT_LOC[at_set_c_index].c = c_val; }
Let tat_set_c_index: ident := 12 % positive.
Let tc_val: ident := 13 % positive.
Definition at_set_c_body: statement :=
(Sassign (Efield (Ederef (Ebinop Oadd (Evar AT_LOC (tarray t_struct_A maxpage))
(Etempvar tat_set_c_index tint) (tptr t_struct_A)) t_struct_A) A_c_ident tint) (Etempvar tc_val tint))
.
Definition f_at_set_c := {|
fn_return := Tvoid;
fn_callconv := cc_default;
fn_params := ((tat_set_c_index, tint) :: (tc_val, tint) :: nil);
fn_vars := nil;
fn_temps := nil;
fn_body := at_set_c_body
|}.