commit-grub
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[2493] 2009-08-14 Pavel Roskin <address@hidden>


From: Pavel Roskin
Subject: [2493] 2009-08-14 Pavel Roskin <address@hidden>
Date: Fri, 14 Aug 2009 04:12:22 +0000

Revision: 2493
          http://svn.sv.gnu.org/viewvc/?view=rev&root=grub&revision=2493
Author:   proski
Date:     2009-08-14 04:12:22 +0000 (Fri, 14 Aug 2009)
Log Message:
-----------
2009-08-14  Pavel Roskin  <address@hidden>

        * boot/i386/pc/cdboot.S: Use LOCAL for local labels.  Eliminate
        ABS and APPLE_CC.
        * boot/i386/pc/diskboot.S: Likewise.
        * boot/i386/pc/lnxboot.S: Likewise.  Hardcode the number of code
        sectors allow compilation on MacOSX.
        * conf/i386-pc.rmk: Enable unconditional compilation of
        lnxboot.img.

Modified Paths:
--------------
    trunk/grub2/ChangeLog
    trunk/grub2/boot/i386/pc/cdboot.S
    trunk/grub2/boot/i386/pc/diskboot.S
    trunk/grub2/boot/i386/pc/lnxboot.S
    trunk/grub2/conf/i386-pc.rmk

Modified: trunk/grub2/ChangeLog
===================================================================
--- trunk/grub2/ChangeLog       2009-08-13 20:08:23 UTC (rev 2492)
+++ trunk/grub2/ChangeLog       2009-08-14 04:12:22 UTC (rev 2493)
@@ -1,3 +1,13 @@
+2009-08-14  Pavel Roskin  <address@hidden>
+
+       * boot/i386/pc/cdboot.S: Use LOCAL for local labels.  Eliminate
+       ABS and APPLE_CC.
+       * boot/i386/pc/diskboot.S: Likewise.
+       * boot/i386/pc/lnxboot.S: Likewise.  Hardcode the number of code
+       sectors allow compilation on MacOSX.
+       * conf/i386-pc.rmk: Enable unconditional compilation of
+       lnxboot.img.
+
 2009-08-13  Colin Watson  <address@hidden>
 
        * util/grub-mkconfig.in: Export GRUB_HIDDEN_TIMEOUT.

Modified: trunk/grub2/boot/i386/pc/cdboot.S
===================================================================
--- trunk/grub2/boot/i386/pc/cdboot.S   2009-08-13 20:08:23 UTC (rev 2492)
+++ trunk/grub2/boot/i386/pc/cdboot.S   2009-08-14 04:12:22 UTC (rev 2493)
@@ -17,6 +17,7 @@
  *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <grub/symbol.h>
 #include <grub/boot.h>
 #include <grub/machine/boot.h>
 #include <grub/machine/kernel.h>
@@ -38,9 +39,9 @@
 
 start:
 _start:
-       call    next
+       call    LOCAL(next)
 
-next:
+LOCAL(next):
        jmp     1f
 
        . = start + 8
@@ -67,24 +68,17 @@
        movw    %ax, %ds
        movw    %ax, %es
 
-#ifdef APPLE_CC
-       err_noboot_msg_abs = 0x7C00 + err_noboot_msg - start
-       movw    $err_noboot_msg_abs, %si
-       bi_length_dif = bi_length - next
-       movl    %cs:bi_length_dif(%bx), %ecx
-#else
        movw    $(0x7C00 + err_noboot_msg - start), %si
-       movl    %cs: bi_length - next(%bx), %ecx
-#endif
+       movl    %cs: bi_length - LOCAL(next)(%bx), %ecx
        orl     %ecx, %ecx
-       jz      fail
+       jz      LOCAL(fail)
 
        addl    $((1 << CDSEC_SHIFT) - 1), %ecx
        shrl    $CDSEC_SHIFT, %ecx
 
-       movl    %cs: bi_file - next(%bx), %esi
+       movl    %cs: bi_file - LOCAL(next)(%bx), %esi
 
