boards: centralize QEMU icount management
Instead of endlessly repeating the same command line args, centralize this and tune the shift value on a per-board basis. Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
This commit is contained in:
parent
45979dafb4
commit
a9670ab5cf
31 changed files with 33 additions and 41 deletions
|
@ -37,6 +37,13 @@ config QEMU_ICOUNT
|
|||
execute one instruction every 2^N ns of virtual time. This will
|
||||
give deterministic execution times from the guest point of view.
|
||||
|
||||
config QEMU_ICOUNT_SHIFT
|
||||
int "QEMU icount shift value"
|
||||
depends on QEMU_ICOUNT
|
||||
help
|
||||
The virtual CPU will execute one instruction every 2^N nanoseconds
|
||||
of virtual time, where N is the value provided here.
|
||||
|
||||
# There might not be any board options, hence the optional source
|
||||
osource "$(BOARD_DIR)/Kconfig"
|
||||
endmenu
|
||||
|
|
|
@ -11,3 +11,4 @@ CONFIG_CONSOLE=y
|
|||
CONFIG_UART_CONSOLE=y
|
||||
CONFIG_SERIAL=y
|
||||
CONFIG_UART_NS16550=y
|
||||
CONFIG_QEMU_ICOUNT=n
|
||||
|
|
|
@ -11,3 +11,4 @@ CONFIG_CONSOLE=y
|
|||
CONFIG_UART_CONSOLE=y
|
||||
CONFIG_SERIAL=y
|
||||
CONFIG_UART_NS16550=y
|
||||
CONFIG_QEMU_ICOUNT=n
|
||||
|
|
|
@ -10,7 +10,4 @@ set(QEMU_FLAGS_${ARCH}
|
|||
-vga none
|
||||
)
|
||||
|
||||
if(CONFIG_QEMU_ICOUNT)
|
||||
list(APPEND QEMU_EXTRA_FLAGS -icount shift=7,align=off,sleep=off -rtc clock=vm)
|
||||
endif()
|
||||
board_set_debugger_ifnset(qemu)
|
||||
|
|
|
@ -9,6 +9,7 @@ CONFIG_SOC_MPS2_AN385=y
|
|||
CONFIG_BOARD_MPS2_AN385=y
|
||||
CONFIG_CORTEX_M_SYSTICK=y
|
||||
CONFIG_RUNTIME_NMI=y
|
||||
CONFIG_QEMU_ICOUNT_SHIFT=7
|
||||
|
||||
# GPIOs
|
||||
CONFIG_GPIO=y
|
||||
|
|
|
@ -11,8 +11,4 @@ set(QEMU_FLAGS_${ARCH}
|
|||
-m 16
|
||||
-vga none
|
||||
)
|
||||
|
||||
if(CONFIG_QEMU_ICOUNT)
|
||||
list(APPEND QEMU_EXTRA_FLAGS -icount shift=7,align=off,sleep=off -rtc clock=vm)
|
||||
endif()
|
||||
board_set_debugger_ifnset(qemu)
|
||||
|
|
|
@ -11,6 +11,7 @@ CONFIG_CORTEX_M_SYSTICK=y
|
|||
CONFIG_RUNTIME_NMI=y
|
||||
CONFIG_ARM_TRUSTZONE_M=y
|
||||
CONFIG_ARM_MPU=y
|
||||
CONFIG_QEMU_ICOUNT_SHIFT=7
|
||||
|
||||
# GPIOs
|
||||
CONFIG_GPIO=y
|
||||
|
|
|
@ -12,6 +12,7 @@ CONFIG_CORTEX_M_SYSTICK=y
|
|||
CONFIG_RUNTIME_NMI=y
|
||||
CONFIG_TRUSTED_EXECUTION_NONSECURE=y
|
||||
CONFIG_ARM_MPU=y
|
||||
CONFIG_QEMU_ICOUNT_SHIFT=7
|
||||
|
||||
# GPIOs
|
||||
CONFIG_GPIO=y
|
||||
|
|
|
@ -10,8 +10,4 @@ set(QEMU_FLAGS_${ARCH}
|
|||
-nographic
|
||||
-machine virt
|
||||
)
|
||||
|
||||
if(CONFIG_QEMU_ICOUNT)
|
||||
list(APPEND QEMU_EXTRA_FLAGS -icount shift=4,align=off,sleep=off -rtc clock=vm)
|
||||
endif()
|
||||
board_set_debugger_ifnset(qemu)
|
||||
|
|
|
@ -2,6 +2,7 @@ CONFIG_SOC_QEMU_CORTEX_A53=y
|
|||
CONFIG_BOARD_QEMU_CORTEX_A53=y
|
||||
CONFIG_ARM_ARCH_TIMER=y
|
||||
CONFIG_XIP=n
|
||||
CONFIG_QEMU_ICOUNT_SHIFT=4
|
||||
|
||||
# QEMU settings
|
||||
CONFIG_SRAM_BASE_ADDRESS=0x40000000
|
||||
|
|
|
@ -12,8 +12,4 @@ set(QEMU_FLAGS_${ARCH}
|
|||
-nographic
|
||||
-vga none
|
||||
)
|
||||
|
||||
if(CONFIG_QEMU_ICOUNT)
|
||||
list(APPEND QEMU_EXTRA_FLAGS -icount shift=6,align=off,sleep=off -rtc clock=vm)
|
||||
endif()
|
||||
board_set_debugger_ifnset(qemu)
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
CONFIG_SOC_SERIES_NRF51X=y
|
||||
CONFIG_SOC_NRF51822_QFAA=y
|
||||
CONFIG_BOARD_QEMU_CORTEX_M0=y
|
||||
CONFIG_QEMU_ICOUNT_SHIFT=6
|
||||
|
||||
# enable GPIO
|
||||
CONFIG_GPIO=y
|
||||
|
|
|
@ -9,8 +9,4 @@ set(QEMU_FLAGS_${ARCH}
|
|||
-nographic
|
||||
-vga none
|
||||
)
|
||||
|
||||
if(CONFIG_QEMU_ICOUNT)
|
||||
list(APPEND QEMU_EXTRA_FLAGS -icount shift=6,align=off,sleep=off -rtc clock=vm)
|
||||
endif()
|
||||
board_set_debugger_ifnset(qemu)
|
||||
|
|
|
@ -9,3 +9,4 @@ CONFIG_SERIAL=y
|
|||
CONFIG_CORTEX_M_SYSTICK=y
|
||||
CONFIG_UART_STELLARIS=y
|
||||
CONFIG_SCHED_MULTIQ=y
|
||||
CONFIG_QEMU_ICOUNT_SHIFT=6
|
||||
|
|
|
@ -12,10 +12,6 @@ set(QEMU_FLAGS_${ARCH}
|
|||
-dtb ${ZEPHYR_BASE}/boards/${ARCH}/${BOARD}/fdt-single_arch-zcu102-arm.dtb
|
||||
)
|
||||
|
||||
if(CONFIG_QEMU_ICOUNT)
|
||||
list(APPEND QEMU_EXTRA_FLAGS -icount shift=3,align=off,sleep=off -rtc clock=vm)
|
||||
endif()
|
||||
|
||||
set(QEMU_KERNEL_OPTION
|
||||
"-device;loader,file=\$<TARGET_FILE:\${logical_target_for_zephyr_elf}>,cpu-num=4"
|
||||
"-device;loader,addr=0xff5e023c,data=0x80008fde,data-len=4"
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
CONFIG_SOC_XILINX_ZYNQMP_RPU=y
|
||||
CONFIG_BOARD_QEMU_CORTEX_R5=y
|
||||
CONFIG_XIP=n
|
||||
CONFIG_QEMU_ICOUNT_SHIFT=3
|
||||
|
||||
CONFIG_ISR_STACK_SIZE=512
|
||||
CONFIG_THREAD_STACK_INFO=y
|
||||
|
|
|
@ -11,3 +11,4 @@ CONFIG_UART_NS16550=y
|
|||
CONFIG_UART_CONSOLE=y
|
||||
CONFIG_INCLUDE_RESET_VECTOR=n
|
||||
CONFIG_EXTRA_EXCEPTION_INFO=y
|
||||
CONFIG_QEMU_ICOUNT=n
|
||||
|
|
|
@ -9,10 +9,6 @@ set(QEMU_FLAGS_${ARCH}
|
|||
-machine sifive_e
|
||||
)
|
||||
|
||||
if(CONFIG_QEMU_ICOUNT)
|
||||
list(APPEND QEMU_EXTRA_FLAGS -icount shift=6,align=off,sleep=off -rtc clock=vm)
|
||||
endif()
|
||||
|
||||
board_set_debugger_ifnset(qemu)
|
||||
board_set_flasher_ifnset(hifive1)
|
||||
board_finalize_runner_args(hifive1)
|
||||
|
|
|
@ -18,3 +18,4 @@ CONFIG_GPIO_SIFIVE=y
|
|||
CONFIG_SPI=y
|
||||
CONFIG_SPI_SIFIVE=y
|
||||
CONFIG_BOOT_BANNER=y
|
||||
CONFIG_QEMU_ICOUNT_SHIFT=6
|
||||
|
|
|
@ -9,8 +9,4 @@ set(QEMU_FLAGS_${ARCH}
|
|||
-nographic
|
||||
-machine sifive_e
|
||||
)
|
||||
|
||||
if(CONFIG_QEMU_ICOUNT)
|
||||
list(APPEND QEMU_EXTRA_FLAGS -icount shift=6,align=off,sleep=off -rtc clock=vm)
|
||||
endif()
|
||||
board_set_debugger_ifnset(qemu)
|
||||
|
|
|
@ -16,3 +16,4 @@ CONFIG_RISCV_MACHINE_TIMER=y
|
|||
CONFIG_GPIO=y
|
||||
CONFIG_GPIO_SIFIVE=y
|
||||
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=10000000
|
||||
CONFIG_QEMU_ICOUNT_SHIFT=6
|
||||
|
|
|
@ -9,8 +9,4 @@ set(QEMU_FLAGS_${ARCH}
|
|||
-nographic
|
||||
-machine sifive_e
|
||||
)
|
||||
|
||||
if(CONFIG_QEMU_ICOUNT)
|
||||
list(APPEND QEMU_EXTRA_FLAGS -icount shift=6,align=off,sleep=off -rtc clock=vm)
|
||||
endif()
|
||||
board_set_debugger_ifnset(qemu)
|
||||
|
|
|
@ -18,3 +18,4 @@ CONFIG_GPIO_SIFIVE=y
|
|||
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=10000000
|
||||
CONFIG_STACK_SENTINEL=y
|
||||
CONFIG_TEST_EXTRA_STACKSIZE=256
|
||||
CONFIG_QEMU_ICOUNT_SHIFT=6
|
||||
|
|
|
@ -11,13 +11,12 @@ if(CONFIG_X86_64)
|
|||
set(QEMU_CPU_TYPE_${ARCH} qemu64,+x2apic)
|
||||
if("${CONFIG_MP_NUM_CPUS}" STREQUAL "1")
|
||||
# icount works with 1 CPU so we can enable it here.
|
||||
# FIXME: once this works across configs, remove this line and set
|
||||
# CONFIG_QEMU_ICOUNT_SHIFT in defconfig instead.
|
||||
list(APPEND QEMU_EXTRA_FLAGS -icount shift=5,align=off,sleep=off -rtc clock=vm)
|
||||
endif()
|
||||
else()
|
||||
set(QEMU_CPU_TYPE_${ARCH} qemu32,+nx,+pae)
|
||||
if(CONFIG_QEMU_ICOUNT)
|
||||
list(APPEND QEMU_EXTRA_FLAGS -icount shift=5,align=off,sleep=off -rtc clock=vm)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(QEMU_FLAGS_${ARCH}
|
||||
|
|
|
@ -16,3 +16,4 @@ CONFIG_SMP=y
|
|||
CONFIG_MP_NUM_CPUS=2
|
||||
CONFIG_X86_MMU=y
|
||||
CONFIG_X86_VERY_EARLY_CONSOLE=y
|
||||
CONFIG_QEMU_ICOUNT=n
|
||||
|
|
|
@ -18,3 +18,4 @@ CONFIG_SCHED_SCALABLE=y
|
|||
CONFIG_WAITQ_SCALABLE=y
|
||||
CONFIG_COVERAGE=y
|
||||
CONFIG_X86_VERY_EARLY_CONSOLE=y
|
||||
CONFIG_QEMU_ICOUNT_SHIFT=5
|
||||
|
|
|
@ -17,3 +17,4 @@ CONFIG_DEBUG_INFO=y
|
|||
CONFIG_SCHED_SCALABLE=y
|
||||
CONFIG_WAITQ_SCALABLE=y
|
||||
CONFIG_X86_VERY_EARLY_CONSOLE=y
|
||||
CONFIG_QEMU_ICOUNT_SHIFT=5
|
||||
|
|
|
@ -12,3 +12,4 @@ CONFIG_UART_CONSOLE=y
|
|||
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=25000000
|
||||
CONFIG_TEST_RANDOM_GENERATOR=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
CONFIG_QEMU_ICOUNT_SHIFT=5
|
||||
|
|
|
@ -8,9 +8,6 @@ set(QEMU_FLAGS_${ARCH}
|
|||
-machine sim -semihosting -nographic -cpu sample_controller
|
||||
)
|
||||
|
||||
if(CONFIG_QEMU_ICOUNT)
|
||||
list(APPEND QEMU_EXTRA_FLAGS -icount shift=6,align=off,sleep=off -rtc clock=vm)
|
||||
endif()
|
||||
# TODO: Support debug
|
||||
# board_set_debugger_ifnset(qemu)
|
||||
# debugserver: QEMU_EXTRA_FLAGS += -s -S
|
||||
|
|
|
@ -9,3 +9,4 @@ CONFIG_STACK_SENTINEL=y
|
|||
CONFIG_GEN_ISR_TABLES=y
|
||||
CONFIG_GEN_IRQ_VECTOR_TABLE=n
|
||||
CONFIG_SIMULATOR_XTENSA=y
|
||||
CONFIG_QEMU_ICOUNT_SHIFT=6
|
||||
|
|
|
@ -60,6 +60,12 @@ endif()
|
|||
# Connect monitor to the console chardev.
|
||||
list(APPEND QEMU_FLAGS -mon chardev=con,mode=readline)
|
||||
|
||||
if(CONFIG_QEMU_ICOUNT)
|
||||
list(APPEND QEMU_FLAGS
|
||||
-icount shift=${CONFIG_QEMU_ICOUNT_SHIFT},align=off,sleep=off
|
||||
-rtc clock=vm)
|
||||
endif()
|
||||
|
||||
# Add a BT serial device when building for bluetooth, unless the
|
||||
# application explicitly opts out with NO_QEMU_SERIAL_BT_SERVER.
|
||||
if(CONFIG_BT)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue