| version 1.44, 2006/10/25 13:56:15 |
version 1.44.2.1, 2010/12/10 22:14:57 |
|
|
| * we're running at splhigh(), but it's otherwise okay to take |
* we're running at splhigh(), but it's otherwise okay to take |
| * interrupts here. |
* interrupts here. |
| */ |
*/ |
| sti |
/*sti -- no it isn't! */ |
| leal _C_LABEL(sched_qs)(,%ebx,8),%eax # select q |
leal _C_LABEL(sched_qs)(,%ebx,8),%eax # select q |
| |
|
| movl L_FORW(%eax),%edi # unlink from front of process q |
movl L_FORW(%eax),%edi # unlink from front of process q |
| Line 1049 switch_restored: |
|
| Line 1049 switch_restored: |
|
| SET_CURPCB(%esi) |
SET_CURPCB(%esi) |
| |
|
| /* Interrupts are okay again. */ |
/* Interrupts are okay again. */ |
| sti |
/*sti -- nope, not yet! */ |
| |
|
| /* |
/* |
| * Check for restartable atomic sequences (RAS) |
* Check for restartable atomic sequences (RAS) |
|
|
| #if defined(MULTIPROCESSOR) || defined(LOCKDEBUG) |
#if defined(MULTIPROCESSOR) || defined(LOCKDEBUG) |
| call _C_LABEL(sched_unlock_idle) |
call _C_LABEL(sched_unlock_idle) |
| #endif |
#endif |
| |
sti /* NOW we can do this, after releasing sched_lock */ |
| cmpl $0,CPUVAR(IPENDING) |
cmpl $0,CPUVAR(IPENDING) |
| jz 3f |
jz 3f |
| pushl $IPL_NONE # spl0() |
pushl $IPL_NONE # spl0() |
| Line 1129 ENTRY(cpu_switchto) |
|
| Line 1130 ENTRY(cpu_switchto) |
|
| * We're running at splhigh(), but it's otherwise okay to take |
* We're running at splhigh(), but it's otherwise okay to take |
| * interrupts here. |
* interrupts here. |
| */ |
*/ |
| sti |
/*sti -- no it isn't! */ |
| |
|
| /* Jump into the middle of cpu_switch */ |
/* Jump into the middle of cpu_switch */ |
| xorl %eax,%eax |
xorl %eax,%eax |