diff --git a/src/ld_so/tcb.rs b/src/ld_so/tcb.rs
index 01327e8ef2acd338d0467058b7742b61f307b71a..3826322fa7bcd8352df1111a0de47902543274cf 100644
--- a/src/ld_so/tcb.rs
+++ b/src/ld_so/tcb.rs
@@ -201,11 +201,9 @@ impl Tcb {
     unsafe fn arch_read(offset: usize) -> usize {
         // TODO: s/llvm_asm/asm/g
         let tp: usize;
-        llvm_asm!("mrs $0, tpidr_el0"
-            : "=r"(tp)
-            :
-            :
-            : "volatile"
+        asm!(
+            "mrs {}, tpidr_el0",
+            out(reg) tp,
         );
 
         *((tp + offset) as *const usize)