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/free…
==============================================================================
--- 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
-