From 059b5ba286b3fef4d01c3ced9cd829ace5dd6340 Mon Sep 17 00:00:00 2001 From: Xander Date: Fri, 14 Jul 2023 12:28:07 +0200 Subject: Task state segment structs --- kernel/tss.dats | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 kernel/tss.dats (limited to 'kernel/tss.dats') diff --git a/kernel/tss.dats b/kernel/tss.dats new file mode 100644 index 0000000..e4569d6 --- /dev/null +++ b/kernel/tss.dats @@ -0,0 +1,20 @@ +#include "kernel/prelude/kernel_prelude.hats" + +#define ATS_DYNLOADFLAG 0 + +staload "./tss.sats" + +staload UN = "prelude/SATS/unsafe.sats" + +var tss : tss_t // Task State Segment +var stack1 : stack // Double fault stack + +implement tss_init() : void = let + extern praxi __assert{l:addr} (ptr: ptr (l)): vtakeout0 (tss_t@l) + prval (pf, fpf) = __assert (addr@(tss)) // takeout proof UNSAFE: + val sp1 = @{a = ptr_add(addr@(stack1),STACK_SIZE)} +in + tss.ist.IS1 := sp1; + let prval () = fpf(pf) in end +end + -- cgit v1.2.3