diff --git a/src/ld_so/mod.rs b/src/ld_so/mod.rs index 74f3a73150..0d46adaa11 100644 --- a/src/ld_so/mod.rs +++ b/src/ld_so/mod.rs @@ -144,6 +144,20 @@ pub unsafe fn init(sp: &'static Stack) { const ARCH_GET_FS: usize = 0x1003; syscall!(ARCH_PRCTL, ARCH_GET_FS, &mut tp as *mut usize); } + #[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; + } #[cfg(all(target_os = "redox", target_arch = "x86"))] { let mut env = syscall::EnvRegisters::default();