]> Zhao Yanbai Git Server - minix.git/commitdiff
Preparations for PAE support 39/3339/1
authorrlfnb <rlfnb@rlfnb.de>
Tue, 12 Jul 2016 15:20:41 +0000 (17:20 +0200)
committerLionel Sambuc <lionel.sambuc@gmail.com>
Thu, 4 Aug 2016 07:24:42 +0000 (09:24 +0200)
Change-Id: I9a7c9ed9f803e2e26d745d14149a8aec64ab0c75

minix/include/arch/i386/include/vm.h
minix/include/minix/cpufeature.h
minix/kernel/Makefile
minix/kernel/arch/i386/arch_reset.c
minix/kernel/arch/i386/pg_utils.c
minix/kernel/main.c
minix/lib/libc/arch/i386/_cpufeature.c
minix/lib/libmagicrt/include/st/state_transfer.h
minix/servers/vm/Makefile
share/mk/bsd.own.mk

index 5c0c3c109d60556bab7cfa1eb23d879db86b42c3..6c6944c454346862b9d4aca0fb8a55b26053e57b 100644 (file)
@@ -74,6 +74,7 @@ i386/vm.h
 #define CPUID1_EDX_FPU         (1L)            /* FPU presence */
 #define CPUID1_EDX_PSE                 (1L <<  3)      /* Page Size Extension */
 #define CPUID1_EDX_SYSENTER    (1L << 11)      /* Intel SYSENTER */
+#define CPUID1_EDX_PAE                 (1L << 6)       /* Physical Address Extension */
 #define CPUID1_EDX_PGE                 (1L << 13)      /* Page Global (bit) Enable */
 #define CPUID1_EDX_APIC_ON_CHIP (1L << 9)      /* APIC is present on the chip */
 #define CPUID1_EDX_TSC         (1L << 4)       /* Timestamp counter present */
index 4ceae56c5fa943b05e48a49e4327404701874c4a..1d9d79aacee5335acd0a37b612473544b3aedc17 100644 (file)
@@ -25,6 +25,8 @@
 #define _CPUF_I386_SYSENTER    16      /* Intel SYSENTER instrs */
 #define _CPUF_I386_SYSCALL     17      /* AMD SYSCALL instrs */
 
+#define _CPUF_I386_PAE         18      /* Page Address Extension */
+
 int _cpufeature(int featureno);
 
 #endif
index 41573f4cb5a499008da4dab8a203ee773a8110cd..81414dc4a37774074d4e12377f78f0af3fce623a 100644 (file)
@@ -43,6 +43,10 @@ CPPFLAGS+= -I${NETBSDSRCDIR}/minix/include/arch/${MACHINE_ARCH}/include
 
 .include "system/Makefile.inc"
 
+.if ${MKPAE:Uno} != "no"
+CPPFLAGS+= -DPAE=1
+.endif
+
 .ifdef CONFIG_SMP
 SRCS+= smp.c
 .endif
index 855bd36f23713767646208f3a6fa06aed7ea6443..4839a1156d84d992ceefed67ee7a97e394f582be 100644 (file)
@@ -11,7 +11,6 @@
 #include <sys/reboot.h>
 #include <assert.h>
 #include <signal.h>
-#include <machine/vm.h>
 
 #include <minix/u64.h>
 
index 8e4e0231be2070e32319ef35832b7f0841330f2a..585dfc6c84ac9ce8f7e6edd4a812489de7332312 100644 (file)
@@ -208,6 +208,11 @@ void vm_enable_paging(void)
 
         pgeok = _cpufeature(_CPUF_I386_PGE);
 
+#ifdef PAE
+       if(_cpufeature(_CPUF_I386_PAE) == 0)
+               panic("kernel built with PAE support, CPU seems to lack PAE support?\n");
+#endif
+
         cr0= read_cr0();
         cr4= read_cr4();
 
