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
|
2015-11-02 00:00:32 +00:00
|
|
|
NotificationDecls_H
|
2014-07-14 19:32:44 +00:00
|
|
|
TCBDecls_H
|
|
|
|
CNode_H
|
|
|
|
VSpace_H
|
2020-10-31 06:30:58 +00:00
|
|
|
ArchTCB_H
|
2014-07-14 19:32:44 +00:00
|
|
|
begin
|
|
|
|
|
2016-05-04 03:28:20 +00:00
|
|
|
context begin interpretation Arch .
|
|
|
|
requalify_consts
|
2016-04-01 04:08:22 +00:00
|
|
|
decodeTransfer
|
|
|
|
gpRegisters
|
|
|
|
frameRegisters
|
|
|
|
getRegister
|
|
|
|
setNextPC
|
|
|
|
getRestartPC
|
|
|
|
sanitiseRegister
|
2017-05-02 01:12:26 +00:00
|
|
|
getSanitiseRegisterInfo
|
2016-04-01 04:08:22 +00:00
|
|
|
setRegister
|
|
|
|
performTransfer
|
|
|
|
msgInfoRegister
|
|
|
|
msgRegisters
|
2016-08-14 12:24:48 +00:00
|
|
|
fromVPtr
|
2017-11-29 00:24:17 +00:00
|
|
|
postModifyRegisters
|
2017-11-06 04:10:07 +00:00
|
|
|
tlsBaseRegister
|
2016-05-04 03:28:20 +00:00
|
|
|
end
|
2016-04-01 04:08:22 +00:00
|
|
|
|
2018-02-16 04:35:59 +00:00
|
|
|
abbreviation "mapMaybe \<equiv> option_map"
|
|
|
|
|
2017-05-02 01:12:26 +00:00
|
|
|
#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
|
|
|
|
2016-09-01 02:46:45 +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
|