[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [2493] 2009-08-14 Pavel Roskin <address@hidden>,
Pavel Roskin <=