diff --git a/reactos/boot/freeldr/bootsect/fat.asm b/reactos/boot/freeldr/bootsect/fat.asm index d41db93a15a..0e803a58500 100644 --- a/reactos/boot/freeldr/bootsect/fat.asm +++ b/reactos/boot/freeldr/bootsect/fat.asm @@ -208,11 +208,11 @@ FoundFreeLoader: ; to the helper code. Skip the first three bytes ; because they contain a jump instruction to skip ; over the helper code in the FreeLoader image. - ;jmp 0000:8003h + ;jmp 0000:9003h push 0 ; push segment (0x0000) - mov eax, [0x8000 + 0xA8] ; load the RVA of the EntryPoint into eax - add eax, 0x8003 ; RVA -> VA and skip 3 bytes (jump to fathelper code) - push ax ; push offset + mov bx, [0x8000 + 0xA8] ; load the RVA of the EntryPoint into eax + add bx, 0x8003 ; RVA -> VA and skip 3 bytes (jump to fathelper code) + push bx ; push offset retf ; Transfer control to FreeLoader diff --git a/reactos/boot/freeldr/freeldr/arch/i386/fathelp.asm b/reactos/boot/freeldr/freeldr/arch/i386/fathelp.asm index d3e09ee13b5..90e42a00475 100644 --- a/reactos/boot/freeldr/freeldr/arch/i386/fathelp.asm +++ b/reactos/boot/freeldr/freeldr/arch/i386/fathelp.asm @@ -125,10 +125,12 @@ LoadFile5: LoadFile_Done: mov dl,BYTE [BYTE bp+BootDrive] ; Load the boot drive into DL mov dh,[BootPartition] ; Load the boot partition into DH - push WORD 0x0000 - push WORD 0x8000 ; We will do a far return to 0000:8000h - retf ; Transfer control to ROSLDR + 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: