lh-l4v/spec/design/skel/TCB_H.thy

50 lines
1.0 KiB
Plaintext
Raw Normal View History

2014-07-14 19:32:44 +00:00
(*
* Copyright 2014, General Dynamics C4 Systems
*
2020-03-09 06:18:30 +00:00
* SPDX-License-Identifier: GPL-2.0-only
2014-07-14 19:32:44 +00:00
*)
2015-05-16 09:52:49 +00:00
chapter "Thread Control Blocks"
2014-07-14 19:32:44 +00:00
theory TCB_H
imports
NotificationDecls_H
2014-07-14 19:32:44 +00:00
TCBDecls_H
CNode_H
VSpace_H
ArchTCB_H
2014-07-14 19:32:44 +00:00
begin
context begin interpretation Arch .
requalify_consts
decodeTransfer
gpRegisters
frameRegisters
getRegister
setNextPC
getRestartPC
sanitiseRegister
getSanitiseRegisterInfo
setRegister
performTransfer
msgInfoRegister
msgRegisters
fromVPtr
postModifyRegisters
tlsBaseRegister
end
abbreviation "mapMaybe \<equiv> option_map"
#INCLUDE_HASKELL SEL4/Object/TCB.lhs Arch= bodies_only NOT liftFnMaybe assertDerived archThreadGet archThreadSet asUser sanitiseRegister getSanitiseRegisterInfo
2014-07-14 19:32:44 +00:00
defs asUser_def:
"asUser tptr f\<equiv> (do
uc \<leftarrow> threadGet (atcbContextGet o tcbArch) tptr;
(a, uc') \<leftarrow> select_f (f uc);
threadSet (\<lambda> tcb. tcb \<lparr> tcbArch := atcbContextSet uc' (tcbArch tcb)\<rparr>) tptr;
return a
od)"
2014-07-14 19:32:44 +00:00
end