entry_32.S (fba961ab29e5ffb055592442808bb0f7962e05da) entry_32.S (4fe2d8b11a370af286287a2661de9d4e6c9a145a)
1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright (C) 1991,1992 Linus Torvalds
4 *
5 * entry_32.S contains the system-call and low-level fault and trap handling routines.
6 *
7 * Stack layout while running C code:
8 * ptrace needs to have all registers on the stack.

--- 928 unchanged lines hidden (view full) ---

937 pushl $-1 # mark this as an int
938 SAVE_ALL
939 ENCODE_FRAME_POINTER
940 xorl %edx, %edx # error code 0
941 movl %esp, %eax # pt_regs pointer
942
943 /* Are we currently on the SYSENTER stack? */
944 movl PER_CPU_VAR(cpu_entry_area), %ecx
1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright (C) 1991,1992 Linus Torvalds
4 *
5 * entry_32.S contains the system-call and low-level fault and trap handling routines.
6 *
7 * Stack layout while running C code:
8 * ptrace needs to have all registers on the stack.

--- 928 unchanged lines hidden (view full) ---

937 pushl $-1 # mark this as an int
938 SAVE_ALL
939 ENCODE_FRAME_POINTER
940 xorl %edx, %edx # error code 0
941 movl %esp, %eax # pt_regs pointer
942
943 /* Are we currently on the SYSENTER stack? */
944 movl PER_CPU_VAR(cpu_entry_area), %ecx
945 addl $CPU_ENTRY_AREA_SYSENTER_stack + SIZEOF_SYSENTER_stack, %ecx
946 subl %eax, %ecx /* ecx = (end of SYSENTER_stack) - esp */
947 cmpl $SIZEOF_SYSENTER_stack, %ecx
945 addl $CPU_ENTRY_AREA_entry_stack + SIZEOF_entry_stack, %ecx
946 subl %eax, %ecx /* ecx = (end of entry_stack) - esp */
947 cmpl $SIZEOF_entry_stack, %ecx
948 jb .Ldebug_from_sysenter_stack
949
950 TRACE_IRQS_OFF
951 call do_debug
952 jmp ret_from_exception
953
954.Ldebug_from_sysenter_stack:
955 /* We're on the SYSENTER stack. Switch off. */

--- 25 unchanged lines hidden (view full) ---

981 pushl %eax # pt_regs->orig_ax
982 SAVE_ALL
983 ENCODE_FRAME_POINTER
984 xorl %edx, %edx # zero error code
985 movl %esp, %eax # pt_regs pointer
986
987 /* Are we currently on the SYSENTER stack? */
988 movl PER_CPU_VAR(cpu_entry_area), %ecx
948 jb .Ldebug_from_sysenter_stack
949
950 TRACE_IRQS_OFF
951 call do_debug
952 jmp ret_from_exception
953
954.Ldebug_from_sysenter_stack:
955 /* We're on the SYSENTER stack. Switch off. */

--- 25 unchanged lines hidden (view full) ---

981 pushl %eax # pt_regs->orig_ax
982 SAVE_ALL
983 ENCODE_FRAME_POINTER
984 xorl %edx, %edx # zero error code
985 movl %esp, %eax # pt_regs pointer
986
987 /* Are we currently on the SYSENTER stack? */
988 movl PER_CPU_VAR(cpu_entry_area), %ecx
989 addl $CPU_ENTRY_AREA_SYSENTER_stack + SIZEOF_SYSENTER_stack, %ecx
990 subl %eax, %ecx /* ecx = (end of SYSENTER_stack) - esp */
991 cmpl $SIZEOF_SYSENTER_stack, %ecx
989 addl $CPU_ENTRY_AREA_entry_stack + SIZEOF_entry_stack, %ecx
990 subl %eax, %ecx /* ecx = (end of entry_stack) - esp */
991 cmpl $SIZEOF_entry_stack, %ecx
992 jb .Lnmi_from_sysenter_stack
993
994 /* Not on SYSENTER stack. */
995 call do_nmi
996 jmp .Lrestore_all_notrace
997
998.Lnmi_from_sysenter_stack:
999 /*

--- 68 unchanged lines hidden ---
992 jb .Lnmi_from_sysenter_stack
993
994 /* Not on SYSENTER stack. */
995 call do_nmi
996 jmp .Lrestore_all_notrace
997
998.Lnmi_from_sysenter_stack:
999 /*

--- 68 unchanged lines hidden ---