From 1f9e557e393128d47c69679fd797c034ae000c55 Mon Sep 17 00:00:00 2001 From: proski Date: Thu, 13 Aug 2009 05:34:39 +0000 Subject: [PATCH] 2009-08-13 Pavel Roskin * boot/i386/pc/boot.S: Remove all code dependent on APPLE_CC. Use local labels starting with "L_" so that Apple assembler knows they are local. --- ChangeLog | 6 +++ boot/i386/pc/boot.S | 110 +++++++++++++------------------------------- 2 files changed, 38 insertions(+), 78 deletions(-) diff --git a/ChangeLog b/ChangeLog index 675cc6d7f..9e84e542a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-08-13 Pavel Roskin + + * boot/i386/pc/boot.S: Remove all code dependent on APPLE_CC. + Use local labels starting with "L_" so that Apple assembler + knows they are local. + 2009-08-10 Robert Millan * include/grub/i386/bsd.h (KERNEL_TYPE_NONE, KERNEL_TYPE_FREEBSD) diff --git a/boot/i386/pc/boot.S b/boot/i386/pc/boot.S index 1fb5f7416..8a8f6c7cf 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