diff --git a/src/context/list.rs b/src/context/list.rs index 2e85ae8e150daa3df8f2e26e509231ff6ccc2432..fbc92dbbf547e3eed82d48436a8571decd7fdb14 100644 --- a/src/context/list.rs +++ b/src/context/list.rs @@ -92,7 +92,6 @@ impl ContextList { #[cfg(target_arch = "aarch64")] { let context_id = context.id.into(); - context.arch.set_tcb(context_id); context.arch.set_lr(func as usize); context.arch.set_context_handle(); } diff --git a/src/context/switch.rs b/src/context/switch.rs index 2e17b42821bfa510802bb622c3657567830fa137..634aff32c2aded32d00a2844aeb173ed71d2cfd3 100644 --- a/src/context/switch.rs +++ b/src/context/switch.rs @@ -151,6 +151,11 @@ pub unsafe fn switch() -> bool { } gdt::set_tcb((*to_ptr).id.into()); } + #[cfg(target_arch = "aarch64")] + { + let pid = (*to_ptr).id.into(); + (*to_ptr).arch.set_tcb(pid); + } CONTEXT_ID.store((*to_ptr).id, Ordering::SeqCst); }