The target_lock() implementation in altera-c5socarm/lock-dualprocnoos.c is broken on SMP systems. For a primitive SMP lock, see: https://en.wikipedia.org/wiki/Test_and_test-and-set