-       call    read_cdrom
+       call    LOCAL(read_cdrom)
 
        ljmp    $(DATA_ADDR >> 4), $0
 
@@ -93,7 +87,7 @@
  *   esi: start sector
  *   ecx: number of sectors
  */
-read_cdrom:
+LOCAL(read_cdrom):
        xorl    %eax, %eax
 
        /* Number of blocks to read.  */
@@ -134,7 +128,7 @@
 
 2:
        shrw    $1, %di                 /* Reduce transfer size.  */
-       jz      cdrom_fail
+       jz      LOCAL(cdrom_fail)
        movw    %di, 0x10(%si)
        movw    %di, 2(%si)
        movb    $0x42, %ah
@@ -155,15 +149,10 @@
        addw    $0x12, %sp
        ret
 
-cdrom_fail:
-#ifdef APPLE_CC
-       err_cdfail_msg_abs = 0x7C00 + err_cdfail_msg - start
-       movw    $(err_cdfail_msg_abs), %si
-#else
+LOCAL(cdrom_fail):
        movw    $(0x7C00 + err_cdfail_msg - start), %si
-#endif
 
-fail:
+LOCAL(fail):
        movb    $0x0e, %ah
        xorw    %bx, %bx
 1:

Modified: trunk/grub2/boot/i386/pc/diskboot.S
===================================================================
--- trunk/grub2/boot/i386/pc/diskboot.S 2009-08-13 20:08:23 UTC (rev 2492)
+++ trunk/grub2/boot/i386/pc/diskboot.S 2009-08-14 04:12:22 UTC (rev 2493)
@@ -16,24 +16,15 @@
  *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <grub/symbol.h>
 #include <grub/machine/boot.h>
 
 /*
  *  defines for the code go here
  */
 
-       /* Absolute addresses
-          This makes the assembler generate the address without support
-          from the linker. (ELF can't relocate 16-bit addresses!) */
-#define ABS(x) (x-_start+GRUB_BOOT_MACHINE_KERNEL_ADDR)
+#define MSG(x) movw $x, %si; call LOCAL(message)
 
-       /* Print message string */
-#ifdef APPLE_CC
-#define MSG(x) x ## _abs = ABS(x); mov $x ## _abs, %esi; call message
-#else
-#define MSG(x) movw $ABS(x), %si; call message
-#endif
-
        .file   "diskboot.S"
 
        .text
@@ -65,33 +56,27 @@
        popw    %si
 
        /* this sets up for the first run through "bootloop" */
-#ifdef APPLE_CC
-       firstlist_off_abs = ABS (firstlist - GRUB_BOOT_MACHINE_LIST_SIZE)
-       movl    $firstlist_off_abs, %edi
-#else
-       movw    $ABS(firstlist - GRUB_BOOT_MACHINE_LIST_SIZE), %di
-#endif
+       movw    $(firstlist - GRUB_BOOT_MACHINE_LIST_SIZE), %di
 
        /* save the sector number of the second sector in %ebp */
        movl    (%di), %ebp
 
         /* this is the loop for reading the rest of the kernel in */
-bootloop:
+LOCAL(bootloop):
 
        /* check the number of sectors to read */
        cmpw    $0, 8(%di)
 
        /* if zero, go to the start function */
-       je      bootit
+       je      LOCAL(bootit)
 
-setup_sectors:
+LOCAL(setup_sectors):
        /* check if we use LBA or CHS */
        cmpb    $0, -1(%si)
 
-       /* jump to chs_mode if zero */
-       je      chs_mode
+       /* use CHS if zero, LBA otherwise */
+       je      LOCAL(chs_mode)
 
-lba_mode:
        /* load logical sector start */
        movl    (%di), %ebx
        movl    4(%di), %ecx
@@ -150,16 +135,16 @@
        movb    $0x42, %ah
        int     $0x13
 
-       jc      read_error
+       jc      LOCAL(read_error)
 
        movw    $GRUB_BOOT_MACHINE_BUFFER_SEG, %bx
