Module Name: src
Committed By: maxv
Date: Sat Jan 20 13:42:07 UTC 2018
Modified Files:
src/sys/arch/amd64/amd64: amd64_trap.S machdep.c
Log Message:
Don't declare exceptions[] with IDTVEC, it's an array, not a function.
Rename it to x86_exceptions[], and move it to .rodata.
To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 src/sys/arch/amd64/amd64/amd64_trap.S
cvs rdiff -u -r1.292 -r1.293 src/sys/arch/amd64/amd64/machdep.c
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.19 src/sys/arch/amd64/amd64/amd64_trap.S:1.20
--- src/sys/arch/amd64/amd64/amd64_trap.S:1.19 Sat Jan 20 08:30:53 2018
+++ src/sys/arch/amd64/amd64/amd64_trap.S Sat Jan 20 13:42:07 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: amd64_trap.S,v 1.19 2018/01/20 08:30:53 maxv Exp $ */
+/* $NetBSD: amd64_trap.S,v 1.20 2018/01/20 13:42:07 maxv Exp $ */
/*
* Copyright (c) 1998, 2007, 2008, 2017 The NetBSD Foundation, Inc.
@@ -66,7 +66,7 @@
#if 0
#include <machine/asm.h>
-__KERNEL_RCSID(0, "$NetBSD: amd64_trap.S,v 1.19 2018/01/20 08:30:53 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: amd64_trap.S,v 1.20 2018/01/20 13:42:07 maxv Exp $");
#endif
/*
@@ -360,25 +360,6 @@ IDTVEC_END(trap29)
IDTVEC_END(trap30)
IDTVEC_END(trap31)
-IDTVEC(exceptions)
- .quad _C_LABEL(Xtrap00), _C_LABEL(Xtrap01)
- .quad _C_LABEL(Xtrap02), _C_LABEL(Xtrap03)
- .quad _C_LABEL(Xtrap04), _C_LABEL(Xtrap05)
- .quad _C_LABEL(Xtrap06), _C_LABEL(Xtrap07)
- .quad _C_LABEL(Xtrap08), _C_LABEL(Xtrap09)
- .quad _C_LABEL(Xtrap10), _C_LABEL(Xtrap11)
- .quad _C_LABEL(Xtrap12), _C_LABEL(Xtrap13)
- .quad _C_LABEL(Xtrap14), _C_LABEL(Xtrap15)
- .quad _C_LABEL(Xtrap16), _C_LABEL(Xtrap17)
- .quad _C_LABEL(Xtrap18), _C_LABEL(Xtrap19)
- .quad _C_LABEL(Xtrap20), _C_LABEL(Xtrap21)
- .quad _C_LABEL(Xtrap22), _C_LABEL(Xtrap23)
- .quad _C_LABEL(Xtrap24), _C_LABEL(Xtrap25)
- .quad _C_LABEL(Xtrap26), _C_LABEL(Xtrap27)
- .quad _C_LABEL(Xtrap28), _C_LABEL(Xtrap29)
- .quad _C_LABEL(Xtrap30), _C_LABEL(Xtrap31)
-IDTVEC_END(exceptions)
-
IDTVEC(intrspurious)
ZTRAP_NJ(T_ASTFLT)
INTRENTRY
@@ -512,3 +493,24 @@ calltrap:
#endif
END(alltraps)
+ .section .rodata
+
+LABEL(x86_exceptions)
+ .quad _C_LABEL(Xtrap00), _C_LABEL(Xtrap01)
+ .quad _C_LABEL(Xtrap02), _C_LABEL(Xtrap03)
+ .quad _C_LABEL(Xtrap04), _C_LABEL(Xtrap05)
+ .quad _C_LABEL(Xtrap06), _C_LABEL(Xtrap07)
+ .quad _C_LABEL(Xtrap08), _C_LABEL(Xtrap09)
+ .quad _C_LABEL(Xtrap10), _C_LABEL(Xtrap11)
+ .quad _C_LABEL(Xtrap12), _C_LABEL(Xtrap13)
+ .quad _C_LABEL(Xtrap14), _C_LABEL(Xtrap15)
+ .quad _C_LABEL(Xtrap16), _C_LABEL(Xtrap17)
+ .quad _C_LABEL(Xtrap18), _C_LABEL(Xtrap19)
+ .quad _C_LABEL(Xtrap20), _C_LABEL(Xtrap21)
+ .quad _C_LABEL(Xtrap22), _C_LABEL(Xtrap23)
+ .quad _C_LABEL(Xtrap24), _C_LABEL(Xtrap25)
+ .quad _C_LABEL(Xtrap26), _C_LABEL(Xtrap27)
+ .quad _C_LABEL(Xtrap28), _C_LABEL(Xtrap29)
+ .quad _C_LABEL(Xtrap30), _C_LABEL(Xtrap31)
+END(x86_exceptions)
+
Index: src/sys/arch/amd64/amd64/machdep.c
diff -u src/sys/arch/amd64/amd64/machdep.c:1.292 src/sys/arch/amd64/amd64/machdep.c:1.293
--- src/sys/arch/amd64/amd64/machdep.c:1.292 Sat Jan 20 07:43:28 2018
+++ src/sys/arch/amd64/amd64/machdep.c Sat Jan 20 13:42:07 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: machdep.c,v 1.292 2018/01/20 07:43:28 maxv Exp $ */
+/* $NetBSD: machdep.c,v 1.293 2018/01/20 13:42:07 maxv Exp $ */
/*
* Copyright (c) 1996, 1997, 1998, 2000, 2006, 2007, 2008, 2011
@@ -110,7 +110,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.292 2018/01/20 07:43:28 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.293 2018/01/20 13:42:07 maxv Exp $");
/* #define XENDEBUG_LOW */
@@ -1488,7 +1488,7 @@ typedef void (vector)(void);
extern vector IDTVEC(syscall);
extern vector IDTVEC(syscall32);
extern vector IDTVEC(osyscall);
-extern vector *IDTVEC(exceptions)[];
+extern vector *x86_exceptions[];
static void
init_x86_64_ksyms(void)
@@ -1777,7 +1777,7 @@ init_x86_64(paddr_t first_avail)
ist = 0;
break;
}
- setgate(&idt[x], IDTVEC(exceptions)[x], ist, SDT_SYS386IGT,
+ setgate(&idt[x], x86_exceptions[x], ist, SDT_SYS386IGT,
(x == 3 || x == 4) ? SEL_UPL : SEL_KPL,
GSEL(GCODE_SEL, SEL_KPL));
#else /* XEN */
@@ -1801,7 +1801,7 @@ init_x86_64(paddr_t first_avail)
xen_idt[xen_idt_idx].cs = GSEL(GCODE_SEL, SEL_KPL);
xen_idt[xen_idt_idx].address =
- (unsigned long)IDTVEC(exceptions)[x];
+ (unsigned long)x86_exceptions[x];
xen_idt_idx++;
#endif /* XEN */
}