since it did not set the return-value register, the caller could wrongly interpret this as failure.
based on initial work by rdp, with heavy modifications. some features including threads are untested because qemu app-level emulation seems to be broken and I do not have a proper system image for testing.