As for abi/syscalls. I noticed that strace reports hundreds of calls to get_thread_area() under Linux/m68k. I presume under x86, arm etc. some CPU register is used to store pointer to the TLS, but under m68k "they" decided to invoke syscall every single time. I don't think it'd be very efficient, and also it pollutes strace output, unfortunately, given how frequently TLS is accessed these days.
$ uname -a
Linux ds-m68k 5.16.0-rc1-g02e0dceb9e3b #7 Fri Jan 14 01:27:22 CET 2022 m68k GNU/Linux
$ strace -c /bin/ls
% time seconds usecs/call calls errors syscall
---- ----------- ----------- --------- --------- ----------------
0.00 0.000000 0 6 read
0.00 0.000000 0 1 write
0.00 0.000000 0 10 close
0.00 0.000000 0 1 execve
0.00 0.000000 0 2 2 access
0.00 0.000000 0 3 brk
0.00 0.000000 0 3 ioctl
0.00 0.000000 0 1 munmap
0.00 0.000000 0 2 2 statfs
0.00 0.000000 0 1 uname
0.00 0.000000 0 10 mprotect
0.00 0.000000 0 14 mmap2
0.00 0.000000 0 2 getdents64
0.00 0.000000 0 8 openat
0.00 0.000000 0 285 get_thread_area
0.00 0.000000 0 1 set_thread_area
0.00 0.000000 0 9 statx
---- ----------- ----------- --------- --------- ----------------
100.00 0.000000 0 359 4 total