version 1.132, 2016/07/01 13:11:21 |
version 1.133, 2016/07/04 07:56:07 |
|
|
/* Is this process using RAS (restartable atomic sequences)? */ |
/* Is this process using RAS (restartable atomic sequences)? */ |
movl L_PROC(%edi),%eax |
movl L_PROC(%edi),%eax |
cmpl $0,P_RASLIST(%eax) |
cmpl $0,P_RASLIST(%eax) |
jne 5f |
je no_RAS |
|
|
|
/* Handle restartable atomic sequences (RAS). */ |
|
movl L_MD_REGS(%edi),%ecx |
|
pushl TF_EIP(%ecx) |
|
pushl %eax |
|
call _C_LABEL(ras_lookup) |
|
addl $8,%esp |
|
cmpl $-1,%eax |
|
je no_RAS |
|
movl L_MD_REGS(%edi),%ecx |
|
movl %eax,TF_EIP(%ecx) |
|
no_RAS: |
|
|
/* |
/* |
* Restore cr0 (including FPU state). Raise the IPL to IPL_HIGH. |
* Restore cr0 (including FPU state). Raise the IPL to IPL_HIGH. |
* FPU IPIs can alter the LWP's saved cr0. Dropping the priority |
* FPU IPIs can alter the LWP's saved cr0. Dropping the priority |
* is deferred until mi_switch(), when cpu_switchto() returns. |
* is deferred until mi_switch(), when cpu_switchto() returns. |
*/ |
*/ |
2: |
|
#ifdef XEN |
#ifdef XEN |
pushl %edi |
pushl %edi |
call _C_LABEL(i386_tls_switch) |
call _C_LABEL(i386_tls_switch) |
|
|
popl %ebx |
popl %ebx |
ret |
ret |
|
|
/* Check for restartable atomic sequences (RAS). */ |
|
5: movl L_MD_REGS(%edi),%ecx |
|
pushl TF_EIP(%ecx) |
|
pushl %eax |
|
call _C_LABEL(ras_lookup) |
|
addl $8,%esp |
|
cmpl $-1,%eax |
|
je 2b |
|
movl L_MD_REGS(%edi),%ecx |
|
movl %eax,TF_EIP(%ecx) |
|
jmp 2b |
|
|
|
.Lcopy_iobitmap: |
.Lcopy_iobitmap: |
/* Copy I/O bitmap. */ |
/* Copy I/O bitmap. */ |
incl _C_LABEL(pmap_iobmp_evcnt)+EV_COUNT |
incl _C_LABEL(pmap_iobmp_evcnt)+EV_COUNT |