[ros-diffs] [tkreuzer] 49596: [FREELDR] Add a new file realmode.S for MSVC currently only containing some stubs to resolve references. The 16 bit code needs some work to be compilable with ML. Delete some amd6...

tkreuzer at svn.reactos.org tkreuzer at svn.reactos.org
Mon Nov 15 19:44:48 UTC 2010


Author: tkreuzer
Date: Mon Nov 15 19:44:48 2010
New Revision: 49596

URL: http://svn.reactos.org/svn/reactos?rev=49596&view=rev
Log:
[FREELDR]
Add a new file realmode.S for MSVC currently only containing some stubs to resolve references. The 16 bit code needs some work to be compilable with ML.
Delete some amd64 files that only duplicated x86 16 bit code. Remove unused _alloca.S. Improve freeldr rules, add some experimental linking flags for MSVC, it links with a few warnings.

Added:
    branches/cmake-bringup/boot/freeldr/freeldr/arch/i386/realmode.S   (with props)
Removed:
    branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/drvmap.S
    branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/fathelp.S
    branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/i386cpu.S
    branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/i386idt.S
    branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/i386trap.S
    branches/cmake-bringup/boot/freeldr/freeldr/arch/i386/_alloca.S
Modified:
    branches/cmake-bringup/boot/CMakeLists.txt
    branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/arch.S
    branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/boot.S
    branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/i386pnp.S
    branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/int386.S
    branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/mb.S
    branches/cmake-bringup/boot/freeldr/freeldr/arch/i386/arch.S
    branches/cmake-bringup/boot/freeldr/freeldr/debug.c
    branches/cmake-bringup/boot/freeldr/freeldr/freeldr.c
    branches/cmake-bringup/boot/freeldr/freeldr/reactos/reactos.c
    branches/cmake-bringup/boot/freeldr/freeldr/windows/winldr.c

Modified: branches/cmake-bringup/boot/CMakeLists.txt
URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/boot/CMakeLists.txt?rev=49596&r1=49595&r2=49596&view=diff
==============================================================================
--- branches/cmake-bringup/boot/CMakeLists.txt [iso-8859-1] (original)
+++ branches/cmake-bringup/boot/CMakeLists.txt [iso-8859-1] Mon Nov 15 19:44:48 2010
@@ -10,16 +10,22 @@
 include_directories(${REACTOS_SOURCE_DIR}/ntoskrnl/include)
 
 if(ARCH MATCHES i386)
+if(MSVC)
+list(APPEND FREELDR_BASE64K_SOURCE
+    freeldr/freeldr/arch/i386/realmode.S)
+else()
 list(APPEND FREELDR_STARTUP_SOURCE
     freeldr/freeldr/arch/i386/fathelp.S
     freeldr/freeldr/arch/i386/arch.S)
+endif()
 elseif(ARCH MATCHES amd64)
 list(APPEND FREELDR_STARTUP_SOURCE
-    freeldr/freeldr/arch/amd64/fathelp.S
+    freeldr/freeldr/arch/i386/fathelp.S
     freeldr/freeldr/arch/amd64/arch.S)
 endif(ARCH MATCHES i386)
 
 if(ARCH MATCHES i386)
+if(NOT MSVC)
 list(APPEND FREELDR_BASE64K_SOURCE
     freeldr/freeldr/arch/i386/boot.S
     freeldr/freeldr/arch/i386/drvmap.S
@@ -31,12 +37,13 @@
     freeldr/freeldr/arch/i386/linux.S
     freeldr/freeldr/arch/i386/mb.S
     freeldr/freeldr/arch/i386/i386bug.c)
+endif()
 elseif(ARCH MATCHES amd64)
 list(APPEND FREELDR_BASE64K_SOURCE
-    freeldr/freeldr/arch/amd64/drvmap.S
-    freeldr/freeldr/arch/amd64/i386cpu.S
-    freeldr/freeldr/arch/amd64/i386idt.S
-    freeldr/freeldr/arch/amd64/i386trap.S
+    freeldr/freeldr/arch/i386/drvmap.S
+    freeldr/freeldr/arch/i386/i386cpu.S
+    freeldr/freeldr/arch/i386/i386idt.S
+    freeldr/freeldr/arch/i386/i386trap.S
     freeldr/freeldr/arch/amd64/mb.S)
 endif(ARCH MATCHES i386)
 
@@ -107,7 +114,6 @@
 
 if(ARCH MATCHES i386)
 list(APPEND FREELDR_ARCH_SOURCE
-    freeldr/freeldr/arch/i386/_alloca.S
     freeldr/freeldr/arch/i386/archmach.c
     freeldr/freeldr/arch/i386/custom.c
     freeldr/freeldr/arch/i386/drivemap.c
@@ -171,7 +177,16 @@
     ${CMAKE_CURRENT_BINARY_DIR}/freeldr_freeldr.h.gch
     ${FREELDR_SOURCE})
 
-set_target_properties(freeldr PROPERTIES LINK_FLAGS "-Wl,--strip-all -Wl,-entry,_mainCRTStartup -Wl,--image-base,0x8000 -Wl,--exclude-all-symbols -Wl,--subsystem,native -Wl,--file-alignment,0x1000 -Wl,-T,${REACTOS_SOURCE_DIR}/global.lds" SUFFIX ".sys")
+if(NOT MSVC)
+set_target_properties(freeldr PROPERTIES LINK_FLAGS "-Wl,--strip-all -Wl,--exclude-all-symbols -Wl,--file-alignment,0x1000 -Wl,-T,${REACTOS_SOURCE_DIR}/global.lds" SUFFIX ".sys")
+set_image_base(freeldr 0x8000)
+else()
+set_target_properties(freeldr PROPERTIES LINK_FLAGS "/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" SUFFIX ".sys")
+set_image_base(freeldr 0x10000)
+endif()
+
+set_subsystem(freeldr native)
+set_entrypoint(freeldr mainCRTStartup)
 
 if(ARCH MATCHES i386)
 target_link_libraries(freeldr mini_hal)
@@ -184,6 +199,7 @@
     rtl
     libcntpr)
 add_pch(freeldr ${CMAKE_CURRENT_SOURCE_DIR}/freeldr/freeldr/include/freeldr.h ${FREELDR_SOURCE})
+add_dependencies(freeldr ks386)
 
 list(APPEND SETUPLDR_SOURCE
     ${FREELDR_STARTUP_SOURCE}
@@ -194,7 +210,15 @@
 
 add_library(setupldr SHARED ${SETUPLDR_SOURCE})
 
-set_target_properties(setupldr PROPERTIES LINK_FLAGS "-Wl,--strip-all -Wl,-entry,_mainCRTStartup -Wl,--image-base,0x8000 -Wl,--exclude-all-symbols -Wl,--subsystem,native -Wl,--file-alignment,0x1000 -Wl,-T,${REACTOS_SOURCE_DIR}/global.lds" SUFFIX ".sys" COMPILE_DEFINITIONS "FREELDR_REACTOS_SETUP")
+if(NOT MSVC)
+set_target_properties(setupldr PROPERTIES LINK_FLAGS "-Wl,--strip-all -Wl,--exclude-all-symbols -Wl,--file-alignment,0x1000 -Wl,-T,${REACTOS_SOURCE_DIR}/global.lds" SUFFIX ".sys" COMPILE_DEFINITIONS "FREELDR_REACTOS_SETUP")
+set_image_base(setupldr 0x8000)
+else()
+set_target_properties(setupldr PROPERTIES LINK_FLAGS "/SECTION:.text,ERWP,ALIGN=0x1000" SUFFIX ".sys" COMPILE_DEFINITIONS "FREELDR_REACTOS_SETUP")
+endif()
+
+set_subsystem(setupldr native)
+set_entrypoint(freeldr mainCRTStartup)
 
 if(ARCH MATCHES i386)
 target_link_libraries(setupldr mini_hal)
@@ -206,7 +230,9 @@
     cmlib
     rtl
     libcntpr)
-    
+
+add_dependencies(setupldr ks386)
+
 # Bootcd files
 add_minicd_target(setupldr loader setupldr.sys)
 add_minicd_target(freeldr loader freeldr.sys)

Modified: branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/arch.S
URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/arch.S?rev=49596&r1=49595&r2=49596&view=diff
==============================================================================
--- branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/arch.S [iso-8859-1] (original)
+++ branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/arch.S [iso-8859-1] Mon Nov 15 19:44:48 2010
@@ -1,9 +1,12 @@
-.intel_syntax noprefix
+
+#define ASM
+
+#include <asm.inc>
+
+#include <arch.h>
+
 .text
 .code16
-
-#define ASM
-#include <arch.h>
 
 //.org 0x8000
 

Modified: branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/boot.S
URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/boot.S?rev=49596&r1=49595&r2=49596&view=diff
==============================================================================
--- branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/boot.S [iso-8859-1] (original)
+++ branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/boot.S [iso-8859-1] Mon Nov 15 19:44:48 2010
@@ -17,14 +17,17 @@
  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
+#include <asm.inc>
+
+
 	.text
 	.code16
 
 #define ASM
 #include <arch.h>
 
-
-EXTERN(ChainLoadBiosBootSectorCode)
+PUBLIC ChainLoadBiosBootSectorCode
+ChainLoadBiosBootSectorCode:
 	.code64
 
 	call x86_64_SwitchToReal
@@ -46,7 +49,8 @@
 //	ljmpl	$0x0000,$0x7C00
 	jmp 0x7c00:0x0000
 
-EXTERN(SoftReboot)
+PUBLIC SoftReboot
+SoftReboot:
 	.code64
 
 	call	x86_64_SwitchToReal

