All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] RFT: Eliminate Apple specific code from boot/i386/pc/boot.S
@ 2009-07-16  3:47 Pavel Roskin
  2009-07-16  3:47 ` [PATCH 2/2] RFT: Remove ABS macro " Pavel Roskin
                   ` (2 more replies)
  0 siblings, 3 replies; 15+ messages in thread
From: Pavel Roskin @ 2009-07-16  3:47 UTC (permalink / raw)
  To: grub-devel

ChangeLog:

	* boot/i386/pc/boot.S: Remove all code dependent on APPLE_CC.
	Use local labels starting with "L_" so that Apple assembler
	would know they are local.
---
 boot/i386/pc/boot.S |  110 +++++++++++++++------------------------------------
 1 files changed, 32 insertions(+), 78 deletions(-)

diff --git a/boot/i386/pc/boot.S b/boot/i386/pc/boot.S
index 1fb5f74..8a8f6c7 100644
--- a/boot/i386/pc/boot.S
+++ b/boot/i386/pc/boot.S
@@ -30,11 +30,7 @@
 #define ABS(x) (x-_start+0x7c00)
 
 	/* Print message string */
-#ifdef APPLE_CC
-#define MSG(x)	x ## _abs = ABS(x); movw $x ## _abs, %si; call message
-#else
-#define MSG(x)	movw $ABS(x), %si; call message
-#endif
+#define MSG(x)	movw $ABS(x), %si; call L_message
 
 	.file	"boot.S"
 
@@ -56,7 +52,7 @@ start:
 	 * parameter block.
 	 */
 
-	jmp	after_BPB
+	jmp	L_after_BPB
 	nop	/* do I care about this ??? */
 
 	/*
@@ -104,7 +100,7 @@ boot_drive:
 	.byte 0xff	/* the disk to load kernel from */
 			/* 0xff means use the boot drive */
 
-after_BPB:
+L_after_BPB:
 
 /* general setup */
 	cli		/* we're not safe here! */
@@ -129,12 +125,7 @@ boot_drive_check:
 	 * ljmp to the next instruction because some bogus BIOSes
 	 * jump to 07C0:0000 instead of 0000:7C00.
 	 */
-#ifdef APPLE_CC
-	real_start_abs = ABS(real_start)
-	ljmp	$0, $(real_start_abs)
-#else
 	ljmp	$0, $ABS(real_start)
-#endif
 
 real_start:
 
@@ -151,12 +142,7 @@ real_start:
 	/*
 	 *  Check if we have a forced disk reference here
 	 */
-#ifdef APPLE_CC
-	boot_drive_abs = ABS (boot_drive)
-	movb    boot_drive_abs, %al
-#else
 	movb   ABS(boot_drive), %al
-#endif
 	cmpb	$0xff, %al
 	je	1f
 	movb	%al, %dl
@@ -168,16 +154,11 @@ real_start:
 	MSG(notification_string)
 
 	/* set %si to the disk address packet */
-#ifdef APPLE_CC
-	disk_address_packet_abs = ABS (disk_address_packet)
-	movw	$disk_address_packet_abs, %si
-#else
 	movw	$ABS(disk_address_packet), %si
-#endif
 
 	/* do not probe LBA if the drive is a floppy */
 	testb	$GRUB_BOOT_MACHINE_BIOS_HD_FLAG, %dl
-	jz	chs_mode
+	jz	L_chs_mode
 
 	/* check if LBA is supported */
 	movb	$0x41, %ah
@@ -192,12 +173,12 @@ real_start:
 	pushw	%dx
 
 	/* use CHS if fails */
-	jc	chs_mode
+	jc	L_chs_mode
 	cmpw	$0xaa55, %bx
-	jne	chs_mode
+	jne	L_chs_mode
 
 	andw	$1, %cx
-	jz	chs_mode
+	jz	L_chs_mode
 
 lba_mode:
 	xorw	%ax, %ax
