Stop zeroing current_ctx before popping a TF
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 1 Feb 2016 22:50:13 +0000 (17:50 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 2 Feb 2016 22:43:52 +0000 (17:43 -0500)
I'll need to use current_ctx when popping a VM_TF fails.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/arch/x86/trap.c
kern/src/process.c

index b149ba8..54a803e 100644 (file)
@@ -436,7 +436,6 @@ static void set_current_ctx_hw(struct per_cpu_info *pcpui,
                                struct hw_trapframe *hw_tf)
 {
        assert(!irq_is_enabled());
-       assert(!pcpui->cur_ctx);
        pcpui->actual_ctx.type = ROS_HW_CTX;
        pcpui->actual_ctx.tf.hw_tf = *hw_tf;
        pcpui->cur_ctx = &pcpui->actual_ctx;
@@ -446,18 +445,15 @@ static void set_current_ctx_sw(struct per_cpu_info *pcpui,
                                struct sw_trapframe *sw_tf)
 {
        assert(!irq_is_enabled());
-       assert(!pcpui->cur_ctx);
        pcpui->actual_ctx.type = ROS_SW_CTX;
        pcpui->actual_ctx.tf.sw_tf = *sw_tf;
        pcpui->cur_ctx = &pcpui->actual_ctx;
 }
 
-/* TODO: (VMCTX) need to call this after we enter the kernel from a vm ctx. */
 static void set_current_ctx_vm(struct per_cpu_info *pcpui,
                                struct vm_trapframe *vm_tf)
 {
        assert(!irq_is_enabled());
-       assert(!pcpui->cur_ctx);
        pcpui->actual_ctx.type = ROS_VM_CTX;
        pcpui->actual_ctx.tf.vm_tf = *vm_tf;
        pcpui->cur_ctx = &pcpui->actual_ctx;
index 20e90a1..38f54d7 100644 (file)
@@ -752,8 +752,6 @@ void __proc_startcore(struct proc *p, struct user_context *ctx)
         * to block later and lose track of our address space. */
        assert(!is_ktask(pcpui->cur_kthread));
        __set_proc_current(p);
-       /* Clear the current_ctx, since it is no longer used */
-       current_ctx = 0;        /* TODO: might not need this... */
        __set_cpu_state(pcpui, CPU_STATE_USER);
        proc_pop_ctx(ctx);
 }