Removed: branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/drvmap.S
URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/drvmap.S?rev=49595&view=auto
==============================================================================
--- branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/drvmap.S [iso-8859-1] (original)
+++ branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/drvmap.S (removed)
@@ -1,132 +1,0 @@
-/*
- *  FreeLoader
- *  Copyright (C) 1998-2002  Brian Palmer  <brianp at sginet.com>
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-	.text
-	.code16
-
-#define ASM
-#include <arch.h>
-
-
-EXTERN(DriveMapInt13HandlerStart)
-Int13Handler:
-
-	pushw	%bp
-	movw	%sp,%bp
-	pushw	%ax
-	pushw	%cx
-	pushw	%si
-
-	cld
-
-	/* Get callers flags from stack */
-	movw	0x06(%bp),%ax
-	movw	%ax,%cs:(CallersFlags - Int13Handler)
-
-	/* Save the drive number they passed in */
-	movb	%dl,%cs:(PassedInDriveNumber - Int13Handler)
-
-	/* Now we need to perform the mapping */
-	xorw	%cx,%cx
-	movw	$(Int13HandlerMapCount - Int13Handler),%si
-	/* Get the count of drives in the map list */
-	movb	%cs:(%si),%cl
-	incw	%si
-
-	/* If the map list is empty then just call the old int 13h handler */
-	cmpb	$0,%cl
-	jz		CallOldInt13Handler
-
-GetMappedDriveNumberLoop:
-
-	/* Get the next drive number in the list */
-	lodsw	%cs:(%si),%ax
-	/* Check to see if it's the one they are calling int 13h for */
-	cmpb	%al,%dl
-	/* If not get the next one */
-	jne		GetMappedDriveNumberLoopNext
-
-	/* If we get here then we have found a mapped drive */
-	/* Send new drive number on to the old int 13h handler */
-	movb	%ah,%dl
-	/* Call BIOS Int 13 Handler */
-	jmp		CallOldInt13Handler
-
-GetMappedDriveNumberLoopNext:
-	loop	GetMappedDriveNumberLoop
-
-CallOldInt13Handler:
-	/* Restore the registers we changed off the stack */
-	popw	%si
-	popw	%cx
-	popw	%ax
-
-	/* Put flags onto stack */
-	pushw	%cs:(CallersFlags - Int13Handler)
-
-	/* Call old int 13h handler with new drive number */
-	.byte	0x9a /* lcall */
-EXTERN(DriveMapOldInt13HandlerAddress)
-	.word	0
-	.word	0
-
-	/* Update the callers flags with the values the BIOS returned */
-	pushw	%ax
-	pushf
-	popw	%ax
-	movw	%ax,0x06(%bp)
-	popw	%ax
-	/* Restore the callers drive number */
-	movb	%cs:(PassedInDriveNumber - Int13Handler),%dl
-
-	popw	%bp
-
-	iret
-
-CallersFlags:
-	.word	0
-
-PassedInDriveNumber:
-	.byte	0
-
-EXTERN(DriveMapInt13HandlerMapList)
-Int13HandlerMapCount:
-	.byte	0
-
-Int13HandlerDrive1:
-	.byte	0
-Int13HandlerDriveNew1:
-	.byte	0
-
-Int13HandlerDrive2:
-	.byte	0
-Int13HandlerDriveNew2:
-	.byte	0
-
-Int13HandlerDrive3:
-	.byte	0
-Int13HandlerDriveNew3:
-	.byte	0
-
-Int13HandlerDrive4:
-	.byte	0
-Int13HandlerDriveNew4:
-	.byte	0
-
-EXTERN(DriveMapInt13HandlerEnd)

Removed: branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/fathelp.S
URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/fathelp.S?rev=49595&view=auto
==============================================================================
--- branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/fathelp.S [iso-8859-1] (original)
+++ branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/fathelp.S (removed)
@@ -1,235 +1,0 @@
-// fathelp.S
-// FAT12/16 Boot Sector Helper Code
-// Copyright (c) 1998, 2001, 2002, 2003 Brian Palmer
-
-.intel_syntax noprefix
-
-//org 8000h
-
-.text
-
-.code16
-
-
-#define BootSectorStackTop		0x7bf2
-#define DataAreaStartHigh		0x2
-#define DataAreaStartLow		0x4
-#define BiosCHSDriveSizeHigh	0x6
-#define BiosCHSDriveSizeLow		0x8
-#define BiosCHSDriveSize		0x8
-#define ReadSectorsOffset		0xa
-#define ReadClusterOffset		0xc
-#define PutCharsOffset			0xe
-
-#define OEMName					3
-#define BytesPerSector			11
-#define SectsPerCluster			13
-#define ReservedSectors			14
-#define NumberOfFats			16
-#define MaxRootEntries			17
-#define TotalSectors			19
-#define MediaDescriptor			21
-#define SectorsPerFat			22
-#define SectorsPerTrack			24
-#define NumberOfHeads			26
-#define HiddenSectors			28
-#define TotalSectorsBig			32
-#define BootDrive				36
-#define Reserved				37
-#define ExtendSig				38
-#define SerialNumber			39
-#define VolumeLabel				43
-#define FileSystem				54
-
-#define BootPartition			0x7dfd
-
-
-// This code will be stored in the first 512 bytes
-// of freeldr.sys. The first 3 bytes will be a jmp
-// instruction to skip past the FAT helper code
-// that is stored in the rest of the 512 bytes.
-//
-// This code is loaded at 0000:8000 so we have to
-// encode a jmp instruction to jump to 0000:8200
-
-.global _mainCRTStartup	// For Mingw32 builds where the linker looks for this symbol
-_mainCRTStartup:
-.global start
-start:
-        .byte	0xe9
-		.byte	0xfd
-		.byte	0x01
-
-// Now starts the extra boot code that we will store
-// in the first 512 bytes of freeldr.sys. This code
-// allows the FAT12/16 bootsector to navigate the
-// FAT table so that we can still load freeldr.sys
-// even if it is fragmented.
-
-
-FatHelperEntryPoint:
-
-		push ax							// First save AX - the start cluster of freeldr.sys
-
-
-		// Display "Loading FreeLoader..." message
-        mov  esi, offset msgLoading			// Loading message
-        call [bp-PutCharsOffset]		// Display it
-
-
-		call ReadFatIntoMemory
-
-		pop  ax							// Restore AX (start cluster)
-		// AX has start cluster of freeldr.sys
-
-        mov  bx,0x800
-        mov  es,bx
-
-LoadFile:
-		push ax
-		call IsFat12
-		pop  ax
-		jnc  LoadFile2
-		cmp  ax,0x0ff8		    // Check to see if this is the last cluster in the chain
-		jmp  LoadFile3
-LoadFile2:
-		cmp  ax,0x0fff8
-LoadFile3:
-		jae	 LoadFile_Done		// If so continue, if not then read then next one
-		push ax
-        xor  bx,bx              // Load ROSLDR starting at 0000:8000h
-		push es
-		call [bp-ReadClusterOffset]
-		pop  es
-
-		xor  bx,bx
-        mov  bl, [bp+SectsPerCluster]
-		shl  bx,5							// BX = BX * 512 / 16
-		mov  ax,es							// Increment the load address by
-		add  ax,bx							// The size of a cluster
-		mov  es,ax
-
-		call IsFat12
-		pop  ax
-		push es
-		jnc  LoadFile4
-		call GetFatEntry12					// Get the next entry
-		jmp  LoadFile5
-LoadFile4:
-		call GetFatEntry16
-LoadFile5:
-		pop  es
-
-        jmp  LoadFile						// Load the next cluster (if any)
-
-LoadFile_Done:
-        mov  dl,BYTE PTR [bp+BootDrive]		// Load the boot drive into DL
-		mov  dh,[BootPartition]				// Load the boot partition into DH
-
-		push 0						// push segment (0x0000)
-		mov bx, [0x8000 + 0xA8]		// load the RVA of the EntryPoint into eax
-		add bx, 0x8000				// RVA -> VA and skip 3 bytes (jump to fathelper code)
-		push bx						// push offset
-		retf						// Transfer control to FreeLoader
-
-// Reads the entire FAT into memory at 7000:0000
-ReadFatIntoMemory:
-        mov   ax, [bp+HiddenSectors] 
-        mov   dx, [bp+HiddenSectors+2]
-		add   ax, [bp+ReservedSectors]
-		adc   dx, 0
-		mov   cx, [bp+SectorsPerFat]
-		mov   bx,0x7000
-		mov   es,bx
-		xor   bx,bx
-		call  [bp-ReadSectorsOffset]
-		ret
-
-
-// Returns the FAT entry for a given cluster number for 16-bit FAT
-// On entry AX has cluster number
-// On return AX has FAT entry for that cluster
-GetFatEntry16:
-
-		mov   cx,2						// AX = AX * 2 (since FAT16 entries are 2 bytes)
-		mul   cx
-		shl   dx,12
-
-        mov   bx,0x7000
-		add   bx,dx
-        mov   es,bx
-		mov   bx,ax						// Restore FAT entry offset
-		mov   ax, es:[bx]	    	// Get FAT entry
-
-		ret
-
-
-// Returns the FAT entry for a given cluster number for 12-bit FAT
-// On entry AX has cluster number
-// On return AX has FAT entry for that cluster
-GetFatEntry12:
-
-		push  ax
-		mov   cx,ax
-		shr   ax,1
-		add   ax,cx						// AX = AX * 1.5 (AX = AX + (AX / 2)) (since FAT12 entries are 12 bits)
-
-        mov   bx,0x7000
-        mov   es,bx
-		mov   bx,ax						// Put FAT entry offset into BX
-		mov   ax, es:[bx]	    	// Get FAT entry
-		pop   cx						// Get cluster number from stack
-		and   cx,1
-		jz    UseLow12Bits
-		and   ax,0x0fff0
-		shr   ax,4
-		jmp   GetFatEntry12_Done
-
-UseLow12Bits:
-		and   ax,0x0fff
-
-GetFatEntry12_Done:
-
-		ret
-
-
-// Returns CF = 1 if this is a FAT12 file system
-// Otherwise CF = 0 for FAT16
-IsFat12:
-
-		mov   ebx, [bp-DataAreaStartLow]
-        // EBX now has the number of the starting sector of the data area
-		// starting from the beginning of the disk, so subtrace hidden sectors
-		sub   ebx, [bp+HiddenSectors]
-
-
-		xor   eax,eax
-		mov   ax, [bp+TotalSectors]
-		cmp   ax, 0
-		jnz   IsFat12_2
-		mov   eax, [bp+TotalSectorsBig]
-
-		// EAX now contains the number of sectors on the volume
-
-IsFat12_2:
-		sub   eax,ebx				// Subtract data area start sector
-		xor   edx,edx				// from total sectors of volume
-
-		// EDX:EAX now contains the number of data sectors on the volume
-		movzx ebx, byte ptr [bp+SectsPerCluster]
-		div   ebx
-		// EAX now has the number of clusters on the volume
-		stc
-		cmp   eax,4085
-		jb    IsFat12_Done
-		clc
-
-IsFat12_Done:
-		ret
-
-
-
-msgLoading:	.asciz "Loading FreeLoader...\r\n"
-
-            .org 0x1fe				// Pad to 510 bytes
-			.word 0x0aa55			// BootSector signature

