| version 1.71, 2008/05/02 15:26:38 |
version 1.72, 2008/05/03 05:56:44 |
| Line 805 NENTRY(lgdt_finish) |
|
| Line 805 NENTRY(lgdt_finish) |
|
| pushl $GSEL(GCODE_SEL, SEL_KPL) |
pushl $GSEL(GCODE_SEL, SEL_KPL) |
| pushl %eax |
pushl %eax |
| lret |
lret |
| |
END(lgdt_finish) |
| |
|
| #endif /* XEN */ |
#endif /* XEN */ |
| |
|
| Line 829 NENTRY(lwp_trampoline) |
|
| Line 830 NENTRY(lwp_trampoline) |
|
| addl $4,%esp |
addl $4,%esp |
| jmp .Lsyscall_checkast |
jmp .Lsyscall_checkast |
| /* NOTREACHED */ |
/* NOTREACHED */ |
| |
END(lwp_trampoline) |
| |
|
| /* |
/* |
| * sigcode() |
* sigcode() |
|
|
| int $0x80 # exit if sigreturn fails |
int $0x80 # exit if sigreturn fails |
| .globl _C_LABEL(esigcode) |
.globl _C_LABEL(esigcode) |
| _C_LABEL(esigcode): |
_C_LABEL(esigcode): |
| |
END(sigcode) |
| |
|
| /* |
/* |
| * int setjmp(label_t *) |
* int setjmp(label_t *) |
|
|
| movl %edx,20(%eax) # save eip |
movl %edx,20(%eax) # save eip |
| xorl %eax,%eax # return 0 |
xorl %eax,%eax # return 0 |
| ret |
ret |
| |
END(setjmp) |
| |
|
| /* |
/* |
| * int longjmp(label_t *) |
* int longjmp(label_t *) |
|
|
| movl %edx,(%esp) # put in return frame |
movl %edx,(%esp) # put in return frame |
| movl $1,%eax # return 1 |
movl $1,%eax # return 1 |
| ret |
ret |
| |
END(longjmp) |
| |
|
| /* |
/* |
| * void dumpsys(void) |
* void dumpsys(void) |
|
|
| call _C_LABEL(dodumpsys) # dump! |
call _C_LABEL(dodumpsys) # dump! |
| addl $(3*4), %esp # unwind switchframe |
addl $(3*4), %esp # unwind switchframe |
| ret |
ret |
| |
END(dumpsys) |
| |
|
| /* |
/* |
| * struct lwp *cpu_switchto(struct lwp *oldlwp, struct newlwp, |
* struct lwp *cpu_switchto(struct lwp *oldlwp, struct newlwp, |
| Line 1049 ENTRY(cpu_switchto) |
|
| Line 1055 ENTRY(cpu_switchto) |
|
| popl %esi |
popl %esi |
| movl $((CPU_INFO_IOMAP - CPU_INFO_TSS) << 16),CPUVAR(IOBASE) |
movl $((CPU_INFO_IOMAP - CPU_INFO_TSS) << 16),CPUVAR(IOBASE) |
| jmp .Liobitmap_done |
jmp .Liobitmap_done |
| |
END(cpu_switchto) |
| |
|
| /* |
/* |
| * void savectx(struct pcb *pcb); |
* void savectx(struct pcb *pcb); |
|
|
| movl %esp,PCB_ESP(%edx) |
movl %esp,PCB_ESP(%edx) |
| movl %ebp,PCB_EBP(%edx) |
movl %ebp,PCB_EBP(%edx) |
| ret |
ret |
| |
END(savectx) |
| |
|
| /* |
/* |
| * osyscall() |
* osyscall() |
| Line 1071 IDTVEC(osyscall) |
|
| Line 1079 IDTVEC(osyscall) |
|
| popl 8(%esp) |
popl 8(%esp) |
| pushl $7 # size of instruction for restart |
pushl $7 # size of instruction for restart |
| jmp syscall1 |
jmp syscall1 |
| |
IDTVEC_END(osyscall) |
| |
|
| /* |
/* |
| * syscall() |
* syscall() |
|
|
| call _C_LABEL(trap) |
call _C_LABEL(trap) |
| addl $4,%esp |
addl $4,%esp |
| jmp .Lsyscall_checkast /* re-check ASTs */ |
jmp .Lsyscall_checkast /* re-check ASTs */ |
| |
IDTVEC_END(syscall) |
| |
|
| #if NNPX > 0 |
#if NNPX > 0 |
| /* |
/* |
| Line 1184 NENTRY(probeintr) |
|
| Line 1194 NENTRY(probeintr) |
|
| outb %al,$0xf0 # clear BUSY# latch |
outb %al,$0xf0 # clear BUSY# latch |
| popl %eax |
popl %eax |
| iret |
iret |
| |
END(probeintr) |
| |
|
| /* |
/* |
| * void probetrap(void) |
* void probetrap(void) |
| Line 1193 NENTRY(probetrap) |
|
| Line 1204 NENTRY(probetrap) |
|
| incl _C_LABEL(npx_traps_while_probing) |
incl _C_LABEL(npx_traps_while_probing) |
| fnclex |
fnclex |
| iret |
iret |
| |
END(probetrap) |
| |
|
| /* |
/* |
| * int npx586bug1(int a, int b) |
* int npx586bug1(int a, int b) |
| Line 1208 NENTRY(npx586bug1) |
|
| Line 1220 NENTRY(npx586bug1) |
|
| fistpl (%esp) |
fistpl (%esp) |
| popl %eax |
popl %eax |
| ret |
ret |
| |
END(npx586bug1) |
| #endif /* NNPX > 0 */ |
#endif /* NNPX > 0 */ |
| |
|
| /* |
/* |
| Line 1237 ENTRY(sse2_zero_page) |
|
| Line 1250 ENTRY(sse2_zero_page) |
|
| sfence |
sfence |
| pop %ebp |
pop %ebp |
| ret |
ret |
| |
END(sse2_zero_page) |
| |
|
| /* |
/* |
| * void sse2_copy_page(void *src, void *dst) |
* void sse2_copy_page(void *src, void *dst) |
| Line 1271 ENTRY(sse2_copy_page) |
|
| Line 1285 ENTRY(sse2_copy_page) |
|
| popl %ebx |
popl %ebx |
| popl %ebp |
popl %ebp |
| ret |
ret |
| |
END(sse2_copy_page) |