seL4/include
Kofi Doku Atuah 2576eef364 x86: POPF immediately before SYSEXIT.
* Change restore_user_context() and fastpath_restore() to call POPF
  just before SYSEXIT.
* Also change the way registers are loaded such that we don't access
  memory that is not guarded by the current position of the stack pointer.

The reason for this change is that EFLAGS.TF, the Trap Flag, only takes
effect on the instruction AFTER the instruction that sets EFLAGS.TF. The
reason Intel/AMD did it this way is to allow the kernel to enable EFLAGS.TF
for userspace, without it taking effect on kernel instructions BEFORE
the CPU actually has returned to userspace.

EFLAGS.TF enables single-stepping. So the full picture is that since we
executed other instructions between POPF and SYSRET, those instructions
were triggering single-stepping IN the kernel. To solve this, we must
put POPF immediately before SYSRET.
2016-08-22 09:25:02 +10:00
..
api SELFOUR-566: Decouble seL4_DebugNameThread from CONFIG_PRINTING 2016-07-15 12:30:17 +10:00
arch x86: POPF immediately before SYSEXIT. 2016-08-22 09:25:02 +10:00
fastpath SELFOUR-317: rename async endpoint to notification object, and other 2015-11-09 17:18:43 +11:00
kernel SELFOUR-518: User-level log buffer 2016-08-15 15:06:38 +10:00
machine SELFOUR-607: inline remaining irq path functions 2016-08-09 16:18:34 +10:00
model SELFOUR-518: User-level log buffer 2016-08-15 15:06:38 +10:00
object SELFOUR-566: Decouble seL4_DebugNameThread from CONFIG_PRINTING 2016-07-15 12:30:17 +10:00
plat SELFOUR-617: one source of memory object sizes 2016-08-17 12:42:38 +10:00
api.h Release snapshot 2014-07-18 05:03:59 +10:00
assert.h Always have compile_assert enabled 2015-11-11 11:09:24 +11:00
basic_types.h Rename uint32_t -> word_t in any relevant places 2015-12-10 10:45:20 +11:00
benchmark.h SELFOUR-518: Benchmark - User-level log buffer, delete dump and size system calls 2016-08-19 12:57:03 +10:00
benchmark_track.h SELFOUR-518: Benchmark - User-level log buffer, delete dump and size system calls 2016-08-19 12:57:03 +10:00
benchmark_track_types.h SELFOUR-446 Benchmark: Share kernel entry types with user-level 2016-06-07 09:19:31 +10:00
benchmark_utilisation.h Remove #include <stdbool.h> 2016-06-24 15:05:44 +10:00
benchmark_utilisation_types.h SELFOUR-448 Benchmark: Track thread's CPU utilisation time 2016-06-24 12:43:09 +10:00
bootinfo.h SELFOUR-114: remove bootinfo.h duplication 2016-03-01 17:25:22 +11:00
compound_types.h unsigned int -> word_t 2015-12-10 10:45:21 +11:00
config.h x86: Port some of the IOMMU changes on the experimental branch 2015-12-18 15:06:39 +11:00
machine.h SELFOUR-607: inline remaining irq path functions 2016-08-09 16:18:34 +10:00
Makefile Release snapshot 2014-07-18 05:03:59 +10:00
object.h SELFOUR-317: rename async endpoint to notification object, and other 2015-11-09 17:18:43 +11:00
stdarg.h Release snapshot 2014-07-18 05:03:59 +10:00
stdint.h conversion: fixed unnecessary word_t change 2015-12-10 10:45:22 +11:00
string.h Correct separation of printing and debug builds 2016-05-17 15:10:08 +10:00
types.h ia32: added the option to disable prefetchers 2015-04-15 14:38:55 +10:00
util.h Merge pull request #274 in SEL4/sel4 from ~MFERNANDEZ/sel4:8dafd43a-daa8-4d38-ad7e-3ac425d50087 to master 2016-07-21 05:03:02 +00:00