Removed: branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/i386cpu.S
URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/i386cpu.S?rev=49595&view=auto
==============================================================================
--- branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/i386cpu.S [iso-8859-1] (original)
+++ branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/i386cpu.S (removed)
@@ -1,131 +1,0 @@
-/*
- *  FreeLoader
- *  Copyright (C) 2003  Eric Kohl
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-	.text
-	.code16
-
-#define ASM
-
-#include <arch.h>
-
-/*
- * U32 CpuidSupported(VOID);
- *
- * RETURNS:
- *    0x00000001: CPU supports the CPUID instruction
- *    0x00000300: Found 80386 CPU
- *    0x00000400: Found 80486 CPU without CPUID support
- */
-
-EXTERN(CpuidSupported)
-	.code32
-
-	pushl	%ecx			/* save ECX */
-
-	pushfl				/* push original EFLAGS */
-	popl	%eax			/* get original EFLAGS */
-	movl	%eax,%ecx		/* save original EFLAGS */
-	xorl	$0x40000,%eax		/* flip AC bit in EFLAGS */
-	pushl	%eax			/* save new EFLAGS value on stack */
-	popfl				/* replace current EFLAGS value */
-
-	pushfl				/* get new EFLAGS */
-	popl	%eax			/* store new EFLAGS in EAX */
-	xorl	%ecx, %eax		/* can't toggle AC bit, processor=80386 */
-
-	movl	$0x300,%eax		/* return processor id */
-	jz	NoCpuid			/* jump if 80386 processor */
-
-	pushl	%ecx
-	popfl				/* restore AC bit in EFLAGS first */
-
-	movl	%ecx,%eax		/* get original EFLAGS */
-	xorl	$0x200000,%eax		/* flip ID bit in EFLAGS */
-	pushl	%eax			/* save new EFLAGS value on stack */
-	popfl				/* replace current EFLAGS value */
-	pushfl				/* get new EFLAGS */
-	popl	%eax			/* store new EFLAGS in EAX */
-	xorl	%ecx,%eax		/* can't toggle ID bit, */
-
-	movl	$0x400,%eax		/* return processor id */
-	je	NoCpuid			/* processor=80486 */
-
-	movl	$1,%eax			/* CPUID supported */
-
-NoCpuid:
-	pushl	%ecx
-	popfl				/* restore EFLAGS */
-	popl	%ecx			/* retore ECX */
-
-	ret
-
-
-/*
- * VOID GetCpuid(U32 Level, U32 *eax, U32 *ebx, U32 *ecx, U32 *edx);
- */
-
-EXTERN(GetCpuid)
-	.code32
-
-	pushl	%ebp
-	movl	%esp,%ebp
-
-	pushl	%eax
-	pushl	%ebx
-	pushl	%ecx
-	pushl	%edx
-	pushl	%esi
-
-	movl	0x08(%ebp),%eax
-
-	cpuid
-
-	movl	0x0C(%ebp),%esi
-	movl	%eax,(%esi)
-
-	movl	0x10(%ebp),%esi
-	movl	%ebx,(%esi)
-
-	movl	0x14(%ebp),%esi
-	movl	%ecx,(%esi)
-
-	movl	0x18(%ebp),%esi
-	movl	%edx,(%esi)
-
-	popl	%esi
-	popl	%edx
-	popl	%ecx
-	popl	%ebx
-	popl	%eax
-
-	movl	%ebp,%esp
-	popl	%ebp
-	ret
-
-
-/*
- * U64 RDTSC(VOID);
- */
-
-EXTERN(RDTSC)
-	.code32
-	rdtsc
-	ret
-
-/* EOF */

Removed: branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/i386idt.S
URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/i386idt.S?rev=49595&view=auto
==============================================================================
--- branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/i386idt.S [iso-8859-1] (original)
+++ branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/i386idt.S (removed)
@@ -1,224 +1,0 @@
-/*
- *  FreeLoader
- *  Copyright (C) 1998-2002  Brian Palmer  <brianp at sginet.com>
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-	.text
-	.code16
-
-#define ASM
-#include <arch.h>
-
-
-	.p2align	2	/* force 4-byte alignment */
-EXTERN(i386idt)
-	/* Exception 0 - Divide By Zero */
-	.word	i386DivideByZero			/* Offset 0 - 15 */
-	.word	0x0008						/* Selector */
-	.word	0x8e00						/* Flags, Zero Byte */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 1 - Debug Exception */
-	.word	i386DebugException			/* Offset 0 - 15 */
-	.word	0x0008						/* Selector */
-	.word	0x8e00						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 2 - NMI */
-	.word	i386NMIException			/* Offset 0 - 15 */
-	.word	0x0008						/* Selector */
-	.word	0x8e00						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 3 - Breakpoint (INT 3) */
-	.word	i386Breakpoint				/* Offset 0 - 15 */
-	.word	0x0008						/* Selector */
-	.word	0x8e00						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 4 - Overflow (INTO with EFLAGS[OF] set) */
-	.word	i386Overflow				/* Offset 0 - 15 */
-	.word	0x0008						/* Selector */
-	.word	0x8e00						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 5 - Bound Exception */
-	.word	i386BoundException			/* Offset 0 - 15 */
-	.word	0x0008						/* Selector */
-	.word	0x8e00						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 6 - Invalid Opcode */
-	.word	i386InvalidOpcode			/* Offset 0 - 15 */
-	.word	0x0008						/* Selector */
-	.word	0x8e00						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 7 - FPU Not Available */
-	.word	i386FPUNotAvailable			/* Offset 0 - 15 */
-	.word	0x0008						/* Selector */
-	.word	0x8e00						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 8 - Double Fault */
-	.word	i386DoubleFault				/* Offset 0 - 15 */
-	.word	0x0008						/* Selector */
-	.word	0x8e00						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 9 - Coprocessor Segment Overrun */
-	.word	i386CoprocessorSegment		/* Offset 0 - 15 */
-	.word	0x0008						/* Selector */
-	.word	0x8e00						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 10 (0x0A) - Invalid TSS */
-	.word	i386InvalidTSS				/* Offset 0 - 15 */
-	.word	0x0008						/* Selector */
-	.word	0x8e00						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 11 (0x0B) - Segment Not Present */
-	.word	i386SegmentNotPresent		/* Offset 0 - 15 */
-	.word	0x0008						/* Selector */
-	.word	0x8e00						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 12 (0x0C) - Stack Exception */
-	.word	i386StackException			/* Offset 0 - 15 */
-	.word	0x0008						/* Selector */
-	.word	0x8e00						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 13 (0x0D) - General Protection Fault */
-	.word	i386GeneralProtectionFault	/* Offset 0 - 15 */
-	.word	0x0008						/* Selector */
-	.word	0x8e00						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 14 (0x0E) - Page Fault */
-	.word	i386PageFault				/* Offset 0 - 15 */
-	.word	0x0008						/* Selector */
-	.word	0x8e00						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 15 (0x0F) - Reserved */
-	.word	0x0000						/* Offset 0 - 15 */
-	.word	0x0000						/* Selector */
-	.word	0x0000						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 16 (0x10) - Coprocessor Error */
-	.word	i386CoprocessorError		/* Offset 0 - 15 */
-	.word	0x0008						/* Selector */
-	.word	0x8e00						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 17 (0x11) - Alignment Check */
-	.word	i386AlignmentCheck			/* Offset 0 - 15 */
-	.word	0x0008						/* Selector */
-	.word	0x8e00						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 18 (0x12) - Machine Check */
-	.word	i386MachineCheck			/* Offset 0 - 15 */
-	.word	0x0008						/* Selector */
-	.word	0x8e00						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 19 (0x13) - Reserved */
-	.word	0x0000						/* Offset 0 - 15 */
-	.word	0x0000						/* Selector */
-	.word	0x0000						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 20 (0x14) - Reserved */
-	.word	0x0000						/* Offset 0 - 15 */
-	.word	0x0000						/* Selector */
-	.word	0x0000						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 21 (0x15) - Reserved */
-	.word	0x0000						/* Offset 0 - 15 */
-	.word	0x0000						/* Selector */
-	.word	0x0000						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 22 (0x16) - Reserved */
-	.word	0x0000						/* Offset 0 - 15 */
-	.word	0x0000						/* Selector */
-	.word	0x0000						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 23 (0x17) - Reserved */
-	.word	0x0000						/* Offset 0 - 15 */
-	.word	0x0000						/* Selector */
-	.word	0x0000						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 24 (0x18) - Reserved */
-	.word	0x0000						/* Offset 0 - 15 */
-	.word	0x0000						/* Selector */
-	.word	0x0000						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 25 (0x19) - Reserved */
-	.word	0x0000						/* Offset 0 - 15 */
-	.word	0x0000						/* Selector */
-	.word	0x0000						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 26 (0x1A) - Reserved */
-	.word	0x0000						/* Offset 0 - 15 */
-	.word	0x0000						/* Selector */
-	.word	0x0000						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 27 (0x1B) - Reserved */
-	.word	0x0000						/* Offset 0 - 15 */
-	.word	0x0000						/* Selector */
-	.word	0x0000						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 28 (0x1C) - Reserved */
-	.word	0x0000						/* Offset 0 - 15 */
-	.word	0x0000						/* Selector */
-	.word	0x0000						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 29 (0x1D) - Reserved */
-	.word	0x0000						/* Offset 0 - 15 */
-	.word	0x0000						/* Selector */
-	.word	0x0000						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 30 (0x1E) - Reserved */
-	.word	0x0000						/* Offset 0 - 15 */
-	.word	0x0000						/* Selector */
-	.word	0x0000						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-	/* Exception 31 (0x1F) - Reserved */
-	.word	0x0000						/* Offset 0 - 15 */
-	.word	0x0000						/* Selector */
-	.word	0x0000						/* Zero byte, flags */
-	.word	0x0000						/* Offset 16 - 31 */
-
-/* IDT table pointer */
-EXTERN(i386idtptr)
-	.word	(i386idtptr-i386idt)		/* Limit */
-	.long	i386idt						/* Base Address */