@@ -214,18 +195,10 @@ lba_mode:
 	movw	$0x0010, (%si)
 
 	/* the absolute address */
-#ifdef APPLE_CC
-	kernel_sector_abs = ABS (kernel_sector)
-	movl	(kernel_sector_abs), %ebx
-	movl	%ebx, 8(%si)
-	movl	(kernel_sector_abs + 4), %ebx
-	movl	%ebx, 12(%si)
-#else
 	movl	ABS(kernel_sector), %ebx
 	movl	%ebx, 8(%si)
 	movl	ABS(kernel_sector + 4), %ebx
 	movl	%ebx, 12(%si)
-#endif
 
 	/* the segment of buffer address */
 	movw	$GRUB_BOOT_MACHINE_BUFFER_SEG, 6(%si)
@@ -243,30 +216,30 @@ lba_mode:
 	int	$0x13
 
 	/* LBA read is not supported, so fallback to CHS.  */
-	jc	chs_mode
+	jc	L_chs_mode
 
 	movw	$GRUB_BOOT_MACHINE_BUFFER_SEG, %bx
-	jmp	copy_buffer
+	jmp	L_copy_buffer
 
-chs_mode:
+L_chs_mode:
 	/*
 	 *  Determine the hard disk geometry from the BIOS!
 	 *  We do this first, so that LS-120 IDE floppies work correctly.
 	 */
 	movb	$8, %ah
 	int	$0x13
-	jnc	final_init
+	jnc	L_final_init
 
 	/*
 	 *  The call failed, so maybe use the floppy probe instead.
 	 */
 	testb	$GRUB_BOOT_MACHINE_BIOS_HD_FLAG, %dl
-	jz	floppy_probe
+	jz	L_floppy_probe
 
 	/* Nope, we definitely have a hard disk, and we're screwed. */
-	jmp	hd_probe_error
+	jmp	L_hd_probe_error
 
-final_init:
+L_final_init:
 	/* set the mode to zero */
 	movzbl	%dh, %eax
 	movb	%ah, -1(%si)
@@ -292,22 +265,13 @@ final_init:
 
 setup_sectors:
 	/* load logical sector start (top half) */
-#ifdef APPLE_CC
-	kernel_sector_abs = ABS (kernel_sector)
-	movl	(kernel_sector_abs + 4), %eax
-#else
 	movl	ABS(kernel_sector + 4), %eax
-#endif
 
 	orl	%eax, %eax
-	jnz	geometry_error
+	jnz	L_geometry_error
 
 	/* load logical sector start (bottom half) */
-#ifdef APPLE_CC
-	movl	(kernel_sector_abs), %eax
-#else
 	movl	ABS(kernel_sector), %eax
-#endif
 
 	/* zero %edx */
 	xorl	%edx, %edx
@@ -323,7 +287,7 @@ setup_sectors:
 
 	/* do we need too many cylinders? */
 	cmpw	8(%si), %ax
-	jge	geometry_error
+	jge	L_geometry_error
 
 	/* normalize sector start (1-based) */
 	incb	%cl
@@ -365,11 +329,11 @@ setup_sectors:
 	movw	$0x0201, %ax	/* function 2 */
 	int	$0x13
 
-	jc	read_error
+	jc	L_read_error
 
 	movw	%es, %bx
 
-copy_buffer:
+L_copy_buffer:
 	/*
 	 * We need to save %cx and %si because the startup code in
 	 * kernel uses them without initializing them.
@@ -392,42 +356,37 @@ copy_buffer:
 	popa
 
 	/* boot kernel */
-#ifdef APPLE_CC
-	kernel_address_abs = ABS (kernel_address)
-	jmp	*(kernel_address_abs)
-#else
 	jmp	*(kernel_address)
-#endif
 
 /* END OF MAIN LOOP */
 
 /*
  * BIOS Geometry translation error (past the end of the disk geometry!).
  */
