seL4/include
Ryan Barry 4ce6cbe9ea Don't clobber msgInfo register
The messageinfo register is set to 0 after processing a kernel object
invocation if the invocation set the thread state to restart. This is a
problem if the kernel object invocation had also set the message info
register.

The existing convention in this case is for the kernel invocation to
set the thread state to running right before it returns to avoid the
problematic code path. However, there are some invocations that do not
follow this convention and their message info register gets clobbered.
There are also some invocations that set message registers without
setting the message info register at all, or that do not guard their
message register updates with a call parameter.

This commit fixes these issues modulo setConsumed, which we defer to a
later point.

Co-authored-by: Jimmy Brush <code@jimmah.com>
Signed-off-by: Ryan Barry <ryan.barry@proofcraft.systems>
2022-06-17 15:31:10 +10:00
..
32/mode replacing all ifndef with pargma once 2020-03-23 11:04:46 +11:00
64/mode replacing all ifndef with pargma once 2020-03-23 11:04:46 +11:00
api print value for unknown entry reason 2022-03-16 16:00:42 +11:00
arch Don't clobber msgInfo register 2022-06-17 15:31:10 +10:00
benchmark benchmark: config opt. name to enable log buffer 2022-03-31 08:56:06 +11:00
drivers allwinnerA20: switch to the ARM generic timer 2021-10-28 08:30:41 +11:00
fastpath replacing all ifndef with pargma once 2020-03-23 11:04:46 +11:00
kernel consolidate idle thread prototypes 2022-01-19 09:35:27 +11:00
machine debug: restructure kernel console handling 2021-05-14 13:13:36 +10:00
model mcs: Create ksIdleSC global variable 2022-01-04 19:00:24 +11:00
object Trivial: Remove now incorrect comment 2021-09-10 20:48:04 +10:00
plat pc99: use ackInterrupt() 2021-10-01 15:18:51 +10:00
smp create helper function handle_SysDebugSendIPI() 2022-01-10 11:58:30 +11:00
api.h replacing all ifndef with pargma once 2020-03-23 11:04:46 +11:00
assert.h trivial: fix typos 2022-02-27 13:10:34 +11:00
basic_types.h unify libsel4 type definitions 2021-12-06 16:48:01 +11:00
bootinfo.h boot: use helper variable to simplify code 2021-09-06 09:22:04 +10:00
compound_types.h trivial: remove superfluous empty lines 2021-09-27 23:09:09 +10:00
config.h libsel4: Fix name for AARCH64_VSPACE_S2_START_L1 2021-09-06 08:08:54 +10:00
hardware.h remove unused define KERNEL_ELF_PADDR_TOP 2021-11-17 11:29:36 +11:00
linker.h replacing all ifndef with pargma once 2020-03-23 11:04:46 +11:00
machine.h remove unnecessary brackets 2021-09-27 23:09:09 +10:00
object.h trivial: remove duplicate headers 2022-02-05 15:30:25 +11:00
stdarg.h trivial: remove superfluous empty lines 2021-09-27 23:09:09 +10:00
stdint.h print 64-bit integers on 32-bits systems fully 2021-11-26 06:01:11 +01:00
string.h trivial: remove superfluous empty lines 2021-09-27 23:09:09 +10:00
types.h trivial: remove superfluous empty lines 2021-09-27 23:09:09 +10:00
util.h make macro ARRAY_SIZE() handle corner cases 2022-03-10 18:16:00 +11:00