Clear excess parts of contexts when finalizing
[akaros.git] / kern / arch / x86 / trap64.h
index 1c9b8ae..6475e2e 100644 (file)
@@ -171,45 +171,3 @@ static inline bool arch_ctx_is_partial(struct user_context *ctx)
        }
        return FALSE;
 }
-
-/* Partial contexts for HW and SW TFs have the user's gs in MSR_KERNEL_GS_BASE.
- * The kernel's gs is loaded into gs.  We need to put the kernel's gs into
- * KERNEL_GS_BASE so the core is ready to run another full context, save the
- * user's {GS,FS}_BASE into their TF so it can run on another core, and keep GS
- * loaded with the current GS (the kernel's). */
-static inline void x86_finalize_hwtf(struct hw_trapframe *tf)
-{
-       tf->tf_gsbase = read_msr(MSR_KERNEL_GS_BASE);
-       write_msr(MSR_KERNEL_GS_BASE, read_gsbase());
-       tf->tf_fsbase = read_fsbase();
-       x86_hwtf_clear_partial(tf);
-}
-
-static inline void x86_finalize_swtf(struct sw_trapframe *tf)
-{
-       tf->tf_gsbase = read_msr(MSR_KERNEL_GS_BASE);
-       write_msr(MSR_KERNEL_GS_BASE, read_gsbase());
-       tf->tf_fsbase = read_fsbase();
-       x86_swtf_clear_partial(tf);
-}
-
-void x86_finalize_vmtf(struct vm_trapframe *tf);
-
-/* Makes sure that the user context is fully saved into ctx and not split across
- * the struct and HW, meaning it is not a "partial context". */
-static inline void arch_finalize_ctx(struct user_context *ctx)
-{
-       if (!arch_ctx_is_partial(ctx))
-               return;
-       switch (ctx->type) {
-       case ROS_HW_CTX:
-               x86_finalize_hwtf(&ctx->tf.hw_tf);
-               break;
-       case ROS_SW_CTX:
-               x86_finalize_swtf(&ctx->tf.sw_tf);
-               break;
-       case ROS_VM_CTX:
-               x86_finalize_vmtf(&ctx->tf.vm_tf);
-               break;
-       }
-}