index 1d85314602402f2e6a21320032bffedc7aed1f48..d98f1005612971cb1109b5bfdd17c050cd49f323 100644 (file)
@@ -337,6 +337,9 @@ static void announce(void)
 {
   /* Display the MINIX startup banner. */
   printf("\nMINIX %s. "
+#ifdef PAE
+"(PAE) "
+#endif
 #ifdef _VCS_REVISION
        "(" _VCS_REVISION ")\n"
 #endif
index 1a7c011d585a91d13d9ba74b8716f6bee792d859..7448c5c9af3f642e0e1a26135855ca4563de1993 100644 (file)
@@ -51,6 +51,8 @@ int _cpufeature(int cpufeature)
        switch(cpufeature) {
                case _CPUF_I386_PSE:
                        return edx & CPUID1_EDX_PSE;
+               case _CPUF_I386_PAE:
+                       return edx & CPUID1_EDX_PAE;
                case _CPUF_I386_PGE:
                        return edx & CPUID1_EDX_PGE;
                case _CPUF_I386_APIC_ON_CHIP:
index fcb1217d37ab1424db53faafb33dce5578307de1..536dc20e020649480357212c9a56a94cf346b233 100644 (file)
@@ -40,7 +40,7 @@ typedef struct _st_init_info_t {
 typedef struct st_alloc_pages {
     int num_pages;
     void *virt_addr;
-    uint32_t phys_addr;
+    phys_bytes phys_addr;
     struct st_alloc_pages *previous;
 } st_alloc_pages;
 
index 4cd45a530cf192f7ec93723c96d3c80613286ec8..bf440261db32227f68ceedf0e0f8a5f5efc8c00b 100644 (file)
@@ -12,6 +12,10 @@ SRCS=        main.c alloc.c utility.c exit.c fork.c break.c \
 LDFLAGS+= -T ${.CURDIR}/arch/${MACHINE_ARCH}/vm.lds
 .endif
 
+.if ${MKPAE:Uno} != "no"
+CPPFLAGS+= -DPAE=1
+.endif
+
 DPADD+=        ${LIBSYS} ${LIBEXEC}
 LDADD+=        -lsys -lexec
 
index 32a5353e40d95d80bbb20af7de19f8c3f7dac4b8..eb7f25616e2fe2b139a5641d2e85e16ff70cb70d 100644 (file)
@@ -1268,7 +1268,7 @@ _MKVARS.yes+= \
        MKSYSDEBUG MKLIVEUPDATE MKLWIP MKLLVMCMDS
 .if (${MACHINE_ARCH} == "i386")
 _MKVARS.yes+= \
-       MKWATCHDOG MKACPI MKAPIC MKDEBUGREG MKINSTALLBOOT MKPCI
+       MKWATCHDOG MKACPI MKPAE MKAPIC MKDEBUGREG MKINSTALLBOOT MKPCI
 .endif
 
 .for var in ${_MKVARS.yes}
@@ -1309,7 +1309,7 @@ _MKVARS.no+= \
        MKIMAGEONLY MKSMALL MKBITCODE MKMAGIC MKASR MKSRC
 .if !empty(MACHINE_ARCH:Mearm*)
 _MKVARS.no+= \
-       MKWATCHDOG MKACPI MKAPIC MKDEBUGREG MKINSTALLBOOT MKPCI
+       MKWATCHDOG MKPAE MKACPI MKAPIC MKDEBUGREG MKINSTALLBOOT MKPCI
 .endif
 
 .for var in ${_MKVARS.no}
@@ -1497,7 +1497,7 @@ ${var}?= yes
 
 #MINIX-specific vars
 .for var in \
-       USE_WATCHDOG USE_ACPI USE_APIC USE_DEBUGREG USE_SYSDEBUG \
+       USE_WATCHDOG USE_ACPI USE_PAE USE_APIC USE_DEBUGREG USE_SYSDEBUG \
        USE_LIVEUPDATE USE_PCI USE_BITCODE USE_MAGIC USE_ASR
 .if (${${var:S/USE_/MK/}} == "no")
 ${var}:= no