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
|}.