-       jmp     copy_buffer
+       jmp     LOCAL(copy_buffer)
 
-chs_mode:
+LOCAL(chs_mode):
        /* load logical sector start (top half) */
        movl    4(%di), %eax
        orl     %eax, %eax
-       jnz     geometry_error
+       jnz     LOCAL(geometry_error)
 
        /* load logical sector start (bottom half) */
        movl    (%di), %eax
@@ -184,7 +169,7 @@
 
        /* do we need too many cylinders? */
        cmpw    8(%si), %ax
-       jge     geometry_error
+       jge     LOCAL(geometry_error)
 
        /* determine the maximum sector length of this read */
        movw    (%si), %ax      /* get number of sectors per track/head */
@@ -254,12 +239,12 @@
        movb    $0x2, %ah       /* function 2 */
        int     $0x13
 
-       jc      read_error
+       jc      LOCAL(read_error)
 
        /* save source segment */
        movw    %es, %bx
 
-copy_buffer:
+LOCAL(copy_buffer):
 
        /* load addresses for copy from disk buffer to destination */
        movw    10(%di), %es    /* load destination segment */
@@ -299,17 +284,17 @@
 
        /* check if finished with this dataset */
        cmpw    $0, 8(%di)
-       jne     setup_sectors
+       jne     LOCAL(setup_sectors)
 
        /* update position to load from */
        subw    $GRUB_BOOT_MACHINE_LIST_SIZE, %di
 
        /* jump to bootloop */
-       jmp     bootloop
+       jmp     LOCAL(bootloop)
 
 /* END OF MAIN LOOP */
 
-bootit:
+LOCAL(bootit):
        /* print a newline */
        MSG(notification_done)
        popw    %dx     /* this makes sure %dl is our "boot" drive */
@@ -319,21 +304,21 @@
 /*
  * BIOS Geometry translation error (past the end of the disk geometry!).
  */
-geometry_error:
+LOCAL(geometry_error):
        MSG(geometry_error_string)
-       jmp     general_error
+       jmp     LOCAL(general_error)
 
 /*
  * Read error on the disk.
  */
-read_error:
+LOCAL(read_error):
        MSG(read_error_string)
 
-general_error:
+LOCAL(general_error):
        MSG(general_error_string)
 
 /* go here when you need to stop the machine hard after an error condition */
-stop:  jmp     stop
+LOCAL(stop):   jmp     LOCAL(stop)
 
 notification_string:   .asciz "loading"
 
@@ -361,12 +346,11 @@
        int     $0x10           /* display a byte */
 
        incw    %si
-message:
+LOCAL(message):
        movb    (%si), %al
        cmpb    $0, %al
        jne     1b      /* if not end of string, jmp to display */
        ret
-lastlist:
 
 /*
  *  This area is an empty space between the main body of code below which

Modified: trunk/grub2/boot/i386/pc/lnxboot.S
===================================================================
--- trunk/grub2/boot/i386/pc/lnxboot.S  2009-08-13 20:08:23 UTC (rev 2492)
+++ trunk/grub2/boot/i386/pc/lnxboot.S  2009-08-14 04:12:22 UTC (rev 2493)
@@ -18,6 +18,7 @@
  */
 
 #include <config.h>
+#include <grub/symbol.h>
 #include <grub/boot.h>
 #include <grub/machine/boot.h>
 #include <grub/machine/kernel.h>
@@ -25,14 +26,8 @@
 
         .file   "lnxboot.S"
 
-#ifdef APPLE_CC
-#error Building lnxboot.img with Apple's as results in an unusable image
-#endif
-
 #define CODE_ADDR      0x6000
-#ifndef APPLE_CC
-#define CODE_LENG      (code_end - start)
-#endif
+#define CODE_SECTORS   1
 #define DATA_ADDR      ((GRUB_BOOT_MACHINE_KERNEL_ADDR) + 0x200)
 
 #define BLCK_LENG      0x4000
