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