Library mcertikos.trap.TTrapCSource
*********************************************************************** * * * 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.
extern unsigned int uctx_arg1(void);
extern unsigned int uctx_arg2(void);
extern unsigned int uctx_arg3(void);
extern unsigned int uctx_arg4(void);
extern unsigned int uctx_arg5(void);
extern void uctx_set_errno(unsigned int);
extern void uctx_set_retval1(unsigned int);
extern unsigned int syncsendto_chan_pre(unsigned int, unsigned int, unsigned int);
unsigned int trap_sendtochan_pre()
{
unsigned int chid;
unsigned int vaddr;
unsigned int scount;
unsigned int val;
chid = uctx_arg2();
vaddr = uctx_arg3();
scount = uctx_arg4();
val = syncsendto_chan_pre(chid, vaddr, scount);
return val;
}
Definition _chid := 100 % positive.
Definition _vaddr := 101 % positive.
Definition _scount := 102 % positive.
Definition _val := 103 % positive.
Definition trap_sendtochan_pre_body :=
(Ssequence
(Scall (Some _chid) (Evar uctx_arg2 (Tfunction Tnil tuint cc_default))
nil)
(Ssequence
(Scall (Some _vaddr)
(Evar uctx_arg3 (Tfunction Tnil tuint cc_default)) nil)
(Ssequence
(Scall (Some _scount)
(Evar uctx_arg4 (Tfunction Tnil tuint cc_default)) nil)
(Ssequence
(Scall (Some _val)
(Evar syncsendto_chan_pre (Tfunction
(Tcons tuint
(Tcons tuint (Tcons tuint Tnil)))
tuint cc_default))
((Etempvar _chid tuint) :: (Etempvar _vaddr tuint) ::
(Etempvar _scount tuint) :: nil))
(Sreturn (Some (Etempvar _val tuint))))))).
Definition f_trap_sendtochan_pre := {|
fn_return := tuint;
fn_callconv := cc_default;
fn_params := nil;
fn_vars := nil;
fn_temps := ((_chid, tuint) :: (_vaddr, tuint) :: (_scount, tuint) :: (_val, tuint) :: nil);
fn_body := trap_sendtochan_pre_body
|}.
extern void uctx_set_errno(unsigned int);
extern void uctx_set_retval1(unsigned int);
extern unsigned int syncsendto_chan_post(void);
void trap_sendtochan_post()
{
unsigned int val;
val = syncsendto_chan_post();
uctx_set_retval1(val);
uctx_set_errno(0);
}
Definition trap_sendtochan_post_body :=
(Ssequence
(Scall (Some _val)
(Evar syncsendto_chan_post (Tfunction Tnil tuint cc_default)) nil)
(Ssequence
(Scall None
(Evar uctx_set_retval1 (Tfunction (Tcons tuint Tnil) tvoid cc_default))
((Etempvar _val tuint) :: nil))
(Scall None
(Evar uctx_set_errno (Tfunction (Tcons tuint Tnil) tvoid cc_default))
((Econst_int (Int.repr 0) tint) :: nil)))).
Definition f_trap_sendtochan_post := {|
fn_return := tvoid;
fn_callconv := cc_default;
fn_params := nil;
fn_vars := nil;
fn_temps := ((_val, tuint) :: nil);
fn_body := trap_sendtochan_post_body
|}.
enum
{
SYS_puts = 0,
SYS_ring0_spawn,
SYS_spawn,
SYS_yield,
SYS_sleep,
SYS_disk_op,
SYS_disk_cap,
SYS_is_chan_ready,
SYS_send,
SYS_recv,
SYS_get_tsc_per_ms ,
SYS_hvm_run_vm ,
SYS_hvm_get_exitinfo ,
SYS_hvm_mmap ,
SYS_hvm_set_seg ,
SYS_hvm_set_reg ,
SYS_hvm_get_reg ,
SYS_hvm_get_next_eip ,
SYS_hvm_inject_event ,
SYS_hvm_check_int_shadow ,
SYS_hvm_check_pending_event ,
SYS_hvm_intercept_int_window ,
SYS_hvm_get_tsc_offset ,
SYS_hvm_set_tsc_offset ,
SYS_hvm_handle_rdmsr ,
SYS_hvm_handle_wrmsr ,
SYS_get_quota ,
SYS_getc,
SYS_putc,
MAX_SYSCALL_NR
};
#define E_INVAL_CALLNR 3
extern void sys_proc_create(void);
extern void sys_get_tsc_offset(void);
extern void sys_set_tsc_offset(void);
extern void sys_get_exitinfo(void);
extern void sys_mmap(void);
extern void sys_set_reg(void);
extern void sys_get_reg(void);
extern void sys_set_seg(void);
extern void sys_get_next_eip(void);
extern void sys_inject_event(void);
extern void sys_check_pending_event(void);
extern void sys_check_int_shadow(void);
extern void sys_intercept_int_window(void);
extern void sys_handle_rdmsr(void);
extern void sys_handle_wrmsr(void);
extern void sys_receive_chan(void);
extern void sys_get_quota(void);
extern void sys_putc (void);
extern void sys_getc (void);
extern void uctx_set_errno(unsigned int);
extern unsigned int uctx_arg1(void);
void
syscall_dispatch_c ()
{
unsigned int arg1;
arg1 = uctx_arg1 ();
if (arg1 == SYS_putc)
sys_putc ();
else if (arg1 == SYS_getc)
sys_getc ();
else if (arg1 == SYS_spawn)
sys_proc_create ();
else if (arg1 == SYS_get_quota)
sys_get_quota ();
else if (arg1 == SYS_recv)
sys_receive_chan ();
else if (arg1 == SYS_hvm_get_tsc_offset)
sys_get_tsc_offset ();
else if (arg1 == SYS_hvm_set_tsc_offset)
sys_set_tsc_offset ();
else if (arg1 == SYS_hvm_get_exitinfo)
sys_get_exitinfo ();
else if (arg1 == SYS_hvm_mmap)
sys_mmap ();
else if (arg1 == SYS_hvm_set_reg)
sys_set_reg ();
else if (arg1 == SYS_hvm_get_reg)
sys_get_reg ();
else if (arg1 == SYS_hvm_set_seg)
sys_set_seg ();
else if (arg1 == SYS_hvm_get_next_eip)
sys_get_next_eip ();
else if (arg1 == SYS_hvm_inject_event)
sys_inject_event ();
else if (arg1 == SYS_hvm_check_pending_event)
sys_check_pending_event ();
else if (arg1 == SYS_hvm_check_int_shadow)
sys_check_int_shadow ();
else if (arg1 == SYS_hvm_intercept_int_window)
sys_intercept_int_window ();
else if (arg1 == SYS_hvm_handle_rdmsr)
sys_handle_rdmsr ();
else if (arg1 == SYS_hvm_handle_wrmsr)
sys_handle_wrmsr ();
else
uctx_set_errno (E_INVAL_CALLNR);
}
Definition _arg1 := 1 % positive.
Definition syscall_dispatch_c_body :=
(Ssequence
(Scall (Some _arg1) (Evar uctx_arg1 (Tfunction Tnil tuint cc_default))
nil)
(Sifthenelse (Ebinop Oeq (Etempvar _arg1 tuint)
(Econst_int (Int.repr 28) tint) tint)
(Scall None (Evar sys_putc (Tfunction Tnil tvoid cc_default)) nil)
(Sifthenelse (Ebinop Oeq (Etempvar _arg1 tuint)
(Econst_int (Int.repr 27) tint) tint)
(Scall None (Evar sys_getc (Tfunction Tnil tvoid cc_default)) nil)
(Sifthenelse (Ebinop Oeq (Etempvar _arg1 tuint)
(Econst_int (Int.repr 2) tint) tint)
(Scall None (Evar sys_proc_create (Tfunction Tnil tvoid cc_default))
nil)
(Sifthenelse (Ebinop Oeq (Etempvar _arg1 tuint)
(Econst_int (Int.repr 22) tint) tint)
(Scall None
(Evar sys_get_tsc_offset (Tfunction Tnil tvoid cc_default)) nil)
(Sifthenelse (Ebinop Oeq (Etempvar _arg1 tuint)
(Econst_int (Int.repr 23) tint) tint)
(Scall None
(Evar sys_set_tsc_offset (Tfunction Tnil tvoid cc_default)) nil)
(Sifthenelse (Ebinop Oeq (Etempvar _arg1 tuint)
(Econst_int (Int.repr 12) tint) tint)
(Scall None
(Evar sys_get_exitinfo (Tfunction Tnil tvoid cc_default)) nil)
(Sifthenelse (Ebinop Oeq (Etempvar _arg1 tuint)
(Econst_int (Int.repr 13) tint) tint)
(Scall None (Evar sys_mmap (Tfunction Tnil tvoid cc_default))
nil)
(Sifthenelse (Ebinop Oeq (Etempvar _arg1 tuint)
(Econst_int (Int.repr 15) tint) tint)
(Scall None
(Evar sys_set_reg (Tfunction Tnil tvoid cc_default)) nil)
(Sifthenelse (Ebinop Oeq (Etempvar _arg1 tuint)
(Econst_int (Int.repr 16) tint) tint)
(Scall None
(Evar sys_get_reg (Tfunction Tnil tvoid cc_default)) nil)
(Sifthenelse (Ebinop Oeq (Etempvar _arg1 tuint)
(Econst_int (Int.repr 14) tint) tint)
(Scall None
(Evar sys_set_seg (Tfunction Tnil tvoid cc_default))
nil)
(Sifthenelse (Ebinop Oeq (Etempvar _arg1 tuint)
(Econst_int (Int.repr 17) tint) tint)
(Scall None
(Evar sys_get_next_eip (Tfunction Tnil tvoid
cc_default)) nil)
(Sifthenelse (Ebinop Oeq (Etempvar _arg1 tuint)
(Econst_int (Int.repr 18) tint) tint)
(Scall None
(Evar sys_inject_event (Tfunction Tnil tvoid
cc_default)) nil)
(Sifthenelse (Ebinop Oeq (Etempvar _arg1 tuint)
(Econst_int (Int.repr 20) tint) tint)
(Scall None
(Evar sys_check_pending_event (Tfunction Tnil
tvoid cc_default))
nil)
(Sifthenelse (Ebinop Oeq (Etempvar _arg1 tuint)
(Econst_int (Int.repr 19) tint) tint)
(Scall None
(Evar sys_check_int_shadow (Tfunction Tnil tvoid
cc_default)) nil)
(Sifthenelse (Ebinop Oeq (Etempvar _arg1 tuint)
(Econst_int (Int.repr 21) tint)
tint)
(Scall None
(Evar sys_intercept_int_window (Tfunction Tnil
tvoid
cc_default))
nil)
(Sifthenelse (Ebinop Oeq (Etempvar _arg1 tuint)
(Econst_int (Int.repr 24) tint)
tint)
(Scall None
(Evar sys_handle_rdmsr (Tfunction Tnil tvoid
cc_default)) nil)
(Sifthenelse (Ebinop Oeq (Etempvar _arg1 tuint)
(Econst_int (Int.repr 25) tint)
tint)
(Scall None
(Evar sys_handle_wrmsr (Tfunction Tnil
tvoid cc_default))
nil)
(Sifthenelse (Ebinop Oeq (Etempvar _arg1 tuint)
(Econst_int (Int.repr 26) tint)
tint)
(Scall None
(Evar sys_get_quota (Tfunction Tnil
tvoid cc_default))
nil)
(Sifthenelse (Ebinop Oeq
(Etempvar _arg1 tuint)
(Econst_int (Int.repr 9) tint)
tint)
(Scall None
(Evar sys_receive_chan (Tfunction
Tnil tvoid
cc_default))
nil)
(Scall None
(Evar uctx_set_errno (Tfunction
(Tcons tuint
Tnil) tvoid
cc_default))
((Econst_int (Int.repr 3) tint) ::
nil)))))))))))))))))))))).
Definition f_syscall_dispatch_c := {|
fn_return := tvoid;
fn_callconv := cc_default;
fn_params := nil;
fn_vars := nil;
fn_temps := ((_arg1, tuint) :: nil);
fn_body := syscall_dispatch_c_body
|}.