-
- Downloads
RFC-3: Update context for x86 to use FS and GS.
TLS_BASE virtual register is replaced with FS_BASE and GS_BASE virtual registers. The FS_BASE and GS_BASE virtual registers are moved to the end of the context so they need not be considered in the kernel exit and entry implementation. Removed tracking of ES, DS, FS, and GS segment selectors on kernel entry and exit. ES and DS are clobbered on kernel entry with the RPL 3 selector for a DPL 3 linear data segment. FS is clobbered on exit with the RPL 3 selector for the DPL 3 segment with FS_BASE as the base. This is done on exit to reload the value from the GDT. GS is clobbered on exit with the RPL 3 selector for the DPL 3 segment with GS_BASE as the base. This is done on exit to reload the value from the GDT. Kernel entry and exit code is refactored, simplified, and improved in light of the above changes. x64: update verified config to use fsgsbase instr The verification platform for x64 relies on the fsgsbase instruction.
Showing
- configs/X64_verified.cmake 1 addition, 0 deletionsconfigs/X64_verified.cmake
- include/arch/x86/arch/32/mode/fastpath/fastpath.h 22 additions, 74 deletionsinclude/arch/x86/arch/32/mode/fastpath/fastpath.h
- include/arch/x86/arch/32/mode/machine.h 58 additions, 8 deletionsinclude/arch/x86/arch/32/mode/machine.h
- include/arch/x86/arch/32/mode/machine/registerset.h 31 additions, 27 deletionsinclude/arch/x86/arch/32/mode/machine/registerset.h
- include/arch/x86/arch/32/mode/object/structures.h 2 additions, 2 deletionsinclude/arch/x86/arch/32/mode/object/structures.h
- include/arch/x86/arch/32/mode/stack.h 2 additions, 1 deletioninclude/arch/x86/arch/32/mode/stack.h
- include/arch/x86/arch/64/mode/fastpath/fastpath.h 2 additions, 12 deletionsinclude/arch/x86/arch/64/mode/fastpath/fastpath.h
- include/arch/x86/arch/64/mode/machine.h 69 additions, 5 deletionsinclude/arch/x86/arch/64/mode/machine.h
- include/arch/x86/arch/64/mode/machine/registerset.h 14 additions, 9 deletionsinclude/arch/x86/arch/64/mode/machine/registerset.h
- include/arch/x86/arch/64/mode/object/structures.h 2 additions, 2 deletionsinclude/arch/x86/arch/64/mode/object/structures.h
- include/arch/x86/arch/kernel/traps.h 7 additions, 0 deletionsinclude/arch/x86/arch/kernel/traps.h
- include/arch/x86/arch/machine.h 57 additions, 7 deletionsinclude/arch/x86/arch/machine.h
- include/arch/x86/arch/machine/registerset.h 4 additions, 3 deletionsinclude/arch/x86/arch/machine/registerset.h
- include/arch/x86/arch/object/structures.h 2 additions, 2 deletionsinclude/arch/x86/arch/object/structures.h
- libsel4/sel4_arch_include/ia32/interfaces/sel4arch.xml 2 additions, 3 deletionslibsel4/sel4_arch_include/ia32/interfaces/sel4arch.xml
- libsel4/sel4_arch_include/ia32/sel4/sel4_arch/types.h 1 addition, 1 deletionlibsel4/sel4_arch_include/ia32/sel4/sel4_arch/types.h
- libsel4/sel4_arch_include/x86_64/interfaces/sel4arch.xml 2 additions, 1 deletionlibsel4/sel4_arch_include/x86_64/interfaces/sel4arch.xml
- libsel4/sel4_arch_include/x86_64/sel4/sel4_arch/types.h 1 addition, 1 deletionlibsel4/sel4_arch_include/x86_64/sel4/sel4_arch/types.h
- libsel4/tools/syscall_stub_gen.py 2 additions, 2 deletionslibsel4/tools/syscall_stub_gen.py
- src/arch/x86/32/c_traps.c 6 additions, 47 deletionssrc/arch/x86/32/c_traps.c
Loading
Please register or sign in to comment