apic_done_servicing();
asm volatile("pushl %0\n"
- "jmp switch_to\n" ::"r"(proc)); // kernel/asm/x86/interrupt.S
+ "jmp switch_to\n" ::"r"(proc)
+ : "memory"); // kernel/asm/x86/interrupt.S
}
int
done:
cpu_disable_interrupt();
status_flags |= PEXITSIG * (proc->sig_inprogress != 0);
- *status = proc->exit_code | status_flags;
+ if (status) {
+ *status = proc->exit_code | status_flags;
+ }
return destroy_process(proc->pid);
}