Module Name: src
Committed By: jym
Date: Thu Apr 19 18:07:05 UTC 2012
Modified Files:
src/sys/arch/i386/i386: locore.S
Log Message:
Mirror what is done for amd64 boot and ACPI wakeup code by setting
CR0_WP (write protection bit) early on boot. Although it is set later via
cpu_init(), this can help tracking down invalid writes to pages mapped
as read only from ring 0.
No regression observed when booting under anita (QEMU) or a P4 host.
Depending on your hardware or setup, you may trigger code paths I have
overlooked. So if your machine does not start properly, or you get
page faults early during boot, please report them to me.
To generate a diff of this commit:
cvs rdiff -u -r1.98 -r1.99 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.98 src/sys/arch/i386/i386/locore.S:1.99
--- src/sys/arch/i386/i386/locore.S:1.98 Thu Apr 19 18:00:35 2012
+++ src/sys/arch/i386/i386/locore.S Thu Apr 19 18:07:05 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: locore.S,v 1.98 2012/04/19 18:00:35 jym Exp $ */
+/* $NetBSD: locore.S,v 1.99 2012/04/19 18:07:05 jym Exp $ */
/*
* Copyright-o-rama!
@@ -129,7 +129,7 @@
*/
#include <machine/asm.h>
-__KERNEL_RCSID(0, "$NetBSD: locore.S,v 1.98 2012/04/19 18:00:35 jym Exp $");
+__KERNEL_RCSID(0, "$NetBSD: locore.S,v 1.99 2012/04/19 18:07:05 jym Exp $");
#include "opt_compat_oldboot.h"
#include "opt_ddb.h"
@@ -682,7 +682,7 @@ try586: /* Use the `cpuid' instruction.
*/
movl %cr0,%eax # get control word
# enable paging & NPX emulation
- orl $(CR0_PE|CR0_PG|CR0_NE|CR0_TS|CR0_EM|CR0_MP|CR0_AM),%eax
+ orl $(CR0_PE|CR0_PG|CR0_NE|CR0_TS|CR0_EM|CR0_MP|CR0_WP|CR0_AM),%eax
movl %eax,%cr0 # and page NOW!
pushl $begin # jump to high mem