2
0
Эх сурвалжийг харах

Merge branch 'aarch64-fixups' into 'master'

aarch64: TLS arch_read implementation

See merge request redox-os/relibc!330
Jeremy Soller 4 жил өмнө
parent
commit
a16f535ee8
1 өөрчлөгдсөн 14 нэмэгдсэн , 2 устгасан
  1. 14 2
      src/ld_so/tcb.rs

+ 14 - 2
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