- In early boot, enable the syscall instruction and set up necessary MSRs - Add a hook to update page tables on context switch - Properly initialize thread based on whether it will start in user or supervisor mode - Add landing function for system calls to execute the desired handler - Implement arch_user_string_nlen() - Implement logic for dropping a thread down to user mode - Reserve per-CPU storage space for user and privilege elevation stack pointers, necessary for handling syscalls when no free registers are available - Proper handling of gs register considerations when transitioning privilege levels Kernel page table isolation (KPTI) is not yet implemented. Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
20 lines
464 B
CMake
20 lines
464 B
CMake
# Copyright (c) 2019 Intel Corp.
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
#
|
|
# XXX: When using the Intel toolchain, cmake doesn't recognize .S files
|
|
# automatically, and I can't be bothered to figure out how to fix this.
|
|
#
|
|
|
|
set_property(SOURCE intel64/locore.S PROPERTY LANGUAGE ASM)
|
|
|
|
zephyr_library_sources(
|
|
intel64/locore.S
|
|
intel64/cpu.c
|
|
intel64/irq.c
|
|
intel64/thread.c
|
|
intel64/fatal.c
|
|
)
|
|
|
|
zephyr_library_sources_ifdef(CONFIG_USERSPACE intel64/userspace.S)
|