Module Name: src
Committed By: maxv
Date: Sat May 14 06:49:34 UTC 2016
Modified Files:
src/sys/arch/i386/i386: locore.S
Log Message:
Define killkpt, and don't use _RELOC. Same as amd64.
To generate a diff of this commit:
cvs rdiff -u -r1.117 -r1.118 src/sys/arch/i386/i386/locore.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/i386/i386/locore.S
diff -u src/sys/arch/i386/i386/locore.S:1.117 src/sys/arch/i386/i386/locore.S:1.118
--- src/sys/arch/i386/i386/locore.S:1.117 Fri May 13 14:03:00 2016
+++ src/sys/arch/i386/i386/locore.S Sat May 14 06:49:34 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: locore.S,v 1.117 2016/05/13 14:03:00 maxv Exp $ */
+/* $NetBSD: locore.S,v 1.118 2016/05/14 06:49:34 maxv Exp $ */
/*
* Copyright-o-rama!
@@ -128,7 +128,7 @@
*/
#include <machine/asm.h>
-__KERNEL_RCSID(0, "$NetBSD: locore.S,v 1.117 2016/05/13 14:03:00 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: locore.S,v 1.118 2016/05/14 06:49:34 maxv Exp $");
#include "opt_compat_oldboot.h"
#include "opt_copy_symtab.h"
@@ -196,6 +196,17 @@ __KERNEL_RCSID(0, "$NetBSD: locore.S,v 1
addl $PAGE_SIZE,%eax ; /* next phys page */ \
loop 1b ;
+/*
+ * killkpt - Destroy a kernel page table
+ * ebx = page table address
+ * ecx = number of pages to destroy
+ */
+#define killkpt \
+1: movl $0,(PDE_SIZE-4)(%ebx) ; /* upper bits (for PAE) */ \
+ movl $0,(%ebx) ; \
+ addl $PDE_SIZE,%ebx ; \
+ loop 1b ;
+
#ifdef XEN
/*
@@ -647,7 +658,7 @@ try586: /* Use the `cpuid' instruction.
andl $~PGOFSET,%edx
/* Skip the first MB. */
- movl $_RELOC(KERNTEXTOFF),%eax
+ movl $(KERNTEXTOFF - KERNBASE),%eax
movl %eax,%ecx
shrl $(PGSHIFT-2),%ecx /* ((n >> PGSHIFT) << 2) for # PDEs */
#ifdef PAE
@@ -743,10 +754,7 @@ begin:
movl _C_LABEL(nkptp)+1*4,%ecx
leal (PROC0_PDIR_OFF)(%esi),%ebx /* old, phys address of PDIR */
addl $(KERNBASE), %ebx /* new, virt address of PDIR */
-1: movl $0,(PDE_SIZE-4)(%ebx) /* upper bits (for PAE) */
- movl $0,(%ebx)
- addl $PDE_SIZE,%ebx
- loop 1b
+ killkpt
/* Relocate atdevbase. */
movl $KERNBASE,%edx