]> Zhao Yanbai Git Server - minix.git/commitdiff
Port bootxx.
authorEvgeniy Ivanov <lolkaantimat@gmail.com>
Mon, 9 Jan 2012 14:11:34 +0000 (18:11 +0400)
committerBen Gras <ben@minix3.org>
Thu, 9 Feb 2012 17:48:13 +0000 (18:48 +0100)
sys/arch/i386/stand/bootxx/Makefile
sys/arch/i386/stand/bootxx/Makefile.bootxx
sys/arch/i386/stand/bootxx/boot1.c
sys/arch/i386/stand/bootxx/bootxx.S
sys/arch/i386/stand/bootxx/bootxx_minixfs3/Makefile

index 05a3da26152f4efacaf46a655b023da642298e29..8567456adbcf0a459890294052f68062194a515e 100644 (file)
@@ -1,13 +1,13 @@
 # $NetBSD: Makefile,v 1.14 2010/12/29 17:44:03 jakllsch Exp $
 
-SUBDIR=        bootxx_ffsv1 .WAIT bootxx_ffsv2 bootxx_lfsv1 bootxx_lfsv2
-SUBDIR+=bootxx_msdos bootxx_ustarfs
+#SUBDIR=       bootxx_ffsv1 .WAIT bootxx_ffsv2 bootxx_lfsv1 bootxx_lfsv2
+#SUBDIR+=bootxx_msdos bootxx_ustarfs
 
 # Ext2fs doesn't have enough free space (it has only 1KB)
 # to store this primary bootloader, but we can put it into
 # an independent small 'boot' partition as NetBSD/hp300 does.
-SUBDIR+=bootxx_ext2fs
-SUBDIR+=bootxx_minixfs3
+#SUBDIR+=bootxx_ext2fs
+SUBDIR=bootxx_minixfs3
 
 LIBOBJ= ${.OBJDIR}
 .MAKEOVERRIDES+= LIBOBJ
index ab8074512353afff4b7e9d9d59bacacf902ab529..99da82618711a4abd3a2b897d04b0aa3755e387f 100644 (file)
@@ -50,12 +50,16 @@ CPPFLAGS+= -DXXfs_close=${FS}_close
 CPPFLAGS+= -DXXfs_read=${FS}_read
 CPPFLAGS+= -DXXfs_stat=${FS}_stat
 CPPFLAGS+= -DFS=${FS}
+# clang generates too big bootxx_xxx
+.if (${CC} == "clang")
+CPPFLAGS+= -Os
+.endif
 # CPPFLAGS+= -DBOOT_MSG_COM0
 
 # Make sure we override any optimization options specified by the user
-.include "${.PARSEDIR}/../Makefile.inc"
-COPTS= ${OPT_SIZE.${ACTIVE_CC}}
-DBG=
+#.include "${.PARSEDIR}/../Makefile.inc"
+#COPTS=        ${OPT_SIZE.${ACTIVE_CC}}
+#DBG=
 
 CPPFLAGS+= -DNO_LBA_CHECK
 
index 9ecbb479af79ae5be50ea93355168f1ce00056e4..6333f57cac33f88a0cccba843abc036ee870e7c8 100644 (file)
@@ -56,7 +56,11 @@ extern struct disklabel ptn_disklabel;
 static int
 ob(void)
 {
+#ifndef __minix
        return open("boot", 0);
+#else
+       return open("boot_monitor", 0);
+#endif
 }
 
 const char *
@@ -93,7 +97,7 @@ boot1(uint32_t biosdev, uint64_t *sector)
 
 #ifdef BOOT_FROM_MINIXFS3
        bios_sector -= RF_PROTECTED_SECTORS;
-       bios_sector += 32; /* XXX put somewhere as constant */
+       bios_sector += MINIX3_FIRST_SUBP_OFFSET;
        *sector = bios_sector;
 
        fd = ob();
@@ -118,8 +122,13 @@ boot1(uint32_t biosdev, uint64_t *sector)
 
 done:
        /* if we fail here, so will fstat, so keep going */
-       if (fd == -1 || fstat(fd, &sb) == -1)
+       if (fd == -1 || fstat(fd, &sb) == -1) {
+#ifndef __minix
                return "Can't open /boot\r\n";
+#else
+               return "Can't open /boot_monitor\r\n";
+#endif
+       }
 
        biosdev = (uint32_t)sb.st_size;
 #if 0
@@ -127,11 +136,21 @@ done:
                return "/boot too large\r\n";
 #endif
 
-       if (read(fd, (void *)SECONDARY_LOAD_ADDRESS, biosdev) != biosdev)
+       if (read(fd, (void *)SECONDARY_LOAD_ADDRESS, biosdev) != biosdev) {
+#ifndef __minix
                return "/boot load failed\r\n";
+#else
+               return "/boot_monitor load failed\r\n";
+#endif
+       }
 
-       if (*(uint32_t *)(SECONDARY_LOAD_ADDRESS + 4) != X86_BOOT_MAGIC_2)
+       if (*(uint32_t *)(SECONDARY_LOAD_ADDRESS + 4) != X86_BOOT_MAGIC_2) {
+#ifndef __minix
                return "Invalid /boot file format\r\n";
+#else
+               return "Invalid /boot_monitor file format\r\n";
+#endif
+       }
 
        /* We need to jump to the secondary bootstrap in realmode */
        return 0;
index ead430c411cf0aca027519219a24f6dc3c22c5aa..3bed04f6ee3f177e1c2a098d500563b07bbaf118 100644 (file)
@@ -90,7 +90,7 @@ boot_params:                          /* space for patchable variables */
        pop     %ecx
        movl    $boot_params, %esi
        orb     $X86_BP_FLAGS_LBA64VALID, 4(%esi)
-       lcall   $SECONDARY_LOAD_ADDRESS/16, $0
+       lcall   $SECONDARY_LOAD_ADDRESS >> 4, $0
 
 boot_fail:
        push    %ax                     /* error string from boot1 */
index ba1e4e8557341f28e9747bbb0b1ff4940d02444d..4519c4c516f3c885da76e23b8b7f064cc23168ef 100644 (file)
@@ -2,6 +2,10 @@
 
 PROG=bootxx_minixfs3
 FS=minixfs3
-CPPFLAGS=-DBOOT_FROM_MINIXFS3 -DTERSE_ERROR
+
+MINIX3_FIRST_SUBP_OFFSET=32
+
+CPPFLAGS=      -DBOOT_FROM_MINIXFS3 -DTERSE_ERROR
+CPPFLAGS+=     -DMINIX3_FIRST_SUBP_OFFSET=${MINIX3_FIRST_SUBP_OFFSET}
 
 .include <../Makefile.bootxx>