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