Hello all, You can find a new self-modifying test case in the following branch: > git clone https://git.virtualopensystems.com/dev/tcg_baremetal_tests.git -b > smc_test
For each core, the test will run a small assembly snippet which increments a variable. Immediately after, the snippet is modified in memory to increment by 1 or 2 every other loop cycle, then passes execution to the next core. At the end of the test we calculate the expected result and compare it to the actual incremented variable. If all code modifications happened correctly we pass the test. The test case has been tested with upstream QEMU, MTTCG and KVM with success. Next version of the test will include more corner cases, such as changing TBs immediately after code modification, to make sure that we cover every scenario. To run it: > make virt (or virt64/vexpress for other targets) > ~/mttcg/arm-softmmu/qemu-system-arm -nographic -M virt -cpu cortex-a15 > -kernel build-virt/image-virt.axf -smp 8 Also, by popular demand I started a port of the test for kvm-unit-tests: > git clone https://git.virtualopensystems.com/dev/kvm-unit-tests.git For the kvm-unit-tests version, I have some troubles with caches and the MMU (which is disabled for this test). While TCG and MTTCG work, KVM fails the test with strange results. I will keep looking to find the exact problem. Best regards.