@@ -45,17 +40,12 @@
 
 data_start:
        xorl    %ebp, %ebp
-       jmp     linux_next
+       jmp     LOCAL(linux_next)
 
        . = data_start + 0x1F1
 
 setup_sects:
-/* Apple's cc can't fill this value.  */
-#ifdef APPLE_CC
-       .byte   0
-#else
-       .byte   (CODE_LENG >> 9)
-#endif
+       .byte   CODE_SECTORS
 root_flags:
        .word   0
 syssize:
@@ -74,7 +64,7 @@
 start:
 _start:
 
-       jmp linux_init
+       jmp LOCAL(linux_init)
 
        .ascii  "HdrS"                  /* Header signature.  */
        .word   0x0203                  /* Header version number.  */
@@ -132,40 +122,22 @@
 data_leng:
        .long   0
 
-linux_init:
-
-#ifdef APPLE_CC
-       reg_edx_rel = reg_edx - start
-       code32_start_rel = code32_start - start
-       movw    %cs:(reg_edx_rel), %dx
-       movl    %cs:(code32_start_rel), %ebp
-#else
+LOCAL(linux_init):
        movw    %cs:(reg_edx - start), %dx
        movl    %cs:(code32_start - start), %ebp
-#endif
 
-linux_next:
+LOCAL(linux_next):
 
-       call    normalize
+       call    LOCAL(normalize)
 
-normalize:
+LOCAL(normalize):
        popw    %bx
-#ifdef APPLE_CC
-       normalize_rel = normalize - start
-       subw    $(normalize_rel), %bx
-#else
-       subw    $(normalize - start), %bx
-#endif
+       subw    $(LOCAL(normalize) - start), %bx
        shrw    $4, %bx
        movw    %cs, %ax
        addw    %bx, %ax
        pushw   %ax
-#ifdef APPLE_CC
-       real_code_rel = real_code - start
-       pushw   $(real_code_rel)
-#else
        pushw   $(real_code - start)
-#endif
        lret                            /* Jump to real_code.  */
 
 real_code:
@@ -191,13 +163,7 @@
 
        rep
        movsl
-
-#ifdef APPLE_CC
-       real_code_2_rel = real_code_2 - start
-       ljmp    $(CODE_ADDR >> 4), $(real_code_2_rel)
-#else
        ljmp    $(CODE_ADDR >> 4), $(real_code_2  - start)
-#endif
 
 real_code_2:
 
@@ -216,21 +182,14 @@
        addl    %ecx, %esi
        movl    $DATA_ADDR, %edi
 
-       call    move_memory
+       call    LOCAL(move_memory)
 
        /* Check for multiboot signature.  */
        cmpl    $MULTIBOOT_MAGIC, %ss:(DATA_ADDR + GRUB_KERNEL_MACHINE_DATA_END)
        jz      1f
 
-#ifdef APPLE_CC
-       ramdisk_image_rel = ramdisk_image - start
-       ramdisk_size_rel = ramdisk_size - start
-       movl    (ramdisk_image_rel), %esi
-       movl    (ramdisk_size_rel), %ecx
-#else
        movl    (ramdisk_image - start), %esi
        movl    (ramdisk_size - start), %ecx
-#endif
        movl    $(DATA_ADDR - 0x200), %edi
        jmp     2f
 
@@ -240,17 +199,11 @@
        addl    $(GRUB_KERNEL_MACHINE_RAW_SIZE - 0x200), %ecx
 
 2:
-       call    move_memory
+       call    LOCAL(move_memory)
 
        movsbl  %dh, %eax
        movl    %eax, %ss:(DATA_ADDR + GRUB_KERNEL_MACHINE_INSTALL_DOS_PART)
-
-#ifdef APPLE_CC
-       reg_edx_rel = reg_edx - start
-       movsbl  (reg_edx_rel + 2), %eax
-#else
        movsbl  (reg_edx + 2 - start), %eax
-#endif
        movl    %eax, %ss:(DATA_ADDR + GRUB_KERNEL_MACHINE_INSTALL_BSD_PART)
 
        movb    $0xFF, %dh
@@ -264,7 +217,7 @@
  *   ecx: number of bytes
  */
 
-move_memory:
+LOCAL(move_memory):
        incl    %ecx
        andb    $0xFE, %cl
        pushw   %dx
@@ -279,28 +232,6 @@
        pushl   %ecx
 
        movl    %esi, %eax
-#ifdef APPLE_CC
-       gdt_src1_rel = gdt_src1 - start
-       gdt_src2_rel = gdt_src2 - start
-       gdt_dst1_rel = gdt_dst1 - start
-       gdt_dst2_rel = gdt_dst2 - start
-       gdt_rel = gdt - start
-
-       movw    %si, (gdt_src1_rel)
-       shrl    $16, %eax
-       movb    %al, (gdt_src1_rel + 2)
-       movb    %ah, (gdt_src2_rel)
-
-       movl    %edi, %eax
-       movw    %di, (gdt_dst1_rel)
-       shrl    $16, %eax
-       movb    %al, (gdt_dst1_rel + 2)
-       movb    %ah, (gdt_dst2_rel)
-
-       movw    $(gdt_rel), %si
-       movb    $0x87, %ah
-       shrw    $1, %cx
-#else
        movw    %si, (gdt_src1 - start)
        shrl    $16, %eax
        movb    %al, (gdt_src1 + 2 - start)
@@ -315,7 +246,6 @@
        movw    $(gdt - start), %si
        movb    $0x87, %ah
        shrw    $1, %cx
-#endif
 
        int     $0x15
 
@@ -325,13 +255,8 @@
        popl    %esi
 
        jnc     2f
-#ifdef APPLE_CC
-       err_int15_msg_rel = err_int15_msg - start
-       movw    $(err_int15_msg_rel), %si
-#else
        movw    $(err_int15_msg - start), %si
-#endif
-       jmp     fail
+       jmp     LOCAL(fail)
 
 2:
 
@@ -349,7 +274,7 @@
  *   si: message
  */
 
-fail:
+LOCAL(fail):
        movb    $0x0e, %ah
        xorw    %bx, %bx
 1:
@@ -362,11 +287,4 @@
 err_int15_msg:
        .ascii  "move memory fails\0"
 
-       /* Unsupported feature in Apple's cc.  */
-#ifndef APPLE_CC
-       . = (.  & (~0x1FF)) + 0x1FF
-#endif
-
-       .byte   0
-
-code_end:
+       . = _start + CODE_SECTORS * 512

Modified: trunk/grub2/conf/i386-pc.rmk
===================================================================
--- trunk/grub2/conf/i386-pc.rmk        2009-08-13 20:08:23 UTC (rev 2492)
+++ trunk/grub2/conf/i386-pc.rmk        2009-08-14 04:12:22 UTC (rev 2493)
@@ -10,7 +10,8 @@
 script/sh/lexer.c_DEPENDENCIES = grub_script.tab.h
 
 # Images.
-pkglib_IMAGES = boot.img diskboot.img kernel.img pxeboot.img cdboot.img
+pkglib_IMAGES = boot.img cdboot.img diskboot.img kernel.img lnxboot.img \
+       pxeboot.img
 
 # For boot.img.
 boot_img_SOURCES = boot/i386/pc/boot.S
@@ -31,9 +32,6 @@
 diskboot_img_FORMAT = binary
 
 # For lnxboot.img.
-ifeq ($(TARGET_APPLE_CC), 0)
-pkglib_IMAGES += lnxboot.img
-endif
 lnxboot_img_SOURCES = boot/i386/pc/lnxboot.S
 lnxboot_img_ASFLAGS = $(COMMON_ASFLAGS)
 lnxboot_img_LDFLAGS = $(COMMON_LDFLAGS) $(TARGET_IMG_LDFLAGS)6000





reply via email to

[Prev in Thread] Current Thread [Next in Thread]