boards/arc/qemu_arc: Disable use of branch delay slots

I spent several hours debugging a weird stack pointer corruption bug and
discovered that QEMU appears to mess up register contents when an interrupt
fires during the execution of a branch with a delay slot.

Instead of trying to fix qemu, let's just tell the compiler to not generate
code that uses the branch instructions with delay slots.

Closes: #60071

Signed-off-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
Keith Packard 2023-07-13 21:59:53 -07:00 committed by Carles Cufí
commit 8084ea55b7
5 changed files with 5 additions and 0 deletions

View file

@ -10,3 +10,4 @@ CONFIG_UART_CONSOLE=y
CONFIG_SERIAL=y
CONFIG_QEMU_ICOUNT_SHIFT=6
CONFIG_ARC_MPU_ENABLE=y
CONFIG_COMPILER_OPT="-fno-delayed-branch"

View file

@ -10,3 +10,4 @@ CONFIG_CONSOLE=y
CONFIG_UART_CONSOLE=y
CONFIG_SERIAL=y
CONFIG_QEMU_ICOUNT_SHIFT=6
CONFIG_COMPILER_OPT="-fno-delayed-branch"

View file

@ -10,3 +10,4 @@ CONFIG_CONSOLE=y
CONFIG_UART_CONSOLE=y
CONFIG_SERIAL=y
CONFIG_QEMU_ICOUNT_SHIFT=6
CONFIG_COMPILER_OPT="-fno-delayed-branch"

View file

@ -10,3 +10,4 @@ CONFIG_UART_CONSOLE=y
CONFIG_SERIAL=y
CONFIG_QEMU_ICOUNT_SHIFT=6
CONFIG_ARC_MPU_ENABLE=y
CONFIG_COMPILER_OPT="-fno-delayed-branch"

View file

@ -10,3 +10,4 @@ CONFIG_UART_CONSOLE=y
CONFIG_SERIAL=y
CONFIG_QEMU_ICOUNT_SHIFT=6
CONFIG_ARC_MPU_ENABLE=y
CONFIG_COMPILER_OPT="-fno-delayed-branch"