prof: samples userspace PCs
[akaros.git] / kern / src / smp.c
index 0ae15b8..afd7e9a 100644 (file)
@@ -35,7 +35,7 @@ static void try_run_proc(void)
        struct per_cpu_info *pcpui = &per_cpu_info[core_id()];
        /* There was a process running here, and we should return to it. */
        if (pcpui->owning_proc) {
-               assert(!pcpui->cur_sysc);
+               assert(!pcpui->cur_kthread->sysc);
                assert(pcpui->cur_ctx);
                __proc_startcore(pcpui->owning_proc, pcpui->cur_ctx);
                assert(0);
@@ -58,6 +58,7 @@ static void __attribute__((noinline, noreturn)) __smp_idle(void)
 {
        struct per_cpu_info *pcpui = &per_cpu_info[core_id()];
        clear_rkmsg(pcpui);
+       pcpui->cur_kthread->is_ktask = FALSE;
        enable_irq();   /* one-shot change to get any IRQs before we halt later */
        while (1) {
                disable_irq();
@@ -78,6 +79,7 @@ void smp_idle(void)
 {
        #ifdef CONFIG_RESET_STACKS
        set_stack_pointer(get_stack_top());
+       set_frame_pointer(0);
        #endif /* CONFIG_RESET_STACKS */
        __smp_idle();
        assert(0);