Modified: branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/i386pnp.S
URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/i386pnp.S?rev=49596&r1=49595&r2=49596&view=diff
==============================================================================
--- branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/i386pnp.S [iso-8859-1] (original)
+++ branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/i386pnp.S [iso-8859-1] Mon Nov 15 19:44:48 2010
@@ -16,6 +16,9 @@
  *  with this program; if not, write to the Free Software Foundation, Inc.,
  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
+
+#include <asm.inc>
+
 
 	.text
 	.code16
@@ -255,4 +258,5 @@
 
 	ret
 
+END
 /* EOF */

Removed: branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/i386trap.S
URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/i386trap.S?rev=49595&view=auto
==============================================================================
--- branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/i386trap.S [iso-8859-1] (original)
+++ branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/i386trap.S (removed)
@@ -1,942 +1,0 @@
-/*
- *  FreeLoader
- *  Copyright (C) 1998-2002  Brian Palmer  <brianp at sginet.com>
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License along
- *  with this program; if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-	.text
-	.code16
-
-#define ASM
-#include <arch.h>
-#include <ver.h>
-
-#define SCREEN_ATTR 0x1f			/* Bright white on blue background */
-
-.macro SAVE_CPU_REGS
-	movl	%eax,i386_EAX
-	movl	%ebx,i386_EBX
-	movl	%ecx,i386_ECX
-	movl	%edx,i386_EDX
-	movl	%esp,i386_ESP
-	movl	%ebp,i386_EBP
-	movl	%esi,i386_ESI
-	movl	%edi,i386_EDI
-	movw	%ds,%ax
-	movw	%ax,i386_DS
-	movw	%es,%ax
-	movw	%ax,i386_ES
-	movw	%fs,%ax
-	movw	%ax,i386_FS
-	movw	%gs,%ax
-	movw	%ax,i386_GS
-	movw	%ss,%ax
-	movw	%ax,i386_SS
-	popl	%eax
-	movl	%eax,i386_EIP
-	popl	%eax
-	movw	%ax,i386_CS
-	popl	%eax
-	movl	%eax,i386_EFLAGS
-	movl	%cr0,%eax
-	movl	%eax,i386_CR0
-	//movl	%cr1,%eax
-	//movl	%eax,i386_CR1
-	movl	%cr2,%eax
-	movl	%eax,i386_CR2
-	movl	%cr3,%eax
-	movl	%eax,i386_CR3
-	movl	%dr0,%eax
-	movl	%eax,i386_DR0
-	movl	%dr1,%eax
-	movl	%eax,i386_DR1
-	movl	%dr2,%eax
-	movl	%eax,i386_DR2
-	movl	%dr3,%eax
-	movl	%eax,i386_DR3
-	movl	%dr6,%eax
-	movl	%eax,i386_DR6
-	movl	%dr7,%eax
-	movl	%eax,i386_DR7
-	sgdt	i386_GDTR
-	sidt	i386_IDTR
-	sldt	i386_LDTR
-	str		i386_TR
-.endm
-
-
-
-i386ExceptionHandlerText:
-	.ascii "An error occured in FreeLoader\n"
-	.ascii VERSION
-	.ascii "\n"
-	.asciz "Report this error to the ReactOS Development mailing list <ros-dev at reactos.org>\n\n"
-
-i386DivideByZeroText:
-	.asciz "Exception 00: DIVIDE BY ZERO\n\n"
-i386DebugExceptionText:
-	.asciz "Exception 01: DEBUG EXCEPTION\n\n"
-i386NMIExceptionText:
-	.asciz "Exception 02: NON-MASKABLE INTERRUPT EXCEPTION\n\n"
-i386BreakpointText:
-	.asciz "Exception 03: BREAKPOINT (INT 3)\n\n"
-i386OverflowText:
-	.asciz "Exception 04: OVERFLOW\n\n"
-i386BoundExceptionText:
-	.asciz "Exception 05: BOUND EXCEPTION\n\n"
-i386InvalidOpcodeText:
-	.asciz "Exception 06: INVALID OPCODE\n\n"
-i386FPUNotAvailableText:
-	.asciz "Exception 07: FPU NOT AVAILABLE\n\n"
-i386DoubleFaultText:
-	.asciz "Exception 08: DOUBLE FAULT\n\n"
-i386CoprocessorSegmentText:
-	.asciz "Exception 09: COPROCESSOR SEGMENT OVERRUN\n\n"
-i386InvalidTSSText:
-	.asciz "Exception 0A: INVALID TSS\n\n"
-i386SegmentNotPresentText:
-	.asciz "Exception 0B: SEGMENT NOT PRESENT\n\n"
-i386StackExceptionText:
-	.asciz "Exception 0C: STACK EXCEPTION\n\n"
-i386GeneralProtectionFaultText:
-	.asciz "Exception 0D: GENERAL PROTECTION FAULT\n\n"
-i386PageFaultText:
-	.asciz "Exception 0E: PAGE FAULT\n\n"
-i386CoprocessorErrorText:
-	.asciz "Exception 10: COPROCESSOR ERROR\n\n"
-i386AlignmentCheckText:
-	.asciz "Exception 11: ALIGNMENT CHECK\n\n"
-i386MachineCheckText:
-	.asciz "Exception 12: MACHINE CHECK\n\n"
-
-i386_EAX_Text:
-	.asciz "EAX: "
-i386_EBX_Text:
-	.asciz "EBX: "
-i386_ECX_Text:
-	.asciz "ECX: "
-i386_EDX_Text:
-	.asciz "EDX: "
-i386_ESP_Text:
-	.asciz "        ESP: "
-i386_EBP_Text:
-	.asciz "        EBP: "
-i386_ESI_Text:
-	.asciz "        ESI: "
-i386_EDI_Text:
-	.asciz "        EDI: "
-i386_CS_Text:
-	.asciz "CS: "
-i386_DS_Text:
-	.asciz "DS: "
-i386_ES_Text:
-	.asciz "ES: "
-i386_FS_Text:
-	.asciz "FS: "
-i386_GS_Text:
-	.asciz "GS: "
-i386_SS_Text:
-	.asciz "SS: "
-i386_EFLAGS_Text:
-	.asciz "        EFLAGS: "
-i386_EIP_Text:
-	.asciz "        EIP: "
-i386_ERROR_CODE_Text:
-	.asciz "        ERROR CODE: "
-i386_CR0_Text:
-	.asciz "        CR0: "
-i386_CR1_Text:
-	.asciz "        CR1: "
-i386_CR2_Text:
-	.asciz "        CR2: "
-i386_CR3_Text:
-	.asciz "        CR3: "
-i386_DR0_Text:
-	.asciz "        DR0: "
-i386_DR1_Text:
-	.asciz "        DR1: "
-i386_DR2_Text:
-	.asciz "        DR2: "
-i386_DR3_Text:
-	.asciz "        DR3: "
-i386_DR6_Text:
-	.asciz "        DR6: "
-i386_DR7_Text:
-	.asciz "        DR7: "
-i386_GDTR_Text:
-	.asciz "        GDTR Base: "
-i386_IDTR_Text:
-	.asciz "        IDTR Base: "
-i386_Limit_Text:
-	.asciz " Limit: "
-i386_LDTR_Text:
-	.asciz "        LDTR: "
-i386_TR_Text:
-	.asciz " TR: "
-
-i386FramesText:
-	.asciz "Frames:\n"
-
-/* Set by each exception handler to the address of the description text */
-i386ExceptionDescriptionText:
-	.long	0
-
-/* Used to store the contents of all the registers when an exception occurs */
-i386_EAX:
-	.long	0
-i386_EBX:
-	.long	0
-i386_ECX:
-	.long	0
-i386_EDX:
-	.long	0
-i386_ESP:
-	.long	0
-i386_EBP:
-	.long	0
-i386_ESI:
-	.long	0
-i386_EDI:
-	.long	0
-i386_CS:
-	.word	0
-i386_DS:
-	.word	0
-i386_ES:
-	.word	0
-i386_FS:
-	.word	0
-i386_GS:
-	.word	0
-i386_SS:
-	.word	0
-i386_EFLAGS:
-	.long	0
-i386_EIP:
-	.long	0
-i386_ERROR_CODE:
-	.long	0
-i386_CR0:
-	.long	0
-i386_CR1:
-	.long	0
-i386_CR2:
-	.long	0
-i386_CR3:
-	.long	0
-i386_DR0:
-	.long	0
-i386_DR1:
-	.long	0
-i386_DR2:
-	.long	0
-i386_DR3:
-	.long	0
-i386_DR6:
-	.long	0
-i386_DR7:
-	.long	0
-i386_GDTR:
-	.word	0
-	.long	0
-i386_IDTR:
-	.word	0
-	.long	0
-i386_LDTR:
-	.word	0
-i386_TR:
-	.word	0
-
-/* Used to store the current X and Y position on the screen */
-i386_ScreenPosX:
-	.long	0
-i386_ScreenPosY:
-	.long	0
-
-/************************************************************************/
-i386CommonExceptionHandler:
-	.code32
-
-	SAVE_CPU_REGS
-
-	pushl	$SCREEN_ATTR
-	call	MachVideoClearScreen
-	add	$4,%esp
-
-	movl	$i386ExceptionHandlerText,%esi
-	call	i386PrintText
-
-	movl	i386ExceptionDescriptionText,%esi
-	call	i386PrintText
-
-	movl	$i386_EAX_Text,%esi
-	call	i386PrintText
-	movl	i386_EAX,%eax
-	call	i386PrintHexDword					// Display EAX
-	movl	$i386_ESP_Text,%esi
-	call	i386PrintText
-	movl	i386_ESP,%eax
-	call	i386PrintHexDword					// Display ESP
-	movl	$i386_CR0_Text,%esi
-	call	i386PrintText
-	movl	i386_CR0,%eax
-	call	i386PrintHexDword					// Display CR0
-	movl	$i386_DR0_Text,%esi
-	call	i386PrintText
-	movl	i386_DR0,%eax
-	call	i386PrintHexDword					// Display DR0
-	movl	$0,i386_ScreenPosX
-	incl	i386_ScreenPosY
-	movl	$i386_EBX_Text,%esi
-	call	i386PrintText
-	movl	i386_EBX,%eax
-	call	i386PrintHexDword					// Display EBX
-	movl	$i386_EBP_Text,%esi
-	call	i386PrintText
-	movl	i386_EBP,%eax
-	call	i386PrintHexDword					// Display EBP
-	movl	$i386_CR1_Text,%esi
-	call	i386PrintText
-	movl	i386_CR1,%eax
-	call	i386PrintHexDword					// Display CR1
-	movl	$i386_DR1_Text,%esi
-	call	i386PrintText
-	movl	i386_DR1,%eax
-	call	i386PrintHexDword					// Display DR1
-	movl	$0,i386_ScreenPosX
-	incl	i386_ScreenPosY
-	movl	$i386_ECX_Text,%esi
-	call	i386PrintText
-	movl	i386_ECX,%eax
-	call	i386PrintHexDword					// Display ECX
-	movl	$i386_ESI_Text,%esi
-	call	i386PrintText
-	movl	i386_ESI,%eax
-	call	i386PrintHexDword					// Display ESI
-	movl	$i386_CR2_Text,%esi
-	call	i386PrintText
-	movl	i386_CR2,%eax
-	call	i386PrintHexDword					// Display CR2
-	movl	$i386_DR2_Text,%esi
-	call	i386PrintText
-	movl	i386_DR2,%eax
-	call	i386PrintHexDword					// Display DR2
-	movl	$0,i386_ScreenPosX
-	incl	i386_ScreenPosY
-	movl	$i386_EDX_Text,%esi
-	call	i386PrintText
-	movl	i386_EDX,%eax
-	call	i386PrintHexDword					// Display EDX
-	movl	$i386_EDI_Text,%esi
-	call	i386PrintText
-	movl	i386_EDI,%eax
-	call	i386PrintHexDword					// Display EDI
-	movl	$i386_CR3_Text,%esi
-	call	i386PrintText
-	movl	i386_CR3,%eax
-	call	i386PrintHexDword					// Display CR3
-	movl	$i386_DR3_Text,%esi
-	call	i386PrintText
-	movl	i386_DR3,%eax
-	call	i386PrintHexDword					// Display DR3
-	incl	i386_ScreenPosY
-	movl	$55,i386_ScreenPosX
-	movl	$i386_DR6_Text,%esi
-	call	i386PrintText
-	movl	i386_DR6,%eax
-	call	i386PrintHexDword					// Display DR6
-	incl	i386_ScreenPosY
-	movl	$55,i386_ScreenPosX
-	movl	$i386_DR7_Text,%esi
-	call	i386PrintText
-	movl	i386_DR7,%eax
-	call	i386PrintHexDword					// Display DR7
-	movl	$0,i386_ScreenPosX
-	incl	i386_ScreenPosY
-	incl	i386_ScreenPosY
-	movl	$i386_CS_Text,%esi
-	call	i386PrintText
-	movw	i386_CS,%ax
-	call	i386PrintHexWord					// Display CS
-	movl	$i386_EIP_Text,%esi
-	call	i386PrintText
-	movl	i386_EIP,%eax
-	call	i386PrintHexDword					// Display EIP
-	movl	$0,i386_ScreenPosX
-	incl	i386_ScreenPosY
-	movl	$i386_DS_Text,%esi
-	call	i386PrintText
-	movw	i386_DS,%ax
-	call	i386PrintHexWord					// Display DS
-	movl	$i386_ERROR_CODE_Text,%esi
-	call	i386PrintText
-	movl	i386_ERROR_CODE,%eax
-	call	i386PrintHexDword					// Display ERROR CODE
-	movl	$0,i386_ScreenPosX
-	incl	i386_ScreenPosY
-	movl	$i386_ES_Text,%esi
-	call	i386PrintText
-	movw	i386_ES,%ax
-	call	i386PrintHexWord					// Display ES
-	movl	$i386_EFLAGS_Text,%esi
-	call	i386PrintText
-	movl	i386_EFLAGS,%eax
-	call	i386PrintHexDword					// Display EFLAGS
-	movl	$0,i386_ScreenPosX
-	incl	i386_ScreenPosY
-	movl	$i386_FS_Text,%esi
-	call	i386PrintText
-	movw	i386_FS,%ax
-	call	i386PrintHexWord					// Display FS
-	movl	$i386_GDTR_Text,%esi
-	call	i386PrintText
-	movl	i386_GDTR+2,%eax
-	call	i386PrintHexDword					// Display GDTR Base
-	movl	$i386_Limit_Text,%esi
-	call	i386PrintText
-	movw	i386_GDTR,%ax
-	call	i386PrintHexWord					// Display GDTR Limit
-	movl	$0,i386_ScreenPosX
-	incl	i386_ScreenPosY
-	movl	$i386_GS_Text,%esi
-	call	i386PrintText
-	movw	i386_GS,%ax
-	call	i386PrintHexWord					// Display GS
-	movl	$i386_IDTR_Text,%esi
-	call	i386PrintText
-	movl	i386_IDTR+2,%eax
-	call	i386PrintHexDword					// Display IDTR Base
-	movl	$i386_Limit_Text,%esi
-	call	i386PrintText
-	movw	i386_IDTR,%ax
-	call	i386PrintHexWord					// Display IDTR Limit
-	movl	$0,i386_ScreenPosX
-	incl	i386_ScreenPosY
-	movl	$i386_SS_Text,%esi
-	call	i386PrintText
-	movw	i386_SS,%ax
-	call	i386PrintHexWord					// Display SS
-	movl	$i386_LDTR_Text,%esi
-	call	i386PrintText
-	movw	i386_LDTR,%ax
-	call	i386PrintHexWord					// Display LDTR
-	movl	$i386_TR_Text,%esi
-	call	i386PrintText
-	movw	i386_TR,%ax
-	call	i386PrintHexWord					// Display TR
-	movl	$0,i386_ScreenPosX
-	incl	i386_ScreenPosY
-	incl	i386_ScreenPosY
-	call	i386PrintFrames						// Display frames
-	incl	i386_ScreenPosY
-	incl	i386_ScreenPosY
-
-	cli
-i386ExceptionHandlerHang:
-	hlt
-	jmp	i386ExceptionHandlerHang
-
-	iret
-
-i386PrintFrames:
-	movl	$0,i386_ScreenPosX
-	movl	$i386FramesText,%esi
-	call	i386PrintText
-
-	movl	i386_EBP,%edi
-printnextframe:
-	test	%edi,%edi
-	je	nomoreframes
-	movl	$STACK32ADDR,%eax
-	cmpl	%edi,%eax
-	jbe	nomoreframes
-	movl	4(%edi),%eax
-	pushl	%edi
-	call	i386PrintHexDword					// Display frame
-	popl	%edi
-	incl	i386_ScreenPosX
-	incl	i386_ScreenPosX
-	movl	0(%edi),%edi
-	jmp	printnextframe
-nomoreframes:
-	ret
-
-/************************************************************************/
-/* AL = Char to display                                                 */
-/************************************************************************/
-i386PrintChar:
-	.code32
-
-	pushl	i386_ScreenPosY
-	pushl	i386_ScreenPosX
-	pushl	$SCREEN_ATTR
-	andl	$0xff,%eax
-	pushl	%eax
-	call	MachVideoPutChar
-	addl	$16,%esp
-
-	ret
-
-/************************************************************************/
-/* ESI = Address of text to display                                     */
-/************************************************************************/
-i386PrintText:
-	.code32
-
-i386PrintTextLoop:
-	lodsb
-
-	// Check for end of string char
-	cmp	$0,%al
-	je	i386PrintTextDone
-
-	// Check for newline char
-	cmp	$0x0a,%al
-	jne	i386PrintTextLoop2
-	incl	i386_ScreenPosY
-	movl	$0,i386_ScreenPosX
-	jmp	i386PrintTextLoop
-
-i386PrintTextLoop2:
-	call	i386PrintChar
-	incl	i386_ScreenPosX
-
-	jmp	i386PrintTextLoop
-
-i386PrintTextDone:
-	
-	ret
-
-/************************************************************************/
-/* Prints the value in EAX on the screen in hex                         */
-/************************************************************************/
-i386PrintHexDword:
-	.code32
-
-	call	i386PrintHex1
-
-i386PrintHex1:
-	call	i386PrintHex2
-i386PrintHex2:
-	call	i386PrintHex3
-i386PrintHex3:
-	movb	$4,%cl
-	rol		%cl,%eax
-	push	%eax
-	andb	$0x0f,%al
-	movl	$i386PrintHexTable,%ebx
-	xlat	/*$i386PrintHexTable*/
-	call	i386PrintChar
-	incl	i386_ScreenPosX
-	pop		%eax
-
-	ret
-
-i386PrintHexTable:
-	.ascii	"0123456789ABCDEF"
-
-/************************************************************************/
-/* Prints the value in AX on the screen in hex                         */
-/************************************************************************/
-i386PrintHexWord:
-	.code32
-
-	call	i386PrintHexWord1
-i386PrintHexWord1:
-	call	i386PrintHexWord2
-i386PrintHexWord2:
-	movb	$4,%cl
-	rol		%cl,%ax
-	push	%eax
-	andb	$0x0f,%al
-	movl	$i386PrintHexTable,%ebx
-	xlat	/*$i386PrintHexTable*/
-	call	i386PrintChar
-	incl	i386_ScreenPosX
-	pop	%eax
-
-	ret
-
-/************************************************************************/
-/* Prints the value in AL on the screen in hex                         */
-/************************************************************************/
-i386PrintHexByte:
-	.code32
-
-	call	i386PrintHexByte1
-i386PrintHexByte1:
-	movb	$4,%cl
-	rol		%cl,%al
-	push	%eax
-	andb	$0x0f,%al
-	movl	$i386PrintHexTable,%ebx
-	xlat	/*$i386PrintHexTable*/
-	call	i386PrintChar
-	incl	i386_ScreenPosX
-	pop		%eax
-
-	ret
-
-/************************************************************************/
-EXTERN(i386DivideByZero)
-	.code32
-
-	movl	$i386DivideByZeroText,i386ExceptionDescriptionText
-	jmp		i386CommonExceptionHandler
-
-/************************************************************************/
-EXTERN(i386DebugException)
-	.code32
-
-	movl	$i386DebugExceptionText,i386ExceptionDescriptionText
-	jmp		i386CommonExceptionHandler
-
-/************************************************************************/
-EXTERN(i386NMIException)
-	.code32
-
-	movl	$i386NMIExceptionText,i386ExceptionDescriptionText
-	jmp		i386CommonExceptionHandler
-
-/************************************************************************/
-EXTERN(i386Breakpoint)
-	.code32
-
-	movl	$i386BreakpointText,i386ExceptionDescriptionText
-	jmp		i386CommonExceptionHandler
-
-/************************************************************************/
-EXTERN(i386Overflow)
-	.code32
-
-	movl	$i386OverflowText,i386ExceptionDescriptionText
-	jmp		i386CommonExceptionHandler
-
-/************************************************************************/
-EXTERN(i386BoundException)
-	.code32
-
-	movl	$i386BoundExceptionText,i386ExceptionDescriptionText
-	jmp		i386CommonExceptionHandler
-
-/************************************************************************/
-EXTERN(i386InvalidOpcode)
-	.code32
-
-	movl	$i386InvalidOpcodeText,i386ExceptionDescriptionText
-	jmp		i386CommonExceptionHandler
-
-/************************************************************************/
-EXTERN(i386FPUNotAvailable)
-	.code32
-
-	movl	$i386FPUNotAvailableText,i386ExceptionDescriptionText
-	jmp		i386CommonExceptionHandler
-
-/************************************************************************/
-EXTERN(i386DoubleFault)
-	.code32
-
-	popl	%eax
-	movl	%eax,i386_ERROR_CODE
-
-	movl	$i386DoubleFaultText,i386ExceptionDescriptionText
-	jmp		i386CommonExceptionHandler
-
-/************************************************************************/
-EXTERN(i386CoprocessorSegment)
-	.code32
-
-	movl	$i386CoprocessorSegmentText,i386ExceptionDescriptionText
-	jmp		i386CommonExceptionHandler
-
-/************************************************************************/
-EXTERN(i386InvalidTSS)
-	.code32
-
-	popl	%eax
-	movl	%eax,i386_ERROR_CODE
-
-	movl	$i386InvalidTSSText,i386ExceptionDescriptionText
-	jmp		i386CommonExceptionHandler
-
-/************************************************************************/
-EXTERN(i386SegmentNotPresent)
-	.code32
-
-	popl	%eax
-	movl	%eax,i386_ERROR_CODE
-
-	movl	$i386SegmentNotPresentText,i386ExceptionDescriptionText
-	jmp		i386CommonExceptionHandler
-
-/************************************************************************/
-EXTERN(i386StackException)
-	.code32
-
-	popl	%eax
-	movl	%eax,i386_ERROR_CODE
-
-	movl	$i386StackExceptionText,i386ExceptionDescriptionText
-	jmp		i386CommonExceptionHandler
-
-/************************************************************************/
-EXTERN(i386GeneralProtectionFault)
-	.code32
-
-	popl	%eax
-	movl	%eax,i386_ERROR_CODE
-
-	movl	$i386GeneralProtectionFaultText,i386ExceptionDescriptionText
-	jmp		i386CommonExceptionHandler
-
-/************************************************************************/
-EXTERN(i386PageFault)
-	.code32
-
-	popl	%eax
-	movl	%eax,i386_ERROR_CODE
-
-	movl	$i386PageFaultText,i386ExceptionDescriptionText
-	jmp		i386CommonExceptionHandler
-
-/************************************************************************/
-EXTERN(i386CoprocessorError)
-	.code32
-
-	movl	$i386CoprocessorErrorText,i386ExceptionDescriptionText
-	jmp		i386CommonExceptionHandler
-
-/************************************************************************/
-EXTERN(i386AlignmentCheck)
-	.code32
-
-	movl	$i386AlignmentCheckText,i386ExceptionDescriptionText
-	jmp		i386CommonExceptionHandler
-
-/************************************************************************/
-EXTERN(i386MachineCheck)
-	.code32
-
-	movl	$i386MachineCheckText,i386ExceptionDescriptionText
-	jmp		i386CommonExceptionHandler
-
-/************************************************************************
- * DEBUGGING SUPPORT FUNCTIONS
- ************************************************************************/
-EXTERN(_INSTRUCTION_BREAKPOINT1)
-	.code32
-
-	pushl	%eax
-
-	movl	8(%esp),%eax
-
-	movl	%eax,%dr0
-	movl	%dr7,%eax
-	andl	$0xfff0ffff,%eax
-	orl		$0x00000303,%eax
-	movl	%eax,%dr7
-
-	popl	%eax
-
-	ret
-
-EXTERN(_MEMORY_READWRITE_BREAKPOINT1)
-	.code32
-
-	pushl	%eax
-
-	movl	8(%esp),%eax
-
-	movl	%eax,%dr0
-	movl	%dr7,%eax
-	andl	$0xfff0ffff,%eax
-	orl		$0x00030303,%eax
-	movl	%eax,%dr7
-
-	popl	%eax
-
-	ret
-
-EXTERN(_MEMORY_WRITE_BREAKPOINT1)
-	.code32
-
-	pushl	%eax
-
-	movl	8(%esp),%eax
-
-	movl	%eax,%dr0
-	movl	%dr7,%eax
-	andl	$0xfff0ffff,%eax
-	orl		$0x00010303,%eax
-	movl	%eax,%dr7
-
-	popl	%eax
-
-	ret
-
-EXTERN(_INSTRUCTION_BREAKPOINT2)
-	.code32
-
-	pushl	%eax
-
-	movl	8(%esp),%eax
-
-	movl	%eax,%dr1
-	movl	%dr7,%eax
-	andl	$0xff0fffff,%eax
-	orl		$0x0000030c,%eax
-	movl	%eax,%dr7
-
-	popl	%eax
-
-	ret
-
-EXTERN(_MEMORY_READWRITE_BREAKPOINT2)
-	.code32
-
-	pushl	%eax
-
-	movl	8(%esp),%eax
-
-	movl	%eax,%dr1
-	movl	%dr7,%eax
-	andl	$0xff0fffff,%eax
-	orl		$0x0030030c,%eax
-	movl	%eax,%dr7
-
-	popl	%eax
-
-	ret
-
-EXTERN(_MEMORY_WRITE_BREAKPOINT2)
-	.code32
-
-	pushl	%eax
-
-	movl	8(%esp),%eax
-
-	movl	%eax,%dr1
-	movl	%dr7,%eax
-	andl	$0xff0fffff,%eax
-	orl		$0x0010030c,%eax
-	movl	%eax,%dr7
-
-	popl	%eax
-
-	ret
-
-EXTERN(_INSTRUCTION_BREAKPOINT3)
-	.code32
-
-	pushl	%eax
-
-	movl	8(%esp),%eax
-
-	movl	%eax,%dr2
-	movl	%dr7,%eax
-	andl	$0xf0ffffff,%eax
-	orl		$0x00000330,%eax
-	movl	%eax,%dr7
-
-	popl	%eax
-
-	ret
-
-EXTERN(_MEMORY_READWRITE_BREAKPOINT3)
-	.code32
-
-	pushl	%eax
-
-	movl	8(%esp),%eax
-
-	movl	%eax,%dr2
-	movl	%dr7,%eax
-	andl	$0xf0ffffff,%eax
-	orl		$0x03000330,%eax
-	movl	%eax,%dr7
-
-	popl	%eax
-
-	ret
-
-EXTERN(_MEMORY_WRITE_BREAKPOINT3)
-	.code32
-
-	pushl	%eax
-
-	movl	8(%esp),%eax
-
-	movl	%eax,%dr2
-	movl	%dr7,%eax
-	andl	$0xf0ffffff,%eax
-	orl		$0x01000330,%eax
-	movl	%eax,%dr7
-
-	popl	%eax
-
-	ret
-
-EXTERN(_INSTRUCTION_BREAKPOINT4)
-	.code32
-
-	pushl	%eax
-
-	movl	8(%esp),%eax
-
-	movl	%eax,%dr3
-	movl	%dr7,%eax
-	andl	$0x0fffffff,%eax
-	orl		$0x000003c0,%eax
-	movl	%eax,%dr7
-
-	popl	%eax
-
-	ret
-
-EXTERN(_MEMORY_READWRITE_BREAKPOINT4)
-	.code32
-
-	pushl	%eax
-
-	movl	8(%esp),%eax
-
-	movl	%eax,%dr3
-	movl	%dr7,%eax
-	andl	$0x0fffffff,%eax
-	orl		$0x300003c0,%eax
-	movl	%eax,%dr7
-
-	popl	%eax
-
-	ret
-
-EXTERN(_MEMORY_WRITE_BREAKPOINT4)
-	.code32
-
-	pushl	%eax
-
-	movl	8(%esp),%eax
-
-	movl	%eax,%dr3
-	movl	%dr7,%eax
-	andl	$0x0fffffff,%eax
-	orl		$0x100003c0,%eax
-	movl	%eax,%dr7
-
-	popl	%eax
-
-	ret