-geometry_error:
+L_geometry_error:
 	MSG(geometry_error_string)
-	jmp	general_error
+	jmp	L_general_error
 
 /*
  * Disk probe failure.
  */
-hd_probe_error:
+L_hd_probe_error:
 	MSG(hd_probe_error_string)
-	jmp	general_error
+	jmp	L_general_error
 
 /*
  * Read error on the disk.
  */
-read_error:
+L_read_error:
 	MSG(read_error_string)
 
-general_error:
+L_general_error:
 	MSG(general_error_string)
 
 /* go here when you need to stop the machine hard after an error condition */
         /* tell the BIOS a boot failure, which may result in no effect */
         int	$0x18
-stop:	jmp	stop
+L_stop:	jmp	L_stop
 
 notification_string:	.asciz "GRUB "
 geometry_error_string:	.asciz "Geom"
@@ -450,7 +409,7 @@ general_error_string:	.asciz " Error\r\n"
 	movw	$0x0001, %bx
 	movb	$0xe, %ah
 	int	$0x10		/* display a byte */
-message:
+L_message:
 	lodsb
 	cmpb	$0, %al
 	jne	1b	/* if not end of string, jmp to display */
@@ -478,19 +437,14 @@ part_start:
 probe_values:
 	.byte	36, 18, 15, 9, 0
 
-floppy_probe:
+L_floppy_probe:
 /*
  *  Perform floppy probe.
  */
 
-#ifdef APPLE_CC
-	probe_values_abs = ABS (probe_values)
-	movw	$(probe_values_abs-1), %si
-#else
 	movw	$ABS(probe_values-1), %si
-#endif
 
-probe_loop:
+L_probe_loop:
 	/* reset floppy controller INT 13h AH=0 */
 	xorw	%ax, %ax
 	int	$0x13
@@ -506,7 +460,7 @@ probe_loop:
  * Floppy disk probe failure.
  */
 	MSG(fd_probe_error_string)
-	jmp	general_error
+	jmp	L_general_error
 
 /* "Floppy" */
 fd_probe_error_string:	.asciz "Floppy"
@@ -519,14 +473,14 @@ fd_probe_error_string:	.asciz "Floppy"
 	movb	$0, %dh
 	int	$0x13
 
-	/* if error, jump to "probe_loop" */
-	jc	probe_loop
+	/* if error, jump to "L_probe_loop" */
+	jc	L_probe_loop
 
 	/* %cl is already the correct value! */
 	movb	$1, %dh
 	movb	$79, %ch
 
-	jmp	final_init
+	jmp	L_final_init
 
 	. = _start + GRUB_BOOT_MACHINE_PART_END
 



^ permalink raw reply related	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2009-08-13  6:13 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-16  3:47 [PATCH 1/2] RFT: Eliminate Apple specific code from boot/i386/pc/boot.S Pavel Roskin
2009-07-16  3:47 ` [PATCH 2/2] RFT: Remove ABS macro " Pavel Roskin
2009-07-18 15:17   ` Vladimir 'phcoder' Serbinenko
2009-07-18 18:22     ` Robert Millan
2009-07-18 18:34       ` Vladimir 'phcoder' Serbinenko
2009-07-18 19:16         ` Robert Millan
2009-08-07 17:15           ` Vladimir 'phcoder' Serbinenko
2009-08-13  5:53             ` Pavel Roskin
2009-07-16 16:31 ` [PATCH 1/2] RFT: Eliminate Apple specific code " Vladimir 'phcoder' Serbinenko
2009-08-13  5:21   ` Pavel Roskin
2009-08-08 14:48 ` [PATCH] RFT: Rename local labels with a macro " Yves Blusseau
2009-08-08 14:55   ` Vladimir 'phcoder' Serbinenko
2009-08-08 15:47     ` Yves Blusseau
2009-08-10 11:29   ` Robert Millan
2009-08-13  6:13     ` Pavel Roskin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.