Author: tkreuzer Date: Fri Jun 17 12:04:25 2011 New Revision: 52308
URL: http://svn.reactos.org/svn/reactos?rev=52308&view=rev Log: [FREELDR] Convert drvmap.S to intel syntax
Modified: trunk/reactos/boot/freeldr/freeldr/arch/i386/drvmap.S
Modified: trunk/reactos/boot/freeldr/freeldr/arch/i386/drvmap.S URL: http://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/freeldr/arch/i... ============================================================================== --- trunk/reactos/boot/freeldr/freeldr/arch/i386/drvmap.S [iso-8859-1] (original) +++ trunk/reactos/boot/freeldr/freeldr/arch/i386/drvmap.S [iso-8859-1] Fri Jun 17 12:04:25 2011 @@ -17,83 +17,92 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */
- .text - .code16
+#include <asm.inc> #include <arch/pc/x86common.h>
-EXTERN(_DriveMapInt13HandlerStart) +.code16 + +PUBLIC _DriveMapInt13HandlerStart +_DriveMapInt13HandlerStart: Int13Handler:
- pushw %bp - movw %sp,%bp - pushw %ax - pushw %cx - pushw %si + push bp + mov bp, sp + push ax + push cx + push si
cld
/* Get callers flags from stack */ - movw 0x06(%bp),%ax - movw %ax,%cs:(CallersFlags - Int13Handler) + mov ax, [bp + 6] + mov word ptr cs:[CallersFlags - Int13Handler], ax
/* Save the drive number they passed in */ - movb %dl,%cs:(PassedInDriveNumber - Int13Handler) + mov cs:[PassedInDriveNumber - Int13Handler], dl
/* Now we need to perform the mapping */ - xorw %cx,%cx - movw $(Int13HandlerMapCount - Int13Handler),%si + xor cx, cx + mov si, offset Int13HandlerMapCount - Int13Handler + /* Get the count of drives in the map list */ - movb %cs:(%si),%cl - incw %si + mov cl, cs:[si] + inc si
/* If the map list is empty then just call the old int 13h handler */ - cmpb $0,%cl - jz CallOldInt13Handler + cmp cl, 0 + jz CallOldInt13Handler
GetMappedDriveNumberLoop:
/* Get the next drive number in the list */ - lodsw %cs:(%si),%ax + lods ax, cs:[si] + /* Check to see if it's the one they are calling int 13h for */ - cmpb %al,%dl + cmp dl, al + /* If not get the next one */ - jne GetMappedDriveNumberLoopNext + 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 + mov dl, ah + /* Call BIOS Int 13 Handler */ - jmp CallOldInt13Handler + jmp CallOldInt13Handler
GetMappedDriveNumberLoopNext: - loop GetMappedDriveNumberLoop + loop GetMappedDriveNumberLoop
CallOldInt13Handler: /* Restore the registers we changed off the stack */ - popw %si - popw %cx - popw %ax + pop si + pop cx + pop ax
/* Put flags onto stack */ - pushw %cs:(CallersFlags - Int13Handler) + push word ptr cs:[CallersFlags - Int13Handler] +
/* Call old int 13h handler with new drive number */ - .byte 0x9a /* lcall */ -EXTERN(_DriveMapOldInt13HandlerAddress) + .byte HEX(9a) /* lcall */ +PUBLIC _DriveMapOldInt13HandlerAddress +_DriveMapOldInt13HandlerAddress: .word 0 .word 0
/* Update the callers flags with the values the BIOS returned */ - pushw %ax + push ax pushf - popw %ax - movw %ax,0x06(%bp) - popw %ax + pop ax + mov [bp + 6], ax + pop ax + /* Restore the callers drive number */ - movb %cs:(PassedInDriveNumber - Int13Handler),%dl + mov dl, cs:[PassedInDriveNumber - Int13Handler]
- popw %bp + pop bp
iret
@@ -103,7 +112,8 @@ PassedInDriveNumber: .byte 0
-EXTERN(_DriveMapInt13HandlerMapList) +PUBLIC _DriveMapInt13HandlerMapList +_DriveMapInt13HandlerMapList: Int13HandlerMapCount: .byte 0
@@ -127,4 +137,6 @@ Int13HandlerDriveNew4: .byte 0
-EXTERN(_DriveMapInt13HandlerEnd) +PUBLIC _DriveMapInt13HandlerEnd +_DriveMapInt13HandlerEnd: + .byte 0