From 886f467a7523fd1dc80b616387e2c3d082afba6f Mon Sep 17 00:00:00 2001 From: Robin Randhawa <robin.randhawa@arm.com> Date: Mon, 18 Jan 2021 22:01:32 +0000 Subject: [PATCH] aarch64: TLS arch_read implementation --- src/ld_so/tcb.rs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/ld_so/tcb.rs b/src/ld_so/tcb.rs index 923a40ca..0493f303 100644 --- a/src/ld_so/tcb.rs +++ b/src/ld_so/tcb.rs @@ -208,8 +208,20 @@ impl Tcb { #[inline(always)] #[cfg(target_arch = "aarch64")] unsafe fn arch_read(offset: usize) -> usize { - //TODO: aarch64 - unimplemented!("arch_read not implemented on aarch64"); + let mut value = 0usize; + let mut tmp = 0usize; + + llvm_asm!(" + mrs $0, tpidr_el0 + add $0, $0, $2 + ldr $1, [$0] + " + : "=r"(tmp), "=r"(value) + : "r"(offset) + : + : "volatile" + ); + value } /// Architecture specific code to read a usize from the TCB - x86_64 -- GitLab