Oh damn it, you're right. Apparently encoding T3 of the branch instruction inside an IT block is always unpredictable... Guess the inline assembly version ignores the .w extension and creates some other encoding that simply works.
I've attached the .elf which is causing GDB to halt.
Currently I'm invoking QEMU GNU MCU (some fork with small CortexM extensions) with
qemu-system-gnuarmeclipse -S -s -verbose -semihosting-config enable=on,target=native -mcu STM32F407VG --image arm_unpredictable_branch.elf
QEMU GNU MCU is currently at version 2.8.0.
But as I mentioned before I've also tried it with 3.0.0 from the ARCH repository and both versions did the same thing. I think the only difference is the "--image" option which translates to "--kernel" in the original.
Oh damn it, you're right. Apparently encoding T3 of the branch instruction inside an IT block is always unpredictable... Guess the inline assembly version ignores the .w extension and creates some other encoding that simply works.
I've attached the .elf which is causing GDB to halt.
Currently I'm invoking QEMU GNU MCU (some fork with small CortexM extensions) with gnuarmeclipse -S -s -verbose -semihosting-config enable= on,target= native -mcu STM32F407VG --image arm_unpredictab le_branch. elf
qemu-system-
QEMU GNU MCU is currently at version 2.8.0.
But as I mentioned before I've also tried it with 3.0.0 from the ARCH repository and both versions did the same thing. I think the only difference is the "--image" option which translates to "--kernel" in the original.