Hello! Index: i386/i386at/model_dep.c =================================================================== RCS file: /cvsroot/hurd/gnumach/i386/i386at/Attic/model_dep.c,v retrieving revision 1.9.2.19 diff -u -p -r1.9.2.19 model_dep.c --- i386/i386at/model_dep.c 10 Nov 2008 15:18:47 -0000 1.9.2.19 +++ i386/i386at/model_dep.c 23 Nov 2008 11:58:02 -0000 @@ -247,6 +247,8 @@ mem_size_init(void) void i386at_init(void) { + /* Assemble all flags to set in there and then set ONCE. */ + unsigned int cr4_flags = 0; /* XXX move to intel/pmap.h */ extern pt_entry_t *kernel_page_dir; @@ -285,12 +287,13 @@ i386at_init(void) set_cr3((unsigned)kernel_pmap->pdpbase); if (!CPU_HAS_FEATURE(CPU_FEATURE_PAE)) panic("CPU doesn't have support for PAE."); - set_cr4(get_cr4() | CR4_PAE); + cr4_flags |= CR4_PAE; #else set_cr3((unsigned)kernel_page_dir); #endif /* PAE */ if (CPU_HAS_FEATURE(CPU_FEATURE_PGE)) - set_cr4(get_cr4() | CR4_PGE); + cr4_flags |= CR4_PGE; + set_cr4(get_cr4() | cr4_flags); set_cr0(get_cr0() | CR0_PG | CR0_WP); flush_instr_queue();
Samuel, is this fine? I guess that the problem was the CPU_HAS_FEATURE memory reference, as soon as cr4 has been changed once? (... but paging not yet being enabled?) Regards, Thomas
signature.asc
Description: Digital signature