This file defines the entry point into the Core of PwnOS, and includes the rest of the Core.
|Assemble||$MASM$\ML.EXE /Fl /c /Cp /nologo $this$|
|Link||$JLOC$\JLOC.EXE BootCore.loc “..\Compiled\BootCore.bin” “..\Boot\BootCore.map”|
|ThreadSchedulerTSS TSS32 <>|
This is the special <TSS32> of the ThreadScheduler task.
This must be first in the CoreData segment so that its address can be hardcoded in its TSS descriptor (see <GDT>). It doesn’t need an entire EXTENDEDTSS, because <ThreadScheuler> doesn’t request its own thread info or use FPU/SSE/MMX.
|CallVectors CALLVECTORLIST <>|
This is the CALLVECTORLIST structure containing the addresses to all Core functions acessible from Libraries, indexed by <Core Call Gate Constants>.
Bits used to lock access to certain areas of the Core (e.g. ThreadScheduler can only have one processor at a time).
- <Core Access Flag Constants>
Entry point into the Core from Libraries. eax contains one of the <Core Call Gate Constants>.
To call this from Libraries, use the CALL_CORE macro. This must be first in the CoreCode segment to ensure that its address can be hardcoded as a constant in the call gate descriptor and CALL_CORE (see <GDT>).