Modified: branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/int386.S
URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/int386.S?rev=49596&r1=49595&r2=49596&view=diff
==============================================================================
--- branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/int386.S [iso-8859-1] (original)
+++ branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/int386.S [iso-8859-1] Mon Nov 15 19:44:48 2010
@@ -16,6 +16,9 @@
  *  with this program; if not, write to the Free Software Foundation, Inc.,
  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
+
+#include <asm.inc>
+
 
 	.intel_syntax noprefix
 	.text
@@ -168,3 +171,5 @@
 	mov eax, Int386_eax
 
 	ret
+
+END

Modified: branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/mb.S
URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/mb.S?rev=49596&r1=49595&r2=49596&view=diff
==============================================================================
--- branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/mb.S [iso-8859-1] (original)
+++ branches/cmake-bringup/boot/freeldr/freeldr/arch/amd64/mb.S [iso-8859-1] Mon Nov 15 19:44:48 2010
@@ -16,6 +16,9 @@
  *  with this program; if not, write to the Free Software Foundation, Inc.,
  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
+
+#include <asm.inc>
+
 
 	.text
 	.code16
@@ -61,3 +64,5 @@
 	.fill 4096, 1, 0
 
 PageDirectoryEnd:
+
+END

Removed: branches/cmake-bringup/boot/freeldr/freeldr/arch/i386/_alloca.S
URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/boot/freeldr/freeldr/arch/i386/_alloca.S?rev=49595&view=auto
==============================================================================
--- branches/cmake-bringup/boot/freeldr/freeldr/arch/i386/_alloca.S [iso-8859-1] (original)
+++ branches/cmake-bringup/boot/freeldr/freeldr/arch/i386/_alloca.S (removed)
@@ -1,33 +1,0 @@
-/* stuff needed for libgcc on win32.  */
-
-/*#ifdef L_chkstk*/
-#ifdef WIN32
-
-	.global ___chkstk
-	.global	__alloca
-___chkstk:
-__alloca:
-	pushl  %ecx		/* save temp */
-	movl   %esp,%ecx	/* get sp */
-	addl   $0x8,%ecx	/* and point to return addr */
-
-probe: 	cmpl   $0x1000,%eax	/* > 4k ?*/
-	jb    done		
-
-	subl   $0x1000,%ecx  		/* yes, move pointer down 4k*/
-	orl    $0x0,(%ecx)   		/* probe there */
-	subl   $0x1000,%eax  	 	/* decrement count */
-	jmp    probe           	 	/* and do it again */
-
-done: 	subl   %eax,%ecx	   
-	orl    $0x0,(%ecx)	/* less that 4k, just peek here */
-
-	movl   %esp,%eax
-	movl   %ecx,%esp	/* decrement stack */
-
-	movl   (%eax),%ecx	/* recover saved temp */
-	movl   4(%eax),%eax	/* get return address */
-	jmp    *%eax	
-
-
-#endif

