]> Zhao Yanbai Git Server - minix.git/commitdiff
Port MBR.
authorEvgeniy Ivanov <lolkaantimat@gmail.com>
Tue, 10 Jan 2012 16:43:33 +0000 (20:43 +0400)
committerBen Gras <ben@minix3.org>
Thu, 9 Feb 2012 17:54:39 +0000 (18:54 +0100)
Patch by Antoine LECA.

sys/arch/i386/stand/mbr/Makefile.mbr
sys/arch/i386/stand/mbr/gptmbr/Makefile
sys/arch/i386/stand/mbr/mbr.S
sys/arch/i386/stand/mbr/mbr_com0_9600/Makefile

index 5dc35ab1cefca26dc9f7e42b7b11157f7ab132a8..0e8f2b946a3b648333171d4f1446e0985ed6866e 100644 (file)
@@ -1,6 +1,9 @@
-#      $NetBSD: Makefile.mbr,v 1.18 2011/05/20 15:05:02 joerg Exp $
+#      $NetBSD: Makefile.mbr,v 1.17 2009/11/20 17:28:19 dsl Exp $
 
-S=             ${.CURDIR}/../../../../..
+.if !defined(COMPILER_TYPE) || ${COMPILER_TYPE} != "gnu"
+CC:=clang
+COMPILER_TYPE:=gnu
+.endif
 
 NOMAN=         # defined
 
@@ -16,6 +19,8 @@ PIE_AFLAGS=
 .include <bsd.own.mk>
 
 STRIPFLAG=     # override
+TOOL_SED?=     sed
+NM?=           nm
 
 SRCS?=         mbr.S
 
@@ -24,30 +29,33 @@ BINMODE=    444
 
 .PATH:         ${.CURDIR}/..
 
+LOADADDR=      0x8800
+
 LDFLAGS+=      -nostdlib -Wl,-e,start
-CPPFLAGS+=     -I. -I${.CURDIR}/../../lib -I${S}
+CPPFLAGS+=     -I. -I${.CURDIR}/../../lib -DLOADADDR=${LOADADDR}
 
 .if ${MACHINE_ARCH} == "x86_64"
 LDFLAGS+=      -Wl,-m,elf_i386
 AFLAGS+=       -m32
 .endif
 
-BUILDSYMLINKS+=        $S/arch/i386/include    machine \
-               $S/arch/x86/include     x86
+AFLAGS+= "-Wa,--divide"
 
-DPSRCS+=       machine x86
+# NetBSD can be compiled from a foreign host, MINIX do not. So commented out.
+# Make sys/ a local thing for benefit of cross-compilers
+#S=            ${.CURDIR}/../../../../..
+#CPPFLAGS+=    -I${S}
+# And same for machine/; need a bit more work because of symlink
+#BUILDSYMLINKS+=       $S/arch/i386/include    machine \
+#              $S/arch/x86/include     x86
+#DPSRCS+=      machine x86
 
 CLEANFILES+=   ${PROG}.tmp
 
-LOADADDR=      0x8800
-
-AFLAGS.mbr.S= ${${ACTIVE_CC} == "clang":?-no-integrated-as:}
-AFLAGS.gpt.S= ${${ACTIVE_CC} == "clang":?-no-integrated-as:}
-
 ${PROG}: ${OBJS}
        ${_MKTARGET_LINK}
        ${CC} -o ${PROG}.tmp ${LDFLAGS} -Wl,-Ttext,${LOADADDR} ${OBJS}
-       @ set -- $$( ${NM} -t d ${PROG}.tmp | grep '\<mbr_space\>' \
+       @ set -- $$( ${NM} -t d ${PROG}.tmp | grep 'mbr_space' \
                    | ${TOOL_SED} 's/^0*//'  ); \
                echo "#### There are $$1 free bytes in ${PROG}"
        ${OBJCOPY} -O binary ${PROG}.tmp ${PROG}
index 7273c96f0336b02de95f2f36960b1909016c457b..5839cbcc9cebb470cd60e3a50ced8400d8999113 100644 (file)
@@ -4,6 +4,7 @@ PROG=           gptmbr.bin
 SRCS=          gptmbr.S
 
 AFLAGS.gptmbr.S= ${${ACTIVE_CC} == "clang":?-no-integrated-as:}
+AFLAGS+= "-Wa,--divide"
 
 .include <../Makefile.mbr>
 
index 05be7aec3ff6a5d739e218640d95a449179ace1e..43281ce3df10971c8c3a3de45ae93ef8812107fe 100644 (file)
@@ -515,7 +515,14 @@ do_read:
 */
        movl    %ebp, %esi
        pop     %dx                     /* recover drive # */
+#ifdef __minix
+       /* There some bug in MINIX tools, which causes to
+        * generate wrong code for "jmp BOOTADDR" (relocation issue).
+        */
+       jmp     start - LOADADDR + BOOTADDR
+#else
        jmp     BOOTADDR
+#endif
 
 
 #ifndef NO_CHS
index bb3a8a618a0c0e725289149b09adbb831f36b6d2..1007c8d91a4fb8d051111492e7d3a717c4cb898e 100644 (file)
@@ -5,4 +5,6 @@ AFLAGS+= -DBOOTSEL -DBOOT_EXTENDED -DCOM_PORT=0 -DCOM_BAUD=9600
 AFLAGS+= -DTERSE_ERROR -DNO_CHS
 AFLAGS+= "-DBOOTSEL_FLAGS=MBR_BS_ACTIVE|MBR_BS_EXTLBA|MBR_BS_ASCII"
 
+AFLAGS+= "-Wa,--divide"
+
 .include <../Makefile.mbr>