diff --git a/CMakeLists.txt b/CMakeLists.txt index edc10cfc..4b10163b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,7 +49,32 @@ elseif (BUILD_TARGET STREQUAL "smp-arm64") add_definitions(-DPOSTK_DEBUG_ARCH_DEP_${i} -DPOSTK_DEBUG_TEMP_FIX_${i}) set(KBUILD_C_FLAGS "${KBUILD_C_FLAGS} -DPOSTK_DEBUG_ARCH_DEP_${i} -DPOSTK_DEBUG_TEMP_FIX_${i}") endforeach() - add_definitions(-DCONFIG_ARM64_64K_PAGES -DCONFIG_ARM64_VA_BITS=48) + + execute_process(COMMAND awk -F= "$1 == \"CONFIG_ARM64_64K_PAGES\" { print $2; exit; }" "${KERNEL_DIR}/.config" + OUTPUT_VARIABLE CONFIG_ARM64_64K_PAGES OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process(COMMAND awk -F= "$1 == \"CONFIG_ARM64_VA_BITS\" { print $2; exit; }" "${KERNEL_DIR}/.config" + OUTPUT_VARIABLE CONFIG_ARM64_VA_BITS OUTPUT_STRIP_TRAILING_WHITESPACE) + + message("Host kernel CONFIG_ARM64_64K_PAGES=${CONFIG_ARM64_64K_PAGES}") + message("Host kernel CONFIG_ARM64_VA_BITS=${CONFIG_ARM64_VA_BITS}") + + if(CONFIG_ARM64_64K_PAGES STREQUAL "y") + if(CONFIG_ARM64_VA_BITS STREQUAL 42) + add_definitions(-DCONFIG_ARM64_PGTABLE_LEVELS=2 -DCONFIG_ARM64_VA_BITS=42 -DCONFIG_ARM64_64K_PAGES) + set(LINKER_SCRIPT "smp-arm64_type3.lds") + elseif(CONFIG_ARM64_VA_BITS STREQUAL 48) + add_definitions(-DCONFIG_ARM64_PGTABLE_LEVELS=3 -DCONFIG_ARM64_VA_BITS=48 -DCONFIG_ARM64_64K_PAGES) + set(LINKER_SCRIPT "smp-arm64_type4.lds") + endif() + else(CONFIG_ARM64_64K_PAGES STREQUAL "y") + if(CONFIG_ARM64_VA_BITS STREQUAL 39) + add_definitions(-DCONFIG_ARM64_PGTABLE_LEVELS=3 -DCONFIG_ARM64_VA_BITS=39) + set(LINKER_SCRIPT "smp-arm64_type1.lds") + elseif(CONFIG_ARM64_VA_BITS STREQUAL 48) + add_definitions(-DCONFIG_ARM64_PGTABLE_LEVELS=4 -DCONFIG_ARM64_VA_BITS=48) + set(LINKER_SCRIPT "smp-arm64_type2.lds") + endif() + endif(CONFIG_ARM64_64K_PAGES STREQUAL "y") endif() set_property(CACHE BUILD_TARGET PROPERTY STRINGS smp-x86 smp-arm64) diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 42ef605f..c81a3bfb 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -119,33 +119,10 @@ elseif (BUILD_TARGET STREQUAL "smp-arm64") OUTPUT_VARIABLE CONFIG_ARM64_VHE OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process(COMMAND awk -F= "$1 == \"CONFIG_ARM_GIC_V3\" { print $2; exit; }" "${KERNEL_DIR}/.config" OUTPUT_VARIABLE CONFIG_ARM_GIC_V3 OUTPUT_STRIP_TRAILING_WHITESPACE) - execute_process(COMMAND awk -F= "$1 == \"CONFIG_ARM64_64K_PAGES\" { print $2; exit; }" "${KERNEL_DIR}/.config" - OUTPUT_VARIABLE CONFIG_ARM64_64K_PAGES OUTPUT_STRIP_TRAILING_WHITESPACE) - execute_process(COMMAND awk -F= "$1 == \"CONFIG_ARM64_VA_BITS\" { print $2; exit; }" "${KERNEL_DIR}/.config" - OUTPUT_VARIABLE CONFIG_ARM64_VA_BITS OUTPUT_STRIP_TRAILING_WHITESPACE) message("Host kernel CONFIG_NR_CPUS=${CONFIG_NR_CPUS}") message("Host kernel CONFIG_HZ=${CONFIG_HZ}") - message("Host kernel CONFIG_ARM64_64K_PAGES=${CONFIG_ARM64_64K_PAGES}") - message("Host kernel CONFIG_ARM64_VA_BITS=${CONFIG_ARM64_VA_BITS}") - if(CONFIG_ARM64_64K_PAGES STREQUAL "y") - if(CONFIG_ARM64_VA_BITS STREQUAL 42) - add_definitions(-DCONFIG_ARM64_PGTABLE_LEVELS=2 -DCONFIG_ARM64_VA_BITS=42 -DCONFIG_ARM64_64K_PAGES) - set(LINKER_SCRIPT "smp-arm64_type3.lds") - elseif(CONFIG_ARM64_VA_BITS STREQUAL 48) - add_definitions(-DCONFIG_ARM64_PGTABLE_LEVELS=3 -DCONFIG_ARM64_VA_BITS=48 -DCONFIG_ARM64_64K_PAGES) - set(LINKER_SCRIPT "smp-arm64_type4.lds") - endif() - else(CONFIG_ARM64_64K_PAGES STREQUAL "y") - if(CONFIG_ARM64_VA_BITS STREQUAL 39) - add_definitions(-DCONFIG_ARM64_PGTABLE_LEVELS=3 -DCONFIG_ARM64_VA_BITS=39) - set(linker_script "smp-arm64_type1.lds") - elseif(CONFIG_ARM64_VA_BITS STREQUAL 48) - add_definitions(-DCONFIG_ARM64_PGTABLE_LEVELS=4 -DCONFIG_ARM64_VA_BITS=48) - set(linker_script "smp-arm64_type2.lds") - endif() - endif(CONFIG_ARM64_64K_PAGES STREQUAL "y") if(CONFIG_ARM_GIC_V3 STREQUAL "y") add_definitions(-DCONFIG_ARM_GIC_V3=y) #add_definitions(-DCONFIG_HAS_NMI=y)