Modified: branches/cmake-bringup/boot/freeldr/freeldr/arch/i386/arch.S
URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/boot/freeldr/freeldr/arch/i386/arch.S?rev=49596&r1=49595&r2=49596&view=diff
==============================================================================
--- branches/cmake-bringup/boot/freeldr/freeldr/arch/i386/arch.S [iso-8859-1] (original)
+++ branches/cmake-bringup/boot/freeldr/freeldr/arch/i386/arch.S [iso-8859-1] Mon Nov 15 19:44:48 2010
@@ -17,16 +17,19 @@
  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-.intel_syntax noprefix
-#define HEX(y) 0x##y
-
-#define ASM
+#include <asm.inc>
 #include <arch.h>
 #include <multiboot.h>
 
-	.code16
-
-EXTERN(RealEntryPoint)
+EXTERN _BootMain:PROC
+EXTERN __bss_start__:DWORD
+EXTERN __bss_end__:DWORD
+EXTERN i386idtptr:FWORD
+
+.code16
+
+PUBLIC RealEntryPoint
+RealEntryPoint:
 
 	cli
 
@@ -44,9 +47,10 @@
 	sti
 
 	/* Init pmode */
-	call	switch_to_prot
-
-	.code32
+	call switch_to_prot
+
+.endcode16
+.code32
 
 	/* Zero BootDrive and BootPartition */
 	xor eax, eax
@@ -64,7 +68,7 @@
 	call	_BootMain
 
 	call	switch_to_real
-	.code16
+.code16
 
 	int HEX(19)
 
@@ -78,9 +82,8 @@
  * Switches the processor to protected mode
  * it destroys eax
  */
-EXTERN(switch_to_prot)
-
-.code16
+PUBLIC switch_to_prot
+switch_to_prot:
 
 	cli		/* None of these */
 
@@ -104,9 +107,9 @@
 	mov word ptr ds:[stack16], sp
 
 	/* Load the GDT */
-	lgdt	gdtptr
+	lgdt gdtptr
 	/* Load the IDT */
-	lidt	i386idtptr
+	lidt i386idtptr
 
 	/* Enable Protected Mode */
 	mov eax, cr0
@@ -114,12 +117,12 @@
 	mov cr0, eax
 
 	/* Clear prefetch queue & correct CS */
-	//ljmp	PMODE_CS, inpmode
-    jmp far ptr PMODE_CS:inpmode
-
+	ljmp16 PMODE_CS, inpmode
+
+inpmode:
+.endcode16
 .code32
 
-inpmode:
 	/* Setup segment selectors */
 	mov ax, PMODE_DS
 	mov ds, ax
@@ -139,9 +142,8 @@
  * Switches the processor back to real mode
  * it destroys eax
  */
-EXTERN(switch_to_real)
-
-.code32
+PUBLIC switch_to_real
+switch_to_real:
 
 	/* We don't know what values are currently */
 	/* in the segment registers. So we are */
@@ -182,7 +184,7 @@
 	mov	cr0, eax
 
 	/* Clear prefetch queue & correct CS */
-	//ljmp	$0, $inrmode
+	//ljmp16 0, offset inrmode
 	jmp far ptr 0:inrmode
 
 inrmode:
@@ -207,7 +209,7 @@
 	push word ptr ds:[code16ret]
 
 	/* Load IDTR with real mode value */
-	lidt	rmode_idtptr
+	lidt rmode_idtptr
 
 	sti		/* These are ok now */
 
@@ -218,9 +220,8 @@
 	/*
 	 * Needed for enabling the a20 address line
 	 */
-.code16
 empty_8042:
-	.word	0x00eb,0x00eb            // jmp $+2, jmp $+2
+	.word HEX(00eb), HEX(00eb)            // jmp $+2, jmp $+2
 	in al, HEX(64)
 	cmp al, HEX(ff)               // legacy-free machine without keyboard
 	jz empty_8042_ret           // controllers on Intel Macs read back 0xFF
@@ -229,11 +230,14 @@
 empty_8042_ret:
 	ret
 
+.endcode16
+.code32
+
 	/*
 	 * Enable the A20 address line (to allow access to over 1mb)
 	 */
-EXTERN(_EnableA20)
-.code32
+PUBLIC _EnableA20
+_EnableA20:
 
 	pusha
 
@@ -248,7 +252,9 @@
 	out	HEX(60), al
 	call empty_8042
 	call switch_to_prot
-	.code32
+
+.endcode16
+.code32
 
 	popa
 
@@ -257,23 +263,26 @@
 	/*
 	 * Disable the A20 address line
 	 */
-EXTERN(_DisableA20)
-.code32
+PUBLIC _DisableA20
+_DisableA20:
 
 	pusha
 
 	call switch_to_real
-	.code16
-
-	call	empty_8042
+
+.code16
+
+	call empty_8042
 	mov al, HEX(D1)                // command write
 	out HEX(64), al
 	call empty_8042
 	mov al, HEX(DD)                // A20 off
 	out HEX(60), al
-	call	empty_8042
-	call	switch_to_prot
-	.code32
+	call empty_8042
+	call switch_to_prot
+
+.endcode16
+.code32
 
 	popa
 
@@ -301,7 +310,7 @@
 #define INITIAL_BASE HEX(200000)
 
 	/* Align 32 bits boundary */
-.align 4
+	.align 4
 	
 	/* Multiboot header */
 MultibootHeader:
@@ -331,10 +340,10 @@
 	/* Although the multiboot spec says we should be called with the
 	 * segment registers set to 4GB flat mode, let's be sure and set up
 	 * our own */
-	lgdt	gdtptrhigh + INITIAL_BASE - FREELDR_BASE
+	lgdt gdtptrhigh + INITIAL_BASE - FREELDR_BASE
 	/* Reload segment selectors */
-	//ljmp	$PMODE_CS, $(mb1 + INITIAL_BASE - FREELDR_BASE)
-	jmp far ptr PMODE_CS: (mb1 + INITIAL_BASE - FREELDR_BASE)
+	ljmp PMODE_CS, (mb1 + INITIAL_BASE - FREELDR_BASE)
+	//jmp far ptr PMODE_CS: (offset mb1 + INITIAL_BASE - FREELDR_BASE)
 mb1:
 	mov dx, PMODE_DS
 	mov ds, dx
@@ -374,13 +383,13 @@
 	rep movsd
 
 	/* Load the GDT and IDT */
-	lgdt	gdtptr
-	lidt	i386idtptr
+	lgdt gdtptr
+	lidt i386idtptr
 
 	/* Clear prefetch queue & correct CS,
 	 * jump to low mem */
-	//ljmp	$PMODE_CS, $mb4
-	jmp far ptr PMODE_CS:mb4
+	ljmp PMODE_CS, mb4
+	//jmp far ptr PMODE_CS:mb4
 mb4:
 	/* Reload segment selectors */
 	mov dx, PMODE_DS
@@ -416,15 +425,17 @@
 
 	/* GO! */
 	push eax	
-	call	_BootMain
+	call _BootMain
 
 mbfail:
 	call	switch_to_real
-	.code16
-	int	0x19
-mbstop:	jmp	mbstop	/* We should never get here */
-
-	.code32
+.code16
+	int	HEX(19)
+mbstop:
+	jmp	mbstop	/* We should never get here */
+
+.endcode16
+.code32
 
 	/* 16-bit stack pointer */
 stack16:
@@ -496,8 +507,13 @@
 cmdline:
 	.fill	CMDLINE_SIZE, 1, 0
 
-EXTERN(_BootDrive)
+PUBLIC _BootDrive
+_BootDrive:
     .long 0
-    
-EXTERN(_BootPartition)
+
+PUBLIC _BootPartition
+_BootPartition:
     .long 0
+
+END
+

Added: branches/cmake-bringup/boot/freeldr/freeldr/arch/i386/realmode.S
URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/boot/freeldr/freeldr/arch/i386/realmode.S?rev=49596&view=auto
==============================================================================
--- branches/cmake-bringup/boot/freeldr/freeldr/arch/i386/realmode.S (added)
+++ branches/cmake-bringup/boot/freeldr/freeldr/arch/i386/realmode.S [iso-8859-1] Mon Nov 15 19:44:48 2010
@@ -1,0 +1,80 @@
+
+
+#include <asm.inc>
+
+.code16
+PUBLIC _mainCRTStartup
+_mainCRTStartup:
+_LoaderEntry:
+    ret
+
+.endcode16
+
+.code32
+
+
+// globals
+PUBLIC _BootPartition
+_BootPartition:
+PUBLIC _BootDrive
+_BootDrive:
+
+PUBLIC _PageDirectoryStart
+_PageDirectoryStart:
+PUBLIC _PageDirectoryEnd
+_PageDirectoryEnd:
+
+PUBLIC _startup_pagedirectory
+_startup_pagedirectory:
+PUBLIC _apic_pagetable
+_apic_pagetable:
+PUBLIC _kernel_pagetable
+_kernel_pagetable:
+PUBLIC _lowmem_pagetable
+_lowmem_pagetable:
+
+
+PUBLIC RealEntryPoint
+RealEntryPoint:
+
+PUBLIC _EnableA20
+_EnableA20:
+
+PUBLIC _ChainLoadBiosBootSectorCode
+_ChainLoadBiosBootSectorCode:
+
+PUBLIC _BootOldLinuxKernel
+_BootOldLinuxKernel:
+
+PUBLIC _BootNewLinuxKernel
+_BootNewLinuxKernel:
+
+PUBLIC _SoftReboot
+_SoftReboot:
+
+PUBLIC _DriveMapOldInt13HandlerAddress
+_DriveMapOldInt13HandlerAddress:
+
+PUBLIC _DriveMapInt13HandlerStart
+_DriveMapInt13HandlerStart:
+
+PUBLIC _DriveMapInt13HandlerEnd
+_DriveMapInt13HandlerEnd:
+
+PUBLIC _DriveMapInt13HandlerMapList
+_DriveMapInt13HandlerMapList:
+
+PUBLIC _PnpBiosGetDeviceNode
+_PnpBiosGetDeviceNode:
+
+PUBLIC _PnpBiosGetDeviceNodeCount
+_PnpBiosGetDeviceNodeCount:
+
+PUBLIC _PnpBiosSupported
+_PnpBiosSupported:
+
+PUBLIC _Int386
+_Int386:
+
+
+END

Propchange: branches/cmake-bringup/boot/freeldr/freeldr/arch/i386/realmode.S
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: branches/cmake-bringup/boot/freeldr/freeldr/debug.c
URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/boot/freeldr/freeldr/debug.c?rev=49596&r1=49595&r2=49596&view=diff
==============================================================================
--- branches/cmake-bringup/boot/freeldr/freeldr/debug.c [iso-8859-1] (original)
+++ branches/cmake-bringup/boot/freeldr/freeldr/debug.c [iso-8859-1] Mon Nov 15 19:44:48 2010
@@ -341,7 +341,6 @@
 }
 
 NTKERNELAPI
-DECLSPEC_NORETURN
 VOID
 NTAPI
 KeBugCheckEx(

Modified: branches/cmake-bringup/boot/freeldr/freeldr/freeldr.c
URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/boot/freeldr/freeldr/freeldr.c?rev=49596&r1=49595&r2=49596&view=diff
==============================================================================
--- branches/cmake-bringup/boot/freeldr/freeldr/freeldr.c [iso-8859-1] (original)
+++ branches/cmake-bringup/boot/freeldr/freeldr/freeldr.c [iso-8859-1] Mon Nov 15 19:44:48 2010
@@ -53,3 +53,14 @@
 #endif
 	RunLoader();
 }
+
+#ifdef _MSC_VER
+long _ftol2(double f)
+{
+    return _ftol(f);
+}
+long _ftol2_sse(double f)
+{
+    return _ftol(f);
+}
+#endif

Modified: branches/cmake-bringup/boot/freeldr/freeldr/reactos/reactos.c
URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/boot/freeldr/freeldr/reactos/reactos.c?rev=49596&r1=49595&r2=49596&view=diff
==============================================================================
--- branches/cmake-bringup/boot/freeldr/freeldr/reactos/reactos.c [iso-8859-1] (original)
+++ branches/cmake-bringup/boot/freeldr/freeldr/reactos/reactos.c [iso-8859-1] Mon Nov 15 19:44:48 2010
@@ -606,6 +606,8 @@
     //
     if (IniReadSettingByName(SectionId, "Options", value, sizeof(value)))
     {
+        PCHAR File;
+
         //
         // Append boot-time options
         //
@@ -614,7 +616,6 @@
         //
         // Check if a ramdisk file was given
         //
-        PCHAR File;
         File = strstr(value, "/RDIMAGEPATH=");
         if (File)
         {

Modified: branches/cmake-bringup/boot/freeldr/freeldr/windows/winldr.c
URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/boot/freeldr/freeldr/windows/winldr.c?rev=49596&r1=49595&r2=49596&view=diff
==============================================================================
--- branches/cmake-bringup/boot/freeldr/freeldr/windows/winldr.c [iso-8859-1] (original)
+++ branches/cmake-bringup/boot/freeldr/freeldr/windows/winldr.c [iso-8859-1] Mon Nov 15 19:44:48 2010
@@ -39,6 +39,11 @@
 extern ULONG LoaderPagesSpanned;
 extern BOOLEAN AcpiPresent;
 
+extern HEADLESS_LOADER_BLOCK LoaderRedirectionInformation;
+extern BOOLEAN WinLdrTerminalConnected;
+
+extern void WinLdrSetupEms(IN PCHAR BootOptions);
+
 BOOLEAN
 WinLdrCheckForLoadedDll(IN OUT PLOADER_PARAMETER_BLOCK WinLdrBlock,
                         IN PCH DllName,
@@ -205,8 +210,6 @@
 	}
     
     /* Set headless block pointer */
-    extern HEADLESS_LOADER_BLOCK LoaderRedirectionInformation;
-    extern BOOLEAN WinLdrTerminalConnected;
     if (WinLdrTerminalConnected)
     {
         Extension->HeadlessLoaderBlock = MmHeapAlloc(sizeof(HEADLESS_LOADER_BLOCK));
@@ -535,7 +538,6 @@
 	AllocateAndInitLPB(&LoaderBlock);
     
    	/* Setup redirection support */
-	extern void WinLdrSetupEms(IN PCHAR BootOptions);
 	WinLdrSetupEms(BootOptions);
 
 	/* Detect hardware */




More information about the Ros-diffs mailing list