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

Attachment: signature.asc
Description: Digital signature

Reply via email to