diff --git a/boot/i386/pc/lnxboot.S b/boot/i386/pc/lnxboot.S index 0db6826..f244fec 100644 --- a/boot/i386/pc/lnxboot.S +++ b/boot/i386/pc/lnxboot.S @@ -24,9 +24,15 @@ #include .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 DATA_ADDR ((GRUB_BOOT_MACHINE_KERNEL_ADDR) + 0x200) #define BLCK_LENG 0x4000 @@ -44,7 +50,12 @@ data_start: . = data_start + 0x1F1 setup_sects: +/* Apple's cc can't fill this value. */ +#ifdef APPLE_CC + .byte 0 +#else .byte (CODE_LENG >> 9) +#endif root_flags: .word 0 syssize: @@ -351,7 +362,10 @@ fail: err_int15_msg: .ascii "move memory fails\0" + /* Unsupported feature in Apple's cc. */ +#ifndef APPLE_CC . = (. & (~0x1FF)) + 0x1FF +#endif .byte 0 diff --git a/conf/i386-pc.rmk b/conf/i386-pc.rmk index f75117b..f1e18fb 100644 --- a/conf/i386-pc.rmk +++ b/conf/i386-pc.rmk @@ -10,8 +10,7 @@ COMMON_LDFLAGS = -m32 -nostdlib script/sh/lexer.c_DEPENDENCIES = grub_script.tab.h # Images. -pkglib_IMAGES = boot.img diskboot.img kernel.img pxeboot.img lnxboot.img \ - cdboot.img +pkglib_IMAGES = boot.img diskboot.img kernel.img pxeboot.img cdboot.img # For boot.img. boot_img_SOURCES = boot/i386/pc/boot.S @@ -32,6 +31,9 @@ diskboot_img_LDFLAGS = $(COMMON_LDFLAGS) $(TARGET_IMG_LDFLAGS)8000 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