Author: greatlrd
Date: Sun Nov 19 20:01:23 2006
New Revision: 24776
URL:
http://svn.reactos.org/svn/reactos?rev=24776&view=rev
Log:
- Change movw $0x0000,%ax to xorw %ax,%ax (because of probable bug in binutils, which
compiles the first instruction into something weird)
- Add segment registers save+restore in Int386() in FreeLdr (thanks to tamlin too)
Modified:
trunk/reactos/boot/freeldr/freeldr/arch/i386/arch.S
trunk/reactos/boot/freeldr/freeldr/arch/i386/int386.S
Modified: trunk/reactos/boot/freeldr/freeldr/arch/i386/arch.S
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/freeldr/arch/…
==============================================================================
--- trunk/reactos/boot/freeldr/freeldr/arch/i386/arch.S (original)
+++ trunk/reactos/boot/freeldr/freeldr/arch/i386/arch.S Sun Nov 19 20:01:23 2006
@@ -84,7 +84,7 @@
/* Of course CS has to already be valid. */
/* We are currently in real-mode so we */
/* need real-mode segment values. */
- movw $0x0000,%ax
+ xorw %ax,%ax
movw %ax,%ds
movw %ax,%es
movw %ax,%fs
Modified: trunk/reactos/boot/freeldr/freeldr/arch/i386/int386.S
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/freeldr/arch/…
==============================================================================
--- trunk/reactos/boot/freeldr/freeldr/arch/i386/int386.S (original)
+++ trunk/reactos/boot/freeldr/freeldr/arch/i386/int386.S Sun Nov 19 20:01:23 2006
@@ -74,7 +74,12 @@
movl 0x0c(%esp),%eax
movl %eax,Int386_regsout
+ /* Save all registers + segment registers */
pushal
+ pushw %ds
+ pushw %es
+ pushw %fs
+ pushw %gs
/* Copy the input regs to our variables */
movl $Int386_REGS,%edi
@@ -147,6 +152,11 @@
rep
movsb
+ /* Restore segment and all other registers */
+ popw %gs
+ popw %fs
+ popw %es
+ popw %ds
popal
/* Get return value */