Index: src/nonsfi/irt/irt_interfaces.c |
diff --git a/src/nonsfi/irt/irt_interfaces.c b/src/nonsfi/irt/irt_interfaces.c |
index a797355b188e9090135d05e66837b409307b0fe9..b2a7636fa68af2704cfacc586f17b70f719a73be 100644 |
--- a/src/nonsfi/irt/irt_interfaces.c |
+++ b/src/nonsfi/irt/irt_interfaces.c |
@@ -362,6 +362,27 @@ void *__nacl_read_tp(void) { |
} |
#endif |
+#if defined(__arm_nonsfi_linux__) |
+ |
+__asm__(".pushsection .text, \"ax\", %progbits\n" |
+ ".global __aeabi_read_tp\n" |
+ ".type __aeabi_read_tp, %function\n" |
+ ".arm\n" |
+ "__aeabi_read_tp:\n" |
+ "push {r1-r3, lr}\n" |
+ "vpush {d0-d7}\n" |
+ "blx aeabi_read_tp_impl\n" |
+ "vpop {d0-d7}\n" |
+ "pop {r1-r3, pc}\n" |
+ ".popsection\n"); |
+ |
+void *aeabi_read_tp_impl(void) { |
+ return g_tls_value; |
+} |
+ |
+#endif |
+ |
+ |
struct thread_args { |
void (*start_func)(void); |
void *thread_ptr; |