From 063efe9cf8aff0ee95d26e04f350fc57e0a935d5 Mon Sep 17 00:00:00 2001 From: MacDue Date: Thu, 15 Jun 2023 23:05:09 +0100 Subject: [PATCH] Kernel: Set kernel stack alignment to 8-bytes This is already assumed by most of the assembly in the kernel, setting this is just making it explicit (and may save some stack). --- Kernel/CMakeLists.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Kernel/CMakeLists.txt b/Kernel/CMakeLists.txt index 23be471e85..99cec35d13 100644 --- a/Kernel/CMakeLists.txt +++ b/Kernel/CMakeLists.txt @@ -700,10 +700,15 @@ if (NOT "${SERENITY_ARCH}" STREQUAL "aarch64") COMMENT "Preprocessing linker.ld" VERBATIM ) - add_custom_target(generate_kernel_linker_script DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/linker.ld) target_link_options(Kernel PRIVATE LINKER:-T ${CMAKE_CURRENT_BINARY_DIR}/linker.ld -nostdlib -nodefaultlibs) set_target_properties(Kernel PROPERTIES LINK_DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/linker.ld") + + if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + target_compile_options(Kernel PRIVATE -mpreferred-stack-boundary=3) + elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang$") + target_compile_options(Kernel PRIVATE -mstack-alignment=8) + endif() else() target_link_options(Kernel PRIVATE LINKER:-T ${CMAKE_CURRENT_SOURCE_DIR}/Arch/aarch64/linker.ld -nostdlib LINKER:--no-pie) set_target_properties(Kernel PROPERTIES LINK_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/Arch/aarch64/linker.ld)