Module Name: src
Committed By: maxv
Date: Sat Feb 17 21:05:58 UTC 2018
Modified Files:
src/sys/arch/amd64/amd64: amd64_trap.S
Log Message:
Declare check_swapgs in an ASM macro. No real functional change.
To generate a diff of this commit:
cvs rdiff -u -r1.30 -r1.31 src/sys/arch/amd64/amd64/amd64_trap.S
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/amd64/amd64/amd64_trap.S
diff -u src/sys/arch/amd64/amd64/amd64_trap.S:1.30 src/sys/arch/amd64/amd64/amd64_trap.S:1.31
--- src/sys/arch/amd64/amd64/amd64_trap.S:1.30 Sat Feb 17 20:59:14 2018
+++ src/sys/arch/amd64/amd64/amd64_trap.S Sat Feb 17 21:05:58 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: amd64_trap.S,v 1.30 2018/02/17 20:59:14 maxv Exp $ */
+/* $NetBSD: amd64_trap.S,v 1.31 2018/02/17 21:05:58 maxv Exp $ */
/*
* Copyright (c) 1998, 2007, 2008, 2017 The NetBSD Foundation, Inc.
@@ -303,45 +303,6 @@ IDTVEC(\name)
IDTVEC_END(\name)
.endm
- .text
-
- TEXT_USER_BEGIN
-
-TRAP_ENTRY_POINT trap00,T_DIVIDE,1
-TRAP_ENTRY_POINT trap01,T_TRCTRAP,1
-TRAP_ENTRY_POINT_NMI trap02,T_NMI
-TRAP_ENTRY_POINT_BPT trap03,T_BPTFLT
-TRAP_ENTRY_POINT trap04,T_OFLOW,1
-TRAP_ENTRY_POINT trap05,T_BOUND,1
-TRAP_ENTRY_POINT trap06,T_PRIVINFLT,1
-TRAP_ENTRY_POINT_DNA trap07,T_DNA
-TRAP_ENTRY_POINT_DOUBLE trap08,T_DOUBLEFLT
-TRAP_ENTRY_POINT trap09,T_FPOPFLT,1
-TRAP_ENTRY_POINT trap10,T_TSSFLT,0
-TRAP_ENTRY_POINT_SWAPGS trap11,T_SEGNPFLT,0
-TRAP_ENTRY_POINT_SWAPGS trap12,T_STKFLT,0
-TRAP_ENTRY_POINT_SWAPGS trap13,T_PROTFLT,0
-TRAP_ENTRY_POINT trap14,T_PAGEFLT,0
-TRAP_ENTRY_POINT_SPUR trap15,T_ASTFLT,1
-TRAP_ENTRY_POINT_FPU trap16,T_ARITHTRAP,1
-TRAP_ENTRY_POINT trap17,T_ALIGNFLT,0
-TRAP_ENTRY_POINT trap18,T_MCA,1
-TRAP_ENTRY_POINT_FPU trap19,T_XMM,1
-TRAP_ENTRY_POINT trap20,T_RESERVED,1
-TRAP_ENTRY_POINT trap21,T_RESERVED,1
-TRAP_ENTRY_POINT trap22,T_RESERVED,1
-TRAP_ENTRY_POINT trap23,T_RESERVED,1
-TRAP_ENTRY_POINT trap24,T_RESERVED,1
-TRAP_ENTRY_POINT trap25,T_RESERVED,1
-TRAP_ENTRY_POINT trap26,T_RESERVED,1
-TRAP_ENTRY_POINT trap27,T_RESERVED,1
-TRAP_ENTRY_POINT trap28,T_RESERVED,1
-TRAP_ENTRY_POINT trap29,T_RESERVED,1
-TRAP_ENTRY_POINT trap30,T_RESERVED,1
-TRAP_ENTRY_POINT trap31,T_RESERVED,1
-
-TRAP_ENTRY_POINT_SPUR intrspurious,T_ASTFLT,1
-
#ifndef check_swapgs
/*
* We need to worry about traps in kernel mode while the kernel %gs isn't
@@ -351,6 +312,7 @@ TRAP_ENTRY_POINT_SPUR intrspurious,T_AST
* When such traps happen, we have CPL=0 and %gs=userland, and we must perform
* an additional swapgs to get %gs=kernel.
*/
+.macro SWAPGS_HANDLER
NENTRY(check_swapgs)
INTRENTRY_L(3f,1:)
2:
@@ -384,6 +346,50 @@ NENTRY(check_swapgs)
jne 2b /* No - normal kernel fault */
jmp 1b /* Yes - restore %gs */
END(check_swapgs)
+.endm
+#endif
+
+ .text
+
+ TEXT_USER_BEGIN
+
+TRAP_ENTRY_POINT trap00,T_DIVIDE,1
+TRAP_ENTRY_POINT trap01,T_TRCTRAP,1
+TRAP_ENTRY_POINT_NMI trap02,T_NMI
+TRAP_ENTRY_POINT_BPT trap03,T_BPTFLT
+TRAP_ENTRY_POINT trap04,T_OFLOW,1
+TRAP_ENTRY_POINT trap05,T_BOUND,1
+TRAP_ENTRY_POINT trap06,T_PRIVINFLT,1
+TRAP_ENTRY_POINT_DNA trap07,T_DNA
+TRAP_ENTRY_POINT_DOUBLE trap08,T_DOUBLEFLT
+TRAP_ENTRY_POINT trap09,T_FPOPFLT,1
+TRAP_ENTRY_POINT trap10,T_TSSFLT,0
+TRAP_ENTRY_POINT_SWAPGS trap11,T_SEGNPFLT,0
+TRAP_ENTRY_POINT_SWAPGS trap12,T_STKFLT,0
+TRAP_ENTRY_POINT_SWAPGS trap13,T_PROTFLT,0
+TRAP_ENTRY_POINT trap14,T_PAGEFLT,0
+TRAP_ENTRY_POINT_SPUR trap15,T_ASTFLT,1
+TRAP_ENTRY_POINT_FPU trap16,T_ARITHTRAP,1
+TRAP_ENTRY_POINT trap17,T_ALIGNFLT,0
+TRAP_ENTRY_POINT trap18,T_MCA,1
+TRAP_ENTRY_POINT_FPU trap19,T_XMM,1
+TRAP_ENTRY_POINT trap20,T_RESERVED,1
+TRAP_ENTRY_POINT trap21,T_RESERVED,1
+TRAP_ENTRY_POINT trap22,T_RESERVED,1
+TRAP_ENTRY_POINT trap23,T_RESERVED,1
+TRAP_ENTRY_POINT trap24,T_RESERVED,1
+TRAP_ENTRY_POINT trap25,T_RESERVED,1
+TRAP_ENTRY_POINT trap26,T_RESERVED,1
+TRAP_ENTRY_POINT trap27,T_RESERVED,1
+TRAP_ENTRY_POINT trap28,T_RESERVED,1
+TRAP_ENTRY_POINT trap29,T_RESERVED,1
+TRAP_ENTRY_POINT trap30,T_RESERVED,1
+TRAP_ENTRY_POINT trap31,T_RESERVED,1
+
+TRAP_ENTRY_POINT_SPUR intrspurious,T_ASTFLT,1
+
+#ifndef check_swapgs
+SWAPGS_HANDLER
#endif
TEXT_USER_END