allocator-test: fix trusted stack revocation probe Ensure that the compiler loads the to be revoked pointer into a register prior to releasing the main thread. Otherwise, there is a chance that we never hold an unrevoked copy in the register file. Embarrassing fix to https://github.com/CHERIoT-Platform/cheriot-rtos/pull/422
diff --git a/tests/allocator-test.cc b/tests/allocator-test.cc index ae71d5d..87af6c3 100644 --- a/tests/allocator-test.cc +++ b/tests/allocator-test.cc
@@ -126,14 +126,12 @@ async([=]() { int ptag, scratch; - // Tell the main thread to go - state = 0; - /* - * Busy spin, ensuring that our test pointer is in a register - * throughout, then get its tag. + * Release the main thread, then busy spin, ensuring that our + * test pointer is in a register throughout, then get its tag. */ - __asm__ volatile("1:\n" + __asm__ volatile("csw zero, 0(%[state])\n" + "1:\n" "clw %[scratch], 0(%[state])\n" "beqz %[scratch], 1b\n" "cgettag %[out], %[p]\n"