Module Name: src
Committed By: maxv
Date: Sun Jul 2 09:02:06 UTC 2017
Modified Files:
src/sys/arch/i386/i386: gdt.c mptramp.S
src/sys/arch/i386/include: gdt.h
Log Message:
Define MINGDTSIZ/MAXGDTSIZ in bytes, not in number of slots; same as
amd64.
To generate a diff of this commit:
cvs rdiff -u -r1.61 -r1.62 src/sys/arch/i386/i386/gdt.c
cvs rdiff -u -r1.29 -r1.30 src/sys/arch/i386/i386/mptramp.S
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/i386/include/gdt.h
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/i386/i386/gdt.c
diff -u src/sys/arch/i386/i386/gdt.c:1.61 src/sys/arch/i386/i386/gdt.c:1.62
--- src/sys/arch/i386/i386/gdt.c:1.61 Sat Jun 17 09:32:53 2017
+++ src/sys/arch/i386/i386/gdt.c Sun Jul 2 09:02:06 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: gdt.c,v 1.61 2017/06/17 09:32:53 maxv Exp $ */
+/* $NetBSD: gdt.c,v 1.62 2017/07/02 09:02:06 maxv Exp $ */
/*
* Copyright (c) 1996, 1997, 2009 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: gdt.c,v 1.61 2017/06/17 09:32:53 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: gdt.c,v 1.62 2017/07/02 09:02:06 maxv Exp $");
#include "opt_multiprocessor.h"
#include "opt_xen.h"
@@ -110,10 +110,10 @@ gdt_init(void)
vaddr_t va;
struct cpu_info *ci = &cpu_info_primary;
- max_len = MAXGDTSIZ * sizeof(gdtstore[0]);
- min_len = MINGDTSIZ * sizeof(gdtstore[0]);
+ max_len = MAXGDTSIZ;
+ min_len = MINGDTSIZ;
- gdt_size = MINGDTSIZ;
+ gdt_size = (MINGDTSIZ / sizeof(gdtstore[0]));
gdt_count = NGDT;
gdt_next = NGDT;
gdt_free = GNULL_SEL;
@@ -146,8 +146,8 @@ gdt_init(void)
void
gdt_alloc_cpu(struct cpu_info *ci)
{
- int max_len = MAXGDTSIZ * sizeof(gdtstore[0]);
- int min_len = MINGDTSIZ * sizeof(gdtstore[0]);
+ int max_len = MAXGDTSIZ;
+ int min_len = MINGDTSIZ;
struct vm_page *pg;
vaddr_t va;
@@ -180,7 +180,7 @@ gdt_init_cpu(struct cpu_info *ci)
struct region_descriptor region;
size_t max_len;
- max_len = MAXGDTSIZ * sizeof(gdtstore[0]);
+ max_len = MAXGDTSIZ;
setregion(®ion, ci->ci_gdt, max_len - 1);
lgdt(®ion);
#else
@@ -273,7 +273,7 @@ gdt_get_slot(void)
if (gdt_next != gdt_count + offset)
panic("gdt_get_slot botch 1");
if (gdt_next - offset >= gdt_size) {
- if (gdt_size >= MAXGDTSIZ)
+ if (gdt_size >= (MAXGDTSIZ / sizeof(gdtstore[0])))
panic("gdt_get_slot botch 2");
gdt_grow();
}
Index: src/sys/arch/i386/i386/mptramp.S
diff -u src/sys/arch/i386/i386/mptramp.S:1.29 src/sys/arch/i386/i386/mptramp.S:1.30
--- src/sys/arch/i386/i386/mptramp.S:1.29 Sat May 14 08:34:00 2016
+++ src/sys/arch/i386/i386/mptramp.S Sun Jul 2 09:02:06 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: mptramp.S,v 1.29 2016/05/14 08:34:00 maxv Exp $ */
+/* $NetBSD: mptramp.S,v 1.30 2017/07/02 09:02:06 maxv Exp $ */
/*
* Copyright (c) 2000, 2016 The NetBSD Foundation, Inc.
@@ -75,7 +75,7 @@
*/
#include <machine/asm.h>
-__KERNEL_RCSID(0, "$NetBSD: mptramp.S,v 1.29 2016/05/14 08:34:00 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mptramp.S,v 1.30 2017/07/02 09:02:06 maxv Exp $");
#include "opt_mpbios.h" /* for MPDEBUG */
@@ -223,7 +223,7 @@ no_NOX:
/* %ecx points at our cpu_info structure. */
- movw $((MAXGDTSIZ*8) - 1), 6(%esp) /* prepare segment descriptor */
+ movw $(MAXGDTSIZ-1), 6(%esp) /* prepare segment descriptor */
movl CPU_INFO_GDT(%ecx), %eax /* for our real gdt */
movl %eax, 8(%esp)
lgdt 6(%esp)
Index: src/sys/arch/i386/include/gdt.h
diff -u src/sys/arch/i386/include/gdt.h:1.15 src/sys/arch/i386/include/gdt.h:1.16
--- src/sys/arch/i386/include/gdt.h:1.15 Wed Feb 8 10:08:26 2017
+++ src/sys/arch/i386/include/gdt.h Sun Jul 2 09:02:06 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: gdt.h,v 1.15 2017/02/08 10:08:26 maxv Exp $ */
+/* $NetBSD: gdt.h,v 1.16 2017/07/02 09:02:06 maxv Exp $ */
/*-
* Copyright (c) 1996, 1997 The NetBSD Foundation, Inc.
@@ -44,5 +44,5 @@ void ldt_free(int);
#endif /* LOCORE */
-#define MINGDTSIZ 512
-#define MAXGDTSIZ 8192
+#define MINGDTSIZ PAGE_SIZE
+#define MAXGDTSIZ 65536