Author: tkreuzer Date: Mon Nov 15 19:45:52 2010 New Revision: 49597
URL: http://svn.reactos.org/svn/reactos?rev=49597&view=rev Log: revert unwanted changes
Modified: branches/cmake-bringup/boot/freeldr/freeldr/arch/i386/arch.S
Modified: branches/cmake-bringup/boot/freeldr/freeldr/arch/i386/arch.S URL: http://svn.reactos.org/svn/reactos/branches/cmake-bringup/boot/freeldr/freel... ============================================================================== --- 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:45:52 2010 @@ -17,19 +17,16 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */
-#include <asm.inc> +.intel_syntax noprefix +#define HEX(y) 0x##y + +#define ASM #include <arch.h> #include <multiboot.h>
-EXTERN _BootMain:PROC -EXTERN __bss_start__:DWORD -EXTERN __bss_end__:DWORD -EXTERN i386idtptr:FWORD - -.code16 - -PUBLIC RealEntryPoint -RealEntryPoint: + .code16 + +EXTERN(RealEntryPoint)
cli
@@ -47,10 +44,9 @@ sti
/* Init pmode */ - call switch_to_prot - -.endcode16 -.code32 + call switch_to_prot + + .code32
/* Zero BootDrive and BootPartition */ xor eax, eax @@ -68,7 +64,7 @@ call _BootMain
call switch_to_real -.code16 + .code16
int HEX(19)
@@ -82,8 +78,9 @@ * Switches the processor to protected mode * it destroys eax */ -PUBLIC switch_to_prot -switch_to_prot: +EXTERN(switch_to_prot) + +.code16
cli /* None of these */
@@ -107,9 +104,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 @@ -117,12 +114,12 @@ mov cr0, eax
/* Clear prefetch queue & correct CS */ - ljmp16 PMODE_CS, inpmode + //ljmp PMODE_CS, inpmode + jmp far ptr PMODE_CS:inpmode + +.code32
inpmode: -.endcode16 -.code32 - /* Setup segment selectors */ mov ax, PMODE_DS mov ds, ax @@ -142,8 +139,9 @@ * Switches the processor back to real mode * it destroys eax */ -PUBLIC switch_to_real -switch_to_real: +EXTERN(switch_to_real) + +.code32
/* We don't know what values are currently */ /* in the segment registers. So we are */ @@ -184,7 +182,7 @@ mov cr0, eax
/* Clear prefetch queue & correct CS */ - //ljmp16 0, offset inrmode + //ljmp $0, $inrmode jmp far ptr 0:inrmode
inrmode: @@ -209,7 +207,7 @@ push word ptr ds:[code16ret]
/* Load IDTR with real mode value */ - lidt rmode_idtptr + lidt rmode_idtptr
sti /* These are ok now */
@@ -220,8 +218,9 @@ /* * Needed for enabling the a20 address line */ +.code16 empty_8042: - .word HEX(00eb), HEX(00eb) // jmp $+2, jmp $+2 + .word 0x00eb,0x00eb // 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 @@ -230,14 +229,11 @@ empty_8042_ret: ret
-.endcode16 -.code32 - /* * Enable the A20 address line (to allow access to over 1mb) */ -PUBLIC _EnableA20 -_EnableA20: +EXTERN(_EnableA20) +.code32
pusha
@@ -252,9 +248,7 @@ out HEX(60), al call empty_8042 call switch_to_prot - -.endcode16 -.code32 + .code32
popa
@@ -263,26 +257,23 @@ /* * Disable the A20 address line */ -PUBLIC _DisableA20 -_DisableA20: +EXTERN(_DisableA20) +.code32
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 - -.endcode16 -.code32 + call empty_8042 + call switch_to_prot + .code32
popa
@@ -310,7 +301,7 @@ #define INITIAL_BASE HEX(200000)
/* Align 32 bits boundary */ - .align 4 +.align 4 /* Multiboot header */ MultibootHeader: @@ -340,10 +331,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: (offset mb1 + INITIAL_BASE - FREELDR_BASE) + //ljmp $PMODE_CS, $(mb1 + INITIAL_BASE - FREELDR_BASE) + jmp far ptr PMODE_CS: (mb1 + INITIAL_BASE - FREELDR_BASE) mb1: mov dx, PMODE_DS mov ds, dx @@ -383,13 +374,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 @@ -425,17 +416,15 @@
/* GO! */ push eax - call _BootMain + call _BootMain
mbfail: call switch_to_real -.code16 - int HEX(19) -mbstop: - jmp mbstop /* We should never get here */ - -.endcode16 -.code32 + .code16 + int 0x19 +mbstop: jmp mbstop /* We should never get here */ + + .code32
/* 16-bit stack pointer */ stack16: @@ -507,13 +496,8 @@ cmdline: .fill CMDLINE_SIZE, 1, 0
-PUBLIC _BootDrive -_BootDrive: +EXTERN(_BootDrive) .long 0 - -PUBLIC _BootPartition -_BootPartition: + +EXTERN(_BootPartition) .long 0 - -END -