diff --git a/arch/x86/config/toolchain.cmake b/arch/x86/config/toolchain.cmake index bce6a97..e05fe5b 100644 --- a/arch/x86/config/toolchain.cmake +++ b/arch/x86/config/toolchain.cmake @@ -7,7 +7,7 @@ set(CMAKE_CROSSCOMPILING 1) set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) if (CFG_X86_64) set(CMAKE_SYSTEM_PROCESSOR x86-64) - set(_toolchain_common_flags "-m64 -march=x86-64") + set(_toolchain_common_flags "-m64 -march=${M_ARCH}") set(_toolchain_triple x86_64-pc-none-elf) set(_toolchain_bits 64) else() diff --git a/cmake/config-x86.cmake b/cmake/config-x86.cmake index d73870d..4e3a33c 100644 --- a/cmake/config-x86.cmake +++ b/cmake/config-x86.cmake @@ -1,5 +1,15 @@ # Copyright (C) 2021 fef . All rights reserved. +set(_amd64_march_options + "nocona" "core2" "penryn" "bonnell" "atom" "silvermont" "slm" "goldmont" "goldmont-plus" + "tremont" "nehalem" "corei7" "westmere" "sandybridge" "corei7-avx" "ivybridge" "core-avx-i" + "haswell" "core-avx2" "broadwell" "skylake" "skylake-avx512" "skx" "cascadelake" "cooperlake" + "cannonlake" "icelake-client" "rocketlake" "icelake-server" "tigerlake" "sapphirerapids" + "alderlake" "knl" "knm" "k8" "athlon64" "athlon-fx" "opteron" "k8-sse3" "athlon64-sse3" + "opteron-sse3" "amdfam10" "barcelona" "btver1" "btver2" "bdver1" "bdver2" "bdver3" "bdver4" + "znver1" "znver2" "znver3" "x86-64" "x86-64-v2" "x86-64-v3" +) + set(BOOT_TYPE "bios" CACHE STRING "Bootloader type") set_property(CACHE BOOT_TYPE PROPERTY STRINGS "bios" @@ -8,6 +18,10 @@ set_property(CACHE BOOT_TYPE PROPERTY STRINGS option(CFG_X86_64 "64-bit kernel (32-bit support is fundamentally broken)" ON) if(CFG_X86_64) set(X86_ARCH amd64) + set(M_ARCH "x86-64" CACHE STRING "Value for -march") + set_property(CACHE M_ARCH PROPERTY STRINGS ${_amd64_march_options}) else() set(X86_ARCH i386) + set(M_ARCH "i686" CACHE STRING "Value for -march") + set_property(CACHE M_ARCH PROPERTY STRINGS "i686") endif()