about summary refs log tree commit diff
path: root/src/thread/arm/__aeabi_read_tp_c.c
diff options
context:
space:
mode:
authorSzabolcs Nagy <nsz@port70.net>2018-08-24 23:11:59 +0000
committerRich Felker <dalias@aerifal.cx>2018-08-28 17:08:14 -0400
commit056f9d818eaf1dbe9e9d63b64b109fd9b608fa36 (patch)
treec6b94b438e17f8618275279f62fc56c30052408a /src/thread/arm/__aeabi_read_tp_c.c
parentcdbbcfb8f5d748f17694a5cc404af4b9381ff95f (diff)
downloadmusl-056f9d818eaf1dbe9e9d63b64b109fd9b608fa36.tar.gz
musl-056f9d818eaf1dbe9e9d63b64b109fd9b608fa36.tar.xz
musl-056f9d818eaf1dbe9e9d63b64b109fd9b608fa36.zip
rewrite __aeabi_read_tp in asm
__aeabi_read_tp used to call c code, but that was incorrect as the
arm runtime abi specifies special pcs for this function: it is only
allowed to clobber r0, ip, lr and cpsr.

maintainer's note: the old code explicitly saved and restored all
general-purpose registers which are call-clobbered in the normal
calling convention, so it's unlikely that any real-world compilers
produced code that could break. however theoretically they could have
chosen to use floating point registers, in which case the caller's
values of those registers would be clobbered.
Diffstat (limited to 'src/thread/arm/__aeabi_read_tp_c.c')
-rw-r--r--src/thread/arm/__aeabi_read_tp_c.c8
1 files changed, 0 insertions, 8 deletions
diff --git a/src/thread/arm/__aeabi_read_tp_c.c b/src/thread/arm/__aeabi_read_tp_c.c
deleted file mode 100644
index 0c56d613..00000000
--- a/src/thread/arm/__aeabi_read_tp_c.c
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "pthread_impl.h"
-#include <stdint.h>
-
-__attribute__((__visibility__("hidden")))
-void *__aeabi_read_tp_c(void)
-{
-	return TP_ADJ(__pthread_self());
-}