this caused the dynamic linker/startup code to abort when r0 happened to contain a negative value.
@@ -1,5 +1,6 @@
.global __set_thread_area
.type __set_thread_area, @function
__set_thread_area:
+ ldc r4, gbr
rts
- ldc r4, gbr
+ mov #0, r0