From 602fd9fe080a0822fc63bbda2b484fbc75901c3e Mon Sep 17 00:00:00 2001 From: Jeremy Soller <jeremy@system76.com> Date: Wed, 28 Apr 2021 21:29:09 -0600 Subject: [PATCH] Fixes for TCB arch_read on aarch64 --- src/ld_so/tcb.rs | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/ld_so/tcb.rs b/src/ld_so/tcb.rs index a1058c941..e9133c849 100644 --- a/src/ld_so/tcb.rs +++ b/src/ld_so/tcb.rs @@ -214,20 +214,15 @@ impl Tcb { #[inline(always)] #[cfg(target_arch = "aarch64")] unsafe fn arch_read(offset: usize) -> usize { - 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) + let tp: usize; + llvm_asm!("mrs $0, tpidr_el0" + : "=r"(tp) + : : : "volatile" ); - value + + *((tp + offset) as *const usize) } /// Architecture specific code to read a usize from the TCB - x86_64 -- GitLab