Module Name:    src
Committed By:   maxv
Date:           Sat Feb 17 20:59:14 UTC 2018

Modified Files:
        src/sys/arch/amd64/amd64: amd64_trap.S

Log Message:
Use ASM macros for the rest of the entry points. No real functional
change. Now the format of the entry points is:

        .macro  TRAP_ENTRY_POINT_xx     arg1,arg2,arg3
                ...the asm code...
        .endm

                TEXT_USER_BEGIN
        TRAP_ENTRY_POINT_xx     arg1,arg2,arg3
                TEXT_USER_END


To generate a diff of this commit:
cvs rdiff -u -r1.29 -r1.30 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.29 src/sys/arch/amd64/amd64/amd64_trap.S:1.30
--- src/sys/arch/amd64/amd64/amd64_trap.S:1.29	Sat Feb 17 20:47:04 2018
+++ src/sys/arch/amd64/amd64/amd64_trap.S	Sat Feb 17 20:59:14 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: amd64_trap.S,v 1.29 2018/02/17 20:47:04 maxv Exp $	*/
+/*	$NetBSD: amd64_trap.S,v 1.30 2018/02/17 20:59:14 maxv Exp $	*/
 
 /*
  * Copyright (c) 1998, 2007, 2008, 2017 The NetBSD Foundation, Inc.
@@ -130,58 +130,13 @@ IDTVEC(\name)
 IDTVEC_END(\name)
 .endm
 
-.macro	TRAP_ENTRY_POINT_DNA	name,code
+.macro	TRAP_ENTRY_POINT_NMI	name,code
 IDTVEC(\name)
 	ZTRAP(\code)
+#if defined(XEN)
 	INTRENTRY
-#ifdef DIAGNOSTIC
-	movl	CPUVAR(ILEVEL),%ebx
-#endif
-	movq	%rsp,%rdi
-	call	_C_LABEL(fpudna)
-	jmp	.Lalltraps_checkusr
-IDTVEC_END(\name)
-.endm
-
-.macro	TRAP_ENTRY_POINT_FPU	name,code,is_ztrap
-IDTVEC(\name)
-	.if	\is_ztrap
-		ZTRAP(\code)
-	.else
-		TRAP(\code)
-	.endif
-	INTRENTRY
-#ifdef DIAGNOSTIC
-	movl	CPUVAR(ILEVEL),%ebx
-#endif
-	movq	%rsp,%rdi
-	call	_C_LABEL(fputrap)
-	jmp	.Lalltraps_checkusr
-IDTVEC_END(\name)
-.endm
-
-.macro	TRAP_ENTRY_POINT_SPUR	name,code,is_ztrap
-IDTVEC(\name)
-	.if	\is_ztrap
-		ZTRAP(\code)
-	.else
-		TRAP(\code)
-	.endif
-	INTRENTRY
-#ifdef DIAGNOSTIC
-	movl	CPUVAR(ILEVEL),%ebx
-#endif
-	jmp	.Lalltraps_checkusr
-IDTVEC_END(\name)
-.endm
-
-	.text
-
-	TEXT_USER_BEGIN
-
-TRAP_ENTRY_POINT	trap00,T_DIVIDE,1
-TRAP_ENTRY_POINT	trap01,T_TRCTRAP,1
-
+	jmp	.Lalltraps_noentry
+#else
 /*
  * Non Maskable Interrupts are a special case: they can be triggered even
  * with interrupts disabled, and once triggered they block further NMIs
@@ -193,13 +148,6 @@ TRAP_ENTRY_POINT	trap01,T_TRCTRAP,1
  * We need to be careful about %gs too, because it is possible that we were
  * running in kernel mode with a userland %gs.
  */
-IDTVEC(trap02)
-#if defined(XEN)
-	ZTRAP(T_NMI)
-	INTRENTRY
-	jmp	.Lalltraps_noentry
-#else
-	ZTRAP(T_NMI)
 	subq	$TF_REGSIZE,%rsp
 	INTR_SAVE_GPRS
 	SVS_ENTER_ALTSTACK
@@ -234,16 +182,16 @@ IDTVEC(trap02)
 	addq	$TF_REGSIZE+16,%rsp
 	iretq
 #endif
-IDTVEC_END(trap02)
+IDTVEC_END(\name)
+.endm
 
-IDTVEC(trap03)
-#ifndef KDTRACE_HOOKS
-	ZTRAP(T_BPTFLT)
+.macro	TRAP_ENTRY_POINT_BPT	name,code
+IDTVEC(\name)
+	ZTRAP(\code)
 	INTRENTRY
+#ifndef KDTRACE_HOOKS
 	jmp	.Lalltraps_noentry
 #else
-	ZTRAP(T_BPTFLT)
-	INTRENTRY
 	STI(si)
 	/*
 	 * DTrace Function Boundary Trace (fbt) probes are triggered
@@ -265,24 +213,33 @@ IDTVEC(trap03)
 	movq	dtrace_invop_jump_addr, %rax
 	jmpq	*dtrace_invop_jump_addr
 #endif
-IDTVEC_END(trap03)
+IDTVEC_END(\name)
+.endm
 
-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
+.macro	TRAP_ENTRY_POINT_DNA	name,code
+IDTVEC(\name)
+	ZTRAP(\code)
+	INTRENTRY
+#ifdef DIAGNOSTIC
+	movl	CPUVAR(ILEVEL),%ebx
+#endif
+	movq	%rsp,%rdi
+	call	_C_LABEL(fpudna)
+	jmp	.Lalltraps_checkusr
+IDTVEC_END(\name)
+.endm
 
-/*
- * Double faults execute on a particular stack, and we must not jump out
- * of it. So don't enable interrupts.
- */
-IDTVEC(trap08)
+.macro	TRAP_ENTRY_POINT_DOUBLE	name,code
+IDTVEC(\name)
+	TRAP(\code)
 #if defined(XEN)
-	TRAP(T_DOUBLEFLT)
 	INTRENTRY
 	jmp	.Lalltraps_noentry
 #else
-	TRAP(T_DOUBLEFLT)
+/*
+ * Double faults execute on a particular stack, and we must not jump out
+ * of it. So don't enable interrupts.
+ */
 	subq	$TF_REGSIZE,%rsp
 	INTR_SAVE_GPRS
 	SVS_ENTER_ALTSTACK
@@ -311,8 +268,54 @@ IDTVEC(trap08)
 	addq	$TF_REGSIZE+16,%rsp
 	iretq
 #endif
-IDTVEC_END(trap08)
+IDTVEC_END(\name)
+.endm
 
+.macro	TRAP_ENTRY_POINT_FPU	name,code,is_ztrap
+IDTVEC(\name)
+	.if	\is_ztrap
+		ZTRAP(\code)
+	.else
+		TRAP(\code)
+	.endif
+	INTRENTRY
+#ifdef DIAGNOSTIC
+	movl	CPUVAR(ILEVEL),%ebx
+#endif
+	movq	%rsp,%rdi
+	call	_C_LABEL(fputrap)
+	jmp	.Lalltraps_checkusr
+IDTVEC_END(\name)
+.endm
+
+.macro	TRAP_ENTRY_POINT_SPUR	name,code,is_ztrap
+IDTVEC(\name)
+	.if	\is_ztrap
+		ZTRAP(\code)
+	.else
+		TRAP(\code)
+	.endif
+	INTRENTRY
+#ifdef DIAGNOSTIC
+	movl	CPUVAR(ILEVEL),%ebx
+#endif
+	jmp	.Lalltraps_checkusr
+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

Reply via email to