2023-12-20 16:20:36 +00:00
|
|
|
mainmenu "NEMU Configuration Menu"
|
|
|
|
|
|
|
|
choice
|
|
|
|
prompt "Base ISA"
|
|
|
|
default ISA_riscv
|
|
|
|
config ISA_x86
|
|
|
|
bool "x86"
|
|
|
|
config ISA_mips32
|
|
|
|
bool "mips32"
|
|
|
|
config ISA_riscv
|
|
|
|
bool "riscv"
|
|
|
|
config ISA_loongarch32r
|
|
|
|
bool "loongarch32r"
|
|
|
|
endchoice
|
|
|
|
|
|
|
|
config ISA
|
|
|
|
string
|
|
|
|
default "x86" if ISA_x86
|
|
|
|
default "mips32" if ISA_mips32
|
|
|
|
default "riscv32" if ISA_riscv && !RV64
|
|
|
|
default "riscv64" if ISA_riscv && RV64
|
|
|
|
default "loongarch32r" if ISA_loongarch32r
|
|
|
|
default "none"
|
|
|
|
|
|
|
|
config ISA64
|
|
|
|
depends on ISA_riscv && RV64
|
|
|
|
bool
|
|
|
|
default y
|
|
|
|
|
|
|
|
|
|
|
|
if ISA_riscv
|
|
|
|
source "src/isa/riscv32/Kconfig"
|
|
|
|
endif
|
|
|
|
|
|
|
|
choice
|
|
|
|
prompt "NEMU execution engine"
|
|
|
|
default ENGINE_INTERPRETER
|
|
|
|
|
|
|
|
config ENGINE_INTERPRETER
|
|
|
|
bool "Interpreter"
|
|
|
|
help
|
|
|
|
Interpreter guest instructions one by one.
|
|
|
|
endchoice
|
|
|
|
|
|
|
|
config ENGINE
|
|
|
|
string
|
|
|
|
default "interpreter" if ENGINE_INTERPRETER
|
|
|
|
default "none"
|
|
|
|
|
|
|
|
choice
|
|
|
|
prompt "Running mode"
|
|
|
|
default MODE_SYSTEM
|
|
|
|
|
|
|
|
config MODE_SYSTEM
|
|
|
|
bool "System mode"
|
|
|
|
help
|
|
|
|
Support full-system functionality, including privileged instructions, MMU and devices.
|
|
|
|
endchoice
|
|
|
|
|
|
|
|
choice
|
|
|
|
prompt "Build target"
|
|
|
|
default TARGET_NATIVE_ELF
|
|
|
|
config TARGET_NATIVE_ELF
|
|
|
|
bool "Executable on Linux Native"
|
|
|
|
config TARGET_SHARE
|
|
|
|
bool "Shared object (used as REF for differential testing)"
|
|
|
|
config TARGET_AM
|
|
|
|
bool "Application on Abstract-Machine (DON'T CHOOSE)"
|
|
|
|
endchoice
|
|
|
|
|
|
|
|
menu "Build Options"
|
|
|
|
choice
|
|
|
|
prompt "Compiler"
|
|
|
|
default CC_GCC
|
|
|
|
config CC_GCC
|
|
|
|
bool "gcc"
|
|
|
|
config CC_GPP
|
|
|
|
bool "g++"
|
|
|
|
config CC_CLANG
|
|
|
|
depends on !TARGET_AM
|
|
|
|
bool "clang"
|
|
|
|
endchoice
|
|
|
|
|
|
|
|
config CC
|
|
|
|
string
|
|
|
|
default "gcc" if CC_GCC
|
|
|
|
default "g++" if CC_GPP
|
|
|
|
default "clang" if CC_CLANG
|
|
|
|
default "none"
|
|
|
|
|
|
|
|
choice
|
|
|
|
prompt "Optimization Level"
|
|
|
|
default CC_O2
|
|
|
|
config CC_O0
|
|
|
|
bool "O0"
|
|
|
|
config CC_O1
|
|
|
|
bool "O1"
|
|
|
|
config CC_O2
|
|
|
|
bool "O2"
|
|
|
|
config CC_O3
|
|
|
|
bool "O3"
|
|
|
|
endchoice
|
|
|
|
|
|
|
|
config CC_OPT
|
|
|
|
string
|
|
|
|
default "-O0" if CC_O0
|
|
|
|
default "-O1" if CC_O1
|
|
|
|
default "-O2" if CC_O2
|
|
|
|
default "-O3" if CC_O3
|
|
|
|
default "none"
|
|
|
|
|
|
|
|
config CC_LTO
|
|
|
|
depends on !TARGET_AM
|
|
|
|
bool "Enable link-time optimization"
|
|
|
|
default n
|
|
|
|
|
|
|
|
config CC_DEBUG
|
|
|
|
bool "Enable debug information"
|
|
|
|
default n
|
|
|
|
|
|
|
|
config CC_ASAN
|
|
|
|
depends on MODE_SYSTEM
|
|
|
|
bool "Enable address sanitizer"
|
|
|
|
default n
|
|
|
|
endmenu
|
|
|
|
|
|
|
|
menu "Testing and Debugging"
|
|
|
|
|
|
|
|
|
|
|
|
config TRACE
|
|
|
|
bool "Enable tracer"
|
|
|
|
default y
|
|
|
|
|
|
|
|
config TRACE_START
|
|
|
|
depends on TRACE
|
|
|
|
int "When tracing is enabled (unit: number of instructions)"
|
|
|
|
default 0
|
|
|
|
|
|
|
|
config TRACE_END
|
|
|
|
depends on TRACE
|
|
|
|
int "When tracing is disabled (unit: number of instructions)"
|
|
|
|
default 10000
|
|
|
|
|
|
|
|
config ITRACE
|
|
|
|
depends on TRACE && TARGET_NATIVE_ELF && ENGINE_INTERPRETER
|
2024-03-20 11:46:03 +00:00
|
|
|
bool "Enable instruction tracing"
|
2023-12-20 16:20:36 +00:00
|
|
|
default y
|
2024-03-20 11:46:03 +00:00
|
|
|
help
|
|
|
|
Instraction tracing will log past instructions into a ring buffer
|
|
|
|
and print them when NEMU exit unexpectedly.
|
2023-12-20 16:20:36 +00:00
|
|
|
|
|
|
|
config ITRACE_COND
|
|
|
|
depends on ITRACE
|
|
|
|
string "Only trace instructions when the condition is true"
|
|
|
|
default "true"
|
|
|
|
|
2024-03-13 07:34:03 +00:00
|
|
|
config ITRACE_BUFFER
|
|
|
|
depends on ITRACE
|
|
|
|
int "Buffer size for intruction trace (unit: number of instructions)"
|
|
|
|
default 10
|
2023-12-20 16:20:36 +00:00
|
|
|
|
2024-03-13 09:01:04 +00:00
|
|
|
config MTRACE
|
|
|
|
depends on TRACE && TARGET_NATIVE_ELF && ENGINE_INTERPRETER
|
2024-03-20 11:46:03 +00:00
|
|
|
bool "Enable memory tracing"
|
2024-03-13 10:49:50 +00:00
|
|
|
default n
|
2024-03-13 09:50:21 +00:00
|
|
|
|
|
|
|
config MTRACE_RANGE
|
|
|
|
depends on MTRACE
|
|
|
|
string "Memory trace active range"
|
2024-03-13 10:04:39 +00:00
|
|
|
default "0x0-0xfffffff"
|
2024-03-13 09:50:21 +00:00
|
|
|
help
|
|
|
|
Memory tracer will only print memory access in these ranges.
|
|
|
|
Use comma to seperate between ranges.
|
|
|
|
|
|
|
|
config MTRACE_RANGE_MAX
|
|
|
|
depends on MTRACE
|
|
|
|
int "Max range count in MTRACE_RANGE"
|
|
|
|
default 10
|
2024-03-13 09:01:04 +00:00
|
|
|
|
2024-03-13 10:49:50 +00:00
|
|
|
config FTRACE
|
|
|
|
depends on TRACE && TARGET_NATIVE_ELF && ENGINE_INTERPRETER
|
2024-03-20 11:46:03 +00:00
|
|
|
bool "Enable function tracing"
|
2024-03-26 04:30:37 +00:00
|
|
|
default n
|
2024-03-13 10:49:50 +00:00
|
|
|
|
2024-03-13 10:55:11 +00:00
|
|
|
config FTRACE_STACK_SIZE
|
|
|
|
depends on FTRACE
|
|
|
|
int "Max function track stack size"
|
2024-03-26 04:30:37 +00:00
|
|
|
default 256
|
2024-03-13 10:55:11 +00:00
|
|
|
|
2024-03-13 10:49:50 +00:00
|
|
|
config FTRACE_LOG
|
|
|
|
depends on FTRACE
|
|
|
|
bool "Print log when entering a funciton"
|
|
|
|
default n
|
|
|
|
|
2023-12-20 16:20:36 +00:00
|
|
|
config DIFFTEST
|
|
|
|
depends on TARGET_NATIVE_ELF
|
|
|
|
bool "Enable differential testing"
|
|
|
|
default n
|
|
|
|
help
|
|
|
|
Enable differential testing with a reference design.
|
|
|
|
Note that this will significantly reduce the performance of NEMU.
|
|
|
|
|
|
|
|
choice
|
|
|
|
prompt "Reference design"
|
|
|
|
default DIFFTEST_REF_SPIKE if ISA_riscv
|
|
|
|
default DIFFTEST_REF_KVM if ISA_x86
|
|
|
|
default DIFFTEST_REF_QEMU
|
|
|
|
depends on DIFFTEST
|
|
|
|
config DIFFTEST_REF_QEMU
|
|
|
|
bool "QEMU, communicate with socket"
|
|
|
|
if ISA_riscv
|
|
|
|
config DIFFTEST_REF_SPIKE
|
|
|
|
bool "Spike"
|
|
|
|
endif
|
|
|
|
if ISA_x86
|
|
|
|
config DIFFTEST_REF_KVM
|
|
|
|
bool "KVM"
|
|
|
|
endif
|
|
|
|
endchoice
|
|
|
|
|
|
|
|
config DIFFTEST_REF_PATH
|
|
|
|
string
|
|
|
|
default "tools/qemu-diff" if DIFFTEST_REF_QEMU
|
|
|
|
default "tools/kvm-diff" if DIFFTEST_REF_KVM
|
|
|
|
default "tools/spike-diff" if DIFFTEST_REF_SPIKE
|
|
|
|
default "none"
|
|
|
|
|
|
|
|
config DIFFTEST_REF_NAME
|
|
|
|
string
|
|
|
|
default "qemu" if DIFFTEST_REF_QEMU
|
|
|
|
default "kvm" if DIFFTEST_REF_KVM
|
|
|
|
default "spike" if DIFFTEST_REF_SPIKE
|
|
|
|
default "none"
|
|
|
|
endmenu
|
|
|
|
|
|
|
|
if MODE_SYSTEM
|
|
|
|
source "src/memory/Kconfig"
|
|
|
|
source "src/device/Kconfig"
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
|
|
menu "Miscellaneous"
|
|
|
|
choice
|
|
|
|
depends on !TARGET_AM
|
|
|
|
prompt "Host timer"
|
|
|
|
default TIMER_GETTIMEOFDAY
|
|
|
|
config TIMER_GETTIMEOFDAY
|
|
|
|
bool "gettimeofday"
|
|
|
|
config TIMER_CLOCK_GETTIME
|
|
|
|
bool "clock_gettime"
|
|
|
|
endchoice
|
|
|
|
|
|
|
|
config RT_CHECK
|
|
|
|
bool "Enable runtime checking"
|
|
|
|
default y
|
|
|
|
|
|
|
|
endmenu
|