Commit f9dcc877 authored by Isaac Oscar Gariano's avatar Isaac Oscar Gariano

Undid inlining of get_thread_local (it didn't work, will fix later..)

parent 9c65b72a
......@@ -2466,18 +2466,22 @@ impl <'a> InstructionSelection {
// This generates code identical to (though it may use different registers) the function muentry_get_thread_local
fn emit_get_threadlocal(&mut self, f_context: &mut FunctionContext, vm: &VM) -> P<Value>
let mut rets = self.emit_runtime_entry(&entrypoints::GET_THREAD_LOCAL, vec![], None, None, f_context, vm);
/* TODO: Fix this
let tmp = make_temporary(f_context, ADDRESS_TYPE.clone(), vm);
// Read the start address of thread local storage
self.backend.emit_mrs(&tmp, "TPIDR_EL0");
// Add the offset of mu_tls
self.backend.emit_add_str(&tmp, &tmp, ":tprel_hi12:mu_tls");
self.backend.emit_add_str(&tmp, &tmp, ":tprel_hi12:mu_tls, LSL #12");
self.backend.emit_add_str(&tmp, &tmp, ":tprel_lo12_nc:mu_tls");
// Load tmp with the value of mu_tls
emit_load(self.backend.as_mut(), &tmp, &tmp, f_context, vm);
// ret: Option<Vec<P<Value>>
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment