| version 1.78, 2008/10/19 14:12:28 |
version 1.79, 2008/11/11 14:40:18 |
|
|
| END(dumpsys) |
END(dumpsys) |
| |
|
| /* |
/* |
| * struct lwp *cpu_switchto(struct lwp *oldlwp, struct newlwp, |
* struct lwp *cpu_switchto(struct lwp *oldlwp, struct *newlwp, |
| * bool returning) |
* bool returning) |
| * |
* |
| * 1. if (oldlwp != NULL), save its context. |
* 1. if (oldlwp != NULL), save its context. |
| Line 1008 ENTRY(cpu_switchto) |
|
| Line 1008 ENTRY(cpu_switchto) |
|
| 2: |
2: |
| #ifndef XEN |
#ifndef XEN |
| movl $IPL_IPI,CPUVAR(ILEVEL) |
movl $IPL_IPI,CPUVAR(ILEVEL) |
| movl PCB_CR0(%ebx),%ecx |
movl PCB_CR0(%ebx),%ecx /* has CR0_TS clear */ |
| movl %cr0,%edx |
movl %cr0,%edx |
| |
|
| /* |
/* |
| * If our floating point registers are on a different CPU, |
* If our floating point registers are on a different CPU, |
| * set CR0_TS so we'll trap rather than reuse bogus state. |
* set CR0_TS so we'll trap rather than reuse bogus state. |
| */ |
*/ |
| movl PCB_FPCPU(%ebx),%eax |
cmpl CPUVAR(FPCURLWP),%edi |
| cmpl CPUVAR(SELF),%eax |
|
| je 3f |
je 3f |
| orl $CR0_TS,%ecx |
orl $CR0_TS,%ecx |
| |
|