entry_32.S (527c465a3c8716d93201ae34b7fc52679610596d) | entry_32.S (5ed92a8ab71f8865ba07811429c988c72299b315) |
---|---|
1/* 2 * Copyright (C) 1991,1992 Linus Torvalds 3 * 4 * entry_32.S contains the system-call and low-level fault and trap handling routines. 5 * 6 * Stack layout in 'syscall_exit': 7 * ptrace needs to have all registers on the stack. 8 * If the order here is changed, it needs to be --- 511 unchanged lines hidden (view full) --- 520 andl $_TIF_WORK_MASK, %ecx # is there any work to be done other 521 # than syscall tracing? 522 jz restore_all 523 testb $_TIF_NEED_RESCHED, %cl 524 jnz work_resched 525 526work_notifysig: # deal with pending signals and 527 # notify-resume requests | 1/* 2 * Copyright (C) 1991,1992 Linus Torvalds 3 * 4 * entry_32.S contains the system-call and low-level fault and trap handling routines. 5 * 6 * Stack layout in 'syscall_exit': 7 * ptrace needs to have all registers on the stack. 8 * If the order here is changed, it needs to be --- 511 unchanged lines hidden (view full) --- 520 andl $_TIF_WORK_MASK, %ecx # is there any work to be done other 521 # than syscall tracing? 522 jz restore_all 523 testb $_TIF_NEED_RESCHED, %cl 524 jnz work_resched 525 526work_notifysig: # deal with pending signals and 527 # notify-resume requests |
528#ifdef CONFIG_VM86 529 testl $X86_EFLAGS_VM, PT_EFLAGS(%esp) 530 movl %esp, %eax 531 jnz work_notifysig_v86 # returning to kernel-space or 532 # vm86-space 5331: 534#else 535 movl %esp, %eax 536#endif | |
537 TRACE_IRQS_ON 538 ENABLE_INTERRUPTS(CLBR_NONE) | 528 TRACE_IRQS_ON 529 ENABLE_INTERRUPTS(CLBR_NONE) |
539 movb PT_CS(%esp), %bl 540 andb $SEGMENT_RPL_MASK, %bl 541 cmpb $USER_RPL, %bl 542 jb resume_kernel | 530 movl %esp, %eax |
543 xorl %edx, %edx 544 call do_notify_resume 545 jmp resume_userspace | 531 xorl %edx, %edx 532 call do_notify_resume 533 jmp resume_userspace |
546 547#ifdef CONFIG_VM86 548 ALIGN 549work_notifysig_v86: 550 pushl %ecx # save ti_flags for do_notify_resume 551 call save_v86_state # %eax contains pt_regs pointer 552 popl %ecx 553 movl %eax, %esp 554 jmp 1b 555#endif | |
556END(work_pending) 557 558 # perform syscall exit tracing 559 ALIGN 560syscall_trace_entry: 561 movl $-ENOSYS, PT_EAX(%esp) 562 movl %esp, %eax 563 call syscall_trace_enter --- 685 unchanged lines hidden --- | 534END(work_pending) 535 536 # perform syscall exit tracing 537 ALIGN 538syscall_trace_entry: 539 movl $-ENOSYS, PT_EAX(%esp) 540 movl %esp, %eax 541 call syscall_trace_enter --- 685 unchanged lines hidden --- |