Index: src/nonsfi/irt/irt_interfaces.c |
diff --git a/src/nonsfi/irt/irt_interfaces.c b/src/nonsfi/irt/irt_interfaces.c |
index d1561c5979a65c908cf6348202e261452461fa17..1f363610826239d0628d6782b280a5be48b8fd03 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; |