[ros-diffs] [tkreuzer] 52360: [FREELDR] - Fix MSVC linkerflags for setupldr - Move stack from 78000 to 98000 to fix conflicts with freeldr code, which is larger when built with MSVC - MSVC compiled setupldr wo...

tkreuzer at svn.reactos.org tkreuzer at svn.reactos.org
Sun Jun 19 10:03:46 UTC 2011


Author: tkreuzer
Date: Sun Jun 19 10:03:45 2011
New Revision: 52360

URL: http://svn.reactos.org/svn/reactos?rev=52360&view=rev
Log:
[FREELDR]
- Fix MSVC linkerflags for setupldr
- Move stack from 78000 to 98000 to fix conflicts with freeldr code, which is larger when built with MSVC
- MSVC compiled setupldr works now!

Modified:
    trunk/reactos/boot/freeldr/freeldr/CMakeLists.txt
    trunk/reactos/boot/freeldr/freeldr/bootmgr.c
    trunk/reactos/boot/freeldr/freeldr/include/arch/pc/x86common.h

Modified: trunk/reactos/boot/freeldr/freeldr/CMakeLists.txt
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/freeldr/CMakeLists.txt?rev=52360&r1=52359&r2=52360&view=diff
==============================================================================
--- trunk/reactos/boot/freeldr/freeldr/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/reactos/boot/freeldr/freeldr/CMakeLists.txt [iso-8859-1] Sun Jun 19 10:03:45 2011
@@ -117,9 +117,6 @@
         list(APPEND FREELDR_COMMON_SOURCE
             arch/i386/drvmap.S
             arch/i386/multiboot.S)
-    else()
-        list(APPEND FREELDR_COMMON_SOURCE
-            arch/i386/realmode.S)
     endif()
 elseif(ARCH MATCHES amd64)
     list(APPEND FREELDR_COMMON_SOURCE
@@ -217,7 +214,7 @@
 if(NOT MSVC)
     set_target_properties(setupldr_pe PROPERTIES LINK_FLAGS "-Wl,--strip-all -Wl,--exclude-all-symbols -Wl,--file-alignment,0x1000 -Wl,-T,${CMAKE_CURRENT_SOURCE_DIR}/freeldr_i386.lnk" COMPILE_DEFINITIONS "FREELDR_REACTOS_SETUP")
 else()
-    set_target_properties(setupldr_pe PROPERTIES LINK_FLAGS "/DRIVER /SECTION:.text,ERWP,ALIGN=0x1000" COMPILE_DEFINITIONS "FREELDR_REACTOS_SETUP")
+    set_target_properties(setupldr_pe PROPERTIES LINK_FLAGS "/ignore:4078 /ignore:4254 /DRIVER /FIXED /ALIGN:0x400 /SECTION:.text,ERW /SECTION:.data,RW /MERGE:.text16=.text /MERGE:.data=.text /MERGE:.rdata=.text /MERGE:.bss=.text /SUBSYSTEM:BOOT_APPLICATION" COMPILE_DEFINITIONS "FREELDR_REACTOS_SETUP")
 endif()
 
 set_image_base(setupldr_pe 0x10000)

Modified: trunk/reactos/boot/freeldr/freeldr/bootmgr.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/freeldr/bootmgr.c?rev=52360&r1=52359&r2=52360&view=diff
==============================================================================
--- trunk/reactos/boot/freeldr/freeldr/bootmgr.c [iso-8859-1] (original)
+++ trunk/reactos/boot/freeldr/freeldr/bootmgr.c [iso-8859-1] Sun Jun 19 10:03:45 2011
@@ -140,7 +140,7 @@
 	}
 	TimeOut = GetTimeOut();
 
-	if (!UiInitialize(TimeOut))
+	if (!UiInitialize(TimeOut != 0))
 	{
 		UiMessageBoxCritical("Unable to initialize UI.");
 		return;

Modified: trunk/reactos/boot/freeldr/freeldr/include/arch/pc/x86common.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/freeldr/include/arch/pc/x86common.h?rev=52360&r1=52359&r2=52360&view=diff
==============================================================================
--- trunk/reactos/boot/freeldr/freeldr/include/arch/pc/x86common.h [iso-8859-1] (original)
+++ trunk/reactos/boot/freeldr/freeldr/include/arch/pc/x86common.h [iso-8859-1] Sun Jun 19 10:03:45 2011
@@ -8,13 +8,14 @@
 #define BSS_START           HEX(6F00)
 #define FREELDR_BASE        HEX(F800)
 #define FREELDR_PE_BASE    HEX(10000)
-#define STACK32ADDR        HEX(78000) /* The 32-bit stack top will be at 7000:8000, or 0x78000 */
-#define BIOSCALLBUFFER     HEX(78000) /* Buffer to store temporary data for any Int386() call */
-#define BIOSCALLBUFSEGMENT  HEX(7800) /* Buffer to store temporary data for any Int386() call */
-#define BIOSCALLBUFOFFSET   HEX(0000) /* Buffer to store temporary data for any Int386() call */
+#define STACK32ADDR        HEX(98000) /* The 32-bit stack top will be at 9000:8000, or 0xA8000 */
+#define BIOSCALLBUFFER     HEX(98000) /* Buffer to store temporary data for any Int386() call */
 #define FILESYSBUFFER      HEX(80000) /* Buffer to store file system data (e.g. cluster buffer for FAT) */
 #define DISKREADBUFFER     HEX(90000) /* Buffer to store data read in from the disk via the BIOS */
 #define DISKREADBUFFER_SIZE 512
+
+#define BIOSCALLBUFSEGMENT (BIOSCALLBUFFER/16) /* Buffer to store temporary data for any Int386() call */
+#define BIOSCALLBUFOFFSET   HEX(0000) /* Buffer to store temporary data for any Int386() call */
 
 /* These addresses specify the realmode "BSS section" layout */
 #define BSS_RealModeEntry        (BSS_START +  0)




More information about the Ros-diffs mailing list