- TRACEMSG("switching from %p:%s to %p:%s",
- old_process, old_process->monitor.name,
- CurrentProcess, CurrentProcess->monitor.name);
- swapcontext(&old_process->context, &CurrentProcess->context);
-// TRACEMSG("launching %p:%s", CurrentProcess, CurrentProcess->monitor.name);
-// CurrentProcess->leaving = true;
-// setcontext(&CurrentProcess->context);
- /* not reached */
+ TRACEMSG("no runnable processes!");
+ IRQ_ENABLE;
+ pause();
+ }
+ else
+ {
+ if (old_process != CurrentProcess)
+ {
+ TRACEMSG("switching from %p:%s to %p:%s",
+ old_process, old_process ? old_process->monitor.name : "-",
+ CurrentProcess, CurrentProcess->monitor.name);
+
+ if (old_process)
+ swapcontext(&old_process->context, &CurrentProcess->context);
+ else
+ setcontext(&CurrentProcess->context);
+
+ /* not reached */
+ }
+ TRACEMSG("keeping %p:%s", CurrentProcess, CurrentProcess->monitor.name);