From b0d3e5b154828260db8457534e92dbcdf895a58d Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 25 Aug 2022 18:58:12 -0600 Subject: [PATCH] Correct instruction to read aarch64 thread pointer --- src/ld_so/mod.rs | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/src/ld_so/mod.rs b/src/ld_so/mod.rs index 0d46adaa11..01819030fa 100644 --- a/src/ld_so/mod.rs +++ b/src/ld_so/mod.rs @@ -146,17 +146,10 @@ pub unsafe fn init(sp: &'static Stack) { } #[cfg(all(target_os = "redox", target_arch = "aarch64"))] { - let mut env = syscall::EnvRegisters::default(); - - let file = syscall::open("thisproc:current/regs/env", syscall::O_CLOEXEC | syscall::O_RDONLY) - .expect_notls("failed to open handle for process registers"); - - let _ = syscall::read(file, &mut env) - .expect_notls("failed to read tpidr_el0"); - - let _ = syscall::close(file); - - tp = env.tpidr_el0; + core::arch::asm!( + "mrs {}, tpidr_el0", + out(reg) tp, + ); } #[cfg(all(target_os = "redox", target_arch = "x86"))] {