From: Vladimir 'phcoder' Serbinenko Date: Tue, 17 May 2011 12:02:18 +0000 (+0200) Subject: merge mainline and various cleanups X-Git-Tag: 2.00~1252^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3666d5f636da644b1c9e02841df24ff9b13ada31;p=thirdparty%2Fgrub.git merge mainline and various cleanups --- 3666d5f636da644b1c9e02841df24ff9b13ada31 diff --cc configure.ac index aac93fba2,ffc0527cf..8f854155e --- a/configure.ac +++ b/configure.ac @@@ -122,8 -123,12 +123,13 @@@ case "$target_cpu"-"$platform" i i386-qemu) ;; powerpc-ieee1275) ;; sparc64-ieee1275) ;; + ia64-efi) ;; - mips-qemu-mips) ;; + mips-qemu_mips) ;; - mips-yeeloong) ;; ++ mips-qemu-mips) platform=qemu_mips;; + mips-yeeloong) platform=loongson ;; + mips-fuloong) platform=loongson ;; + mips-loongson) ;; + mips-arc) ;; *-emu) ;; *) AC_MSG_ERROR([platform "$platform" is not supported for target CPU "$target_cpu"]) ;; esac @@@ -156,8 -161,9 +162,9 @@@ case "$platform" i qemu) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_QEMU=1" ;; pc) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_PCBIOS=1" ;; emu) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_EMU=1" ;; - yeeloong) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS_YEELOONG=1 -DGRUB_MACHINE_MIPS_BONITO=1" ;; - qemu_mips) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS_QEMU_MIPS=1" ;; + loongson) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS_LOONGSON=1 -DGRUB_MACHINE_MIPS_BONITO=1" ;; - qemu-mips) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS_QEMU_MIPS=1 -DGRUB_MACHINE_MIPS_BONITO=1" ;; - mips-arc) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS_ARC=1 -DGRUB_MACHINE_ARC=1" ;; ++ qemu_mips) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS_QEMU_MIPS=1 -DGRUB_MACHINE_MIPS_BONITO=1" ;; ++ arc) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_ARC=1" ;; esac case "$target_cpu" in mips) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_MIPS=1" ;; diff --cc gentpl.py index 97eff9f57,fac29b706..6e2df076b --- a/gentpl.py +++ b/gentpl.py @@@ -6,8 -6,8 +6,9 @@@ GRUB_PLATFORMS = [ "emu", "i386_pc", "i386_efi", "i386_qemu", "i386_coreboot", "i386_multiboot", "i386_ieee1275", "x86_64_efi", - "mips_yeeloong", "mips_qemu_mips", "sparc64_ieee1275", - "powerpc_ieee1275" ] + "mips_loongson", "sparc64_ieee1275", - "powerpc_ieee1275", "mips_arc", "ia64_efi" ] ++ "powerpc_ieee1275", "mips_arc", "ia64_efi", ++ "mips_qemu_mips" ] GROUPS = {} @@@ -17,7 -17,7 +18,7 @@@ GROUPS["common"] = GRUB_PLATFORMS[: GROUPS["i386"] = [ "i386_pc", "i386_efi", "i386_qemu", "i386_coreboot", "i386_multiboot", "i386_ieee1275" ] GROUPS["x86_64"] = [ "x86_64_efi" ] GROUPS["x86"] = GROUPS["i386"] + GROUPS["x86_64"] - GROUPS["mips"] = [ "mips_yeeloong", "mips_qemu_mips" ] -GROUPS["mips"] = [ "mips_loongson", "mips_arc" ] ++GROUPS["mips"] = [ "mips_loongson", "mips_qemu_mips", "mips_arc" ] GROUPS["sparc64"] = [ "sparc64_ieee1275" ] GROUPS["powerpc"] = [ "powerpc_ieee1275" ] @@@ -29,8 -29,8 +30,8 @@@ GROUPS["ieee1275"] = [ "i386_ieee1275 GROUPS["noemu"] = GRUB_PLATFORMS[:]; GROUPS["noemu"].remove("emu") # Groups based on hardware features - GROUPS["cmos"] = GROUPS["x86"][:] + ["mips_yeeloong", "mips_qemu_mips" ]; GROUPS["cmos"].remove("i386_efi"); GROUPS["cmos"].remove("x86_64_efi") - GROUPS["pci"] = GROUPS["x86"] + ["mips_yeeloong"] -GROUPS["cmos"] = GROUPS["x86"][:] + ["mips_loongson"]; GROUPS["cmos"].remove("i386_efi"); GROUPS["cmos"].remove("x86_64_efi") ++GROUPS["cmos"] = GROUPS["x86"][:] + ["mips_loongson", "mips_qemu_mips"]; GROUPS["cmos"].remove("i386_efi"); GROUPS["cmos"].remove("x86_64_efi") + GROUPS["pci"] = GROUPS["x86"] + ["mips_loongson"] GROUPS["usb"] = GROUPS["pci"] # If gfxterm is main output console integrate it into kernel @@@ -39,7 -39,7 +40,7 @@@ GROUPS["videomodules"] = GRUB_PLATFOR for i in GROUPS["videoinkernel"]: GROUPS["videomodules"].remove(i) # Similar for terminfo - GROUPS["terminfoinkernel"] = ["mips_yeeloong"] + GROUPS["ieee1275"]; -GROUPS["terminfoinkernel"] = ["mips_loongson", "mips_arc"] + GROUPS["ieee1275"]; ++GROUPS["terminfoinkernel"] = ["mips_loongson", "mips_arc", "mips_qemu_mips" ] + GROUPS["ieee1275"]; GROUPS["terminfomodule"] = GRUB_PLATFORMS[:]; for i in GROUPS["terminfoinkernel"]: GROUPS["terminfomodule"].remove(i) diff --cc grub-core/Makefile.am index 65f638745,6419299a5..88858c8ab --- a/grub-core/Makefile.am +++ b/grub-core/Makefile.am @@@ -125,7 -125,22 +125,26 @@@ KERNEL_HEADER_FILES += $(top_srcdir)/in KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/i386/pit.h endif - if COND_mips_yeeloong + if COND_ia64_efi + KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/efi.h + KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/time.h + KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/efi/disk.h + endif + + if COND_mips + KERNEL_HEADER_FILES += $(top_builddir)/include/grub/cpu/kernel.h + endif + + if COND_mips_arc + KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h + KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/arc/arc.h + endif + ++if COND_mips_qemu_mips ++KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h ++endif ++ + if COND_mips_loongson KERNEL_HEADER_FILES += $(top_builddir)/include/grub/keyboard_layouts.h KERNEL_HEADER_FILES += $(top_builddir)/include/grub/machine/kernel.h KERNEL_HEADER_FILES += $(top_builddir)/include/grub/cpu/cache.h diff --cc grub-core/Makefile.core.def index 1cc832892,5f200ed5c..48809a65d --- a/grub-core/Makefile.core.def +++ b/grub-core/Makefile.core.def @@@ -32,11 -38,12 +38,13 @@@ kernel = i386_coreboot_ldflags = '-Wl,-Ttext=0x8200'; i386_multiboot_ldflags = '-Wl,-Ttext=0x8200'; i386_ieee1275_ldflags = '-Wl,-Ttext=0x10000'; - mips_yeeloong_ldflags = '-Wl,-Ttext,0x80200000'; + mips_loongson_ldflags = '-Wl,-Ttext,0x80200000'; powerpc_ieee1275_ldflags = '-Wl,-Ttext,0x200000'; sparc64_ieee1275_ldflags = '-Wl,-Ttext,0x4400'; + mips_arc_ldflags = '-Wl,-Ttext,0x8a000000'; ++ mips_qemu_mips_ldflags = '-Wl,-Ttext,0x80200000'; - mips_yeeloong_cppflags = '-DUSE_ASCII_FAILBACK'; + mips_loongson_cppflags = '-DUSE_ASCII_FAILBACK'; i386_qemu_cppflags = '-DGRUB_BOOT_MACHINE_LINK_ADDR=$(GRUB_BOOT_MACHINE_LINK_ADDR)'; emu_cflags = '$(CFLAGS_GNULIB)'; emu_cppflags = '$(CPPFLAGS_GNULIB)'; @@@ -140,17 -151,22 +152,26 @@@ mips = kern/mips/cache.S; mips = kern/mips/dl.c; mips = kern/mips/init.c; - mips_yeeloong = kern/mips/yeeloong/init.c; - mips_qemu_mips = kern/mips/qemu-mips/init.c; - mips_yeeloong = term/at_keyboard.c; - mips_yeeloong = term/serial.c; - mips_yeeloong = video/sm712.c; + ++ mips_qemu_mips = kern/mips/qemu_mips/init.c; ++ mips_qemu_mips = term/ns8250.c; ++ mips_qemu_mips = term/serial.c; ++ + mips_arc = kern/mips/arc/init.c; + mips_arc = term/arc/console.c; + mips_arc = disk/arc/arcdisk.c; + + mips_loongson = term/ns8250.c; + mips_loongson = bus/bonito.c; + mips_loongson = bus/cs5536.c; + mips_loongson = bus/pci.c; + mips_loongson = kern/mips/loongson/init.c; + mips_loongson = term/at_keyboard.c; + mips_loongson = term/serial.c; + mips_loongson = video/sm712.c; + mips_loongson = video/sis315pro.c; extra_dist = video/sm712_init.c; - mips_yeeloong = commands/keylayouts.c; + mips_loongson = commands/keylayouts.c; powerpc_ieee1275 = kern/ieee1275/init.c; powerpc_ieee1275 = kern/powerpc/cache.S; @@@ -297,12 -314,11 +319,12 @@@ image = common = lib/xzembed/xz_dec_lzma2.c; common = lib/xzembed/xz_dec_stream.c; - cppflags = '-I$(srcdir)/lib/posix_wrap -I$(srcdir)/lib/xzembed'; - - mips_cppflags = '-I$(srcdir)/lib/posix_wrap -I$(srcdir)/lib/xzembed -DGRUB_EMBED_DECOMPRESSOR=1 -DGRUB_MACHINE_LINK_ADDR=0x80200000'; + cppflags = '-I$(srcdir)/lib/posix_wrap -I$(srcdir)/lib/xzembed -DGRUB_EMBED_DECOMPRESSOR=1'; objcopyflags = '-O binary'; - ldflags = '-static-libgcc -Wl,-Ttext,0x80100000'; + mips_loongson_ldflags = '-static-libgcc -Wl,-Ttext,0x80100000'; ++ mips_qemu_mips_ldflags = '-static-libgcc -Wl,-Ttext,0x80100000'; + mips_arc_ldflags = '-static-libgcc -Wl,-Ttext,0x89f00000'; ldadd = '-lgcc'; cflags = '-static-libgcc'; enable = mips; @@@ -313,10 -329,11 +335,12 @@@ image = mips = boot/mips/startup_raw.S; common = boot/decompressor/none.c; - mips_cppflags = '-DGRUB_EMBED_DECOMPRESSOR=1 -DGRUB_MACHINE_LINK_ADDR=0x80200000'; + cppflags = '-DGRUB_EMBED_DECOMPRESSOR=1'; objcopyflags = '-O binary'; - ldflags = '-static-libgcc -Wl,-Ttext,0x80100000'; + mips_loongson_ldflags = '-static-libgcc -Wl,-Ttext,0x80100000'; ++ mips_qemu_mips_ldflags = '-static-libgcc -Wl,-Ttext,0x80100000'; + mips_arc_ldflags = '-static-libgcc -Wl,-Ttext,0x89f00000'; ldadd = '-lgcc'; cflags = '-static-libgcc'; enable = mips; diff --cc grub-core/kern/main.c index da7123234,6376c2516..cc9758988 --- a/grub-core/kern/main.c +++ b/grub-core/kern/main.c @@@ -53,8 -53,8 +53,8 @@@ grub_module_iterate (int (*hook) (struc } } - /* This is actualy platform-independant but used only on yeeloong and sparc. */ - #if defined (GRUB_MACHINE_MIPS_YEELOONG) || defined (GRUB_MACHINE_SPARC64) + /* This is actualy platform-independant but used only on loongson and sparc. */ -#if defined (GRUB_MACHINE_MIPS_LOONGSON) || defined (GRUB_MACHINE_SPARC64) ++#if defined (GRUB_MACHINE_MIPS_LOONGSON) || defined (GRUB_MACHINE_MIPS_QEMU_MIPS) || defined (GRUB_MACHINE_SPARC64) grub_addr_t grub_modules_get_end (void) { diff --cc grub-core/kern/mips/cache_flush.S index 87a738caa,a352fd8ba..305a8b401 --- a/grub-core/kern/mips/cache_flush.S +++ b/grub-core/kern/mips/cache_flush.S @@@ -20,8 -17,7 +20,8 @@@ subu $t1, $t3, $t2 2: cache 0, 0($t0) - addiu $t1, $t1, 0xffff + addiu $t1, $t1, -0x4 bne $t1, $zero, 2b - addiu $t0, $t0, 0x1 + addiu $t0, $t0, 0x4 sync +#endif diff --cc grub-core/kern/mips/qemu_mips/init.c index 1690b5451,f2bb652a8..b3155eab5 --- a/grub-core/kern/mips/qemu_mips/init.c +++ b/grub-core/kern/mips/qemu_mips/init.c @@@ -6,24 -6,25 +6,31 @@@ #include #include #include -#include #include -#include ++#include +#include #define RAMSIZE (*(grub_uint32_t *) ((16 << 20) - 264)) --grub_uint32_t --grub_get_rtc (void) --{ -- static int calln = 0; -- return calln++; --} ++extern void grub_serial_init (void); ++extern void grub_terminfo_init (void); void grub_machine_init (void) { -- grub_mm_init_region ((void *) GRUB_MACHINE_MEMORY_USABLE, -- RAMSIZE - (GRUB_MACHINE_MEMORY_USABLE & 0x7fffffff)); ++ grub_addr_t modend; ++ ++ /* FIXME: measure this. */ ++ grub_arch_cpuclock = 64000000; ++ ++ modend = grub_modules_get_end (); ++ grub_mm_init_region ((void *) modend, RAMSIZE ++ - (modend - GRUB_ARCH_LOWMEMVSTART)); ++ grub_install_get_time_ms (grub_rtc_get_time_ms); ++ ++ grub_terminfo_init (); ++ grub_serial_init (); } void diff --cc grub-core/kern/mips/startup.S index ae0e0b187,ac7ed3175..58acb00f3 --- a/grub-core/kern/mips/startup.S +++ b/grub-core/kern/mips/startup.S @@@ -35,7 -36,7 +36,7 @@@ start bal cont nop - . = _start + GRUB_KERNEL_MIPS_YEELOONG_TOTAL_MODULE_SIZE - . = _start + GRUB_KERNEL_MIPS_LOONGSON_TOTAL_MODULE_SIZE ++ . = _start + GRUB_KERNEL_MACHINE_TOTAL_MODULE_SIZE total_module_size: .long 0 diff --cc include/grub/mips/qemu_mips/memory.h index 57220a1e2,99d9ef2be..7a7ff143e --- a/include/grub/mips/qemu_mips/memory.h +++ b/include/grub/mips/qemu_mips/memory.h @@@ -28,38 -28,12 +28,7 @@@ #define GRUB_MACHINE_MEMORY_STACK_HIGH 0x80f00000 #define GRUB_MACHINE_MEMORY_USABLE 0x81000000 - #define GRUB_MACHINE_MEMORY_AVAILABLE 1 - #define GRUB_MACHINE_MEMORY_MAX_TYPE 1 - /* This one is special: it's used internally but is never reported - by firmware. */ - #define GRUB_MACHINE_MEMORY_HOLE 2 - #define GRUB_MACHINE_MEMORY_RESERVED GRUB_MACHINE_MEMORY_HOLE - #ifndef ASM_FILE - - typedef grub_addr_t grub_phys_addr_t; - - static inline grub_phys_addr_t - grub_vtop (void *a) - { - return ((grub_phys_addr_t) a) & 0x1fffffff; - } - - static inline void * - grub_map_memory (grub_phys_addr_t a, grub_size_t size __attribute__ ((unused))) - { - return (void *) (a | 0x80000000); - } - - static inline void - grub_unmap_memory (void *a __attribute__ ((unused)), - grub_size_t size __attribute__ ((unused))) - { - } - --grub_err_t EXPORT_FUNC (grub_machine_mmap_iterate) --(int NESTED_FUNC_ATTR (*hook) (grub_uint64_t, grub_uint64_t, grub_uint32_t)); -grub_err_t EXPORT_FUNC(grub_machine_mmap_iterate) - (int NESTED_FUNC_ATTR (*hook) (grub_uint64_t, grub_uint64_t, grub_uint32_t)); -- static inline grub_err_t grub_machine_mmap_register (grub_uint64_t start __attribute__ ((unused)), grub_uint64_t size __attribute__ ((unused)), diff --cc include/grub/mips/qemu_mips/serial.h index 1f8ce0804,1f8ce0804..1708678dc --- a/include/grub/mips/qemu_mips/serial.h +++ b/include/grub/mips/qemu_mips/serial.h @@@ -19,6 -19,6 +19,6 @@@ #ifndef GRUB_MACHINE_SERIAL_HEADER #define GRUB_MACHINE_SERIAL_HEADER 1 --#define GRUB_MACHINE_SERIAL_PORTS { 0x140003f8 } ++#define GRUB_MACHINE_SERIAL_PORTS { 0xb40003f8 } #endif diff --cc include/grub/mips/qemu_mips/time.h index a73f64dea,a73f64dea..164b61ef8 --- a/include/grub/mips/qemu_mips/time.h +++ b/include/grub/mips/qemu_mips/time.h @@@ -20,15 -20,15 +20,6 @@@ #define KERNEL_MACHINE_TIME_HEADER 1 #include -- --#define GRUB_TICKS_PER_SECOND 1000 -- --/* Return the real time in ticks. */ --grub_uint32_t EXPORT_FUNC (grub_get_rtc) (void); -- --static inline void --grub_cpu_idle(void) --{ --} ++#include #endif /* ! KERNEL_MACHINE_TIME_HEADER */ diff --cc include/grub/offsets.h index fa609b16f,35bfd0a41..40c8a016b --- a/include/grub/offsets.h +++ b/include/grub/offsets.h @@@ -100,30 -100,27 +100,35 @@@ #define GRUB_KERNEL_POWERPC_IEEE1275_LINK_ALIGN 4 #define GRUB_KERNEL_POWERPC_IEEE1275_LINK_ADDR 0x200000 - #define GRUB_KERNEL_MIPS_YEELOONG_LINK_ADDR 0x80200000 + #define GRUB_KERNEL_MIPS_LOONGSON_LINK_ADDR 0x80200000 - #define GRUB_KERNEL_MIPS_YEELOONG_LINK_ALIGN 32 + #define GRUB_KERNEL_MIPS_LOONGSON_LINK_ALIGN 32 - #define GRUB_KERNEL_MIPS_COMPRESSED_SIZE 0x8 - #define GRUB_KERNEL_MIPS_UNCOMPRESSED_SIZE 0xc + #define GRUB_KERNEL_MIPS_LOONGSON_COMPRESSED_SIZE 0x8 + #define GRUB_KERNEL_MIPS_LOONGSON_UNCOMPRESSED_SIZE 0xc - #define GRUB_KERNEL_MIPS_YEELOONG_COMPRESSED_SIZE GRUB_KERNEL_MIPS_COMPRESSED_SIZE - #define GRUB_KERNEL_MIPS_YEELOONG_UNCOMPRESSED_SIZE GRUB_KERNEL_MIPS_UNCOMPRESSED_SIZE + #define GRUB_KERNEL_MIPS_LOONGSON_TOTAL_MODULE_SIZE 0x08 + #define GRUB_KERNEL_MIPS_LOONGSON_PREFIX 0x0c + #define GRUB_KERNEL_MIPS_LOONGSON_PREFIX_END 0x54 - #define GRUB_KERNEL_MIPS_QEMU_MIPS_COMPRESSED_SIZE GRUB_KERNEL_MIPS_COMPRESSED_SIZE - #define GRUB_KERNEL_MIPS_QEMU_MIPS_UNCOMPRESSED_SIZE GRUB_KERNEL_MIPS_UNCOMPRESSED_SIZE ++#define GRUB_KERNEL_MIPS_QEMU_MIPS_LINK_ADDR 0x80200000 ++#define GRUB_KERNEL_MIPS_QEMU_MIPS_LINK_ALIGN 32 ++#define GRUB_KERNEL_MIPS_QEMU_MIPS_COMPRESSED_SIZE 0x8 ++#define GRUB_KERNEL_MIPS_QEMU_MIPS_UNCOMPRESSED_SIZE 0xc ++#define GRUB_KERNEL_MIPS_QEMU_MIPS_TOTAL_MODULE_SIZE 0x08 ++#define GRUB_KERNEL_MIPS_QEMU_MIPS_PREFIX 0x0c ++#define GRUB_KERNEL_MIPS_QEMU_MIPS_PREFIX_END 0x54 + - #define GRUB_KERNEL_MIPS_TOTAL_MODULE_SIZE 0x08 - #define GRUB_KERNEL_MIPS_PREFIX 0x0c - #define GRUB_KERNEL_MIPS_PREFIX_END 0x54 + #define GRUB_KERNEL_MIPS_ARC_LINK_ADDR 0x8a000000 - #define GRUB_KERNEL_MIPS_YEELOONG_TOTAL_MODULE_SIZE GRUB_KERNEL_MIPS_TOTAL_MODULE_SIZE - #define GRUB_KERNEL_MIPS_YEELOONG_PREFIX GRUB_KERNEL_MIPS_PREFIX - #define GRUB_KERNEL_MIPS_YEELOONG_PREFIX_END GRUB_KERNEL_MIPS_PREFIX_END + #define GRUB_KERNEL_MIPS_ARC_LINK_ALIGN 32 - #define GRUB_KERNEL_MIPS_QEMU_MIPS_TOTAL_MODULE_SIZE GRUB_KERNEL_MIPS_TOTAL_MODULE_SIZE - #define GRUB_KERNEL_MIPS_QEMU_MIPS_PREFIX GRUB_KERNEL_MIPS_PREFIX - #define GRUB_KERNEL_MIPS_QEMU_MIPS_PREFIX_END GRUB_KERNEL_MIPS_PREFIX_END + #define GRUB_KERNEL_MIPS_ARC_COMPRESSED_SIZE 0x8 + #define GRUB_KERNEL_MIPS_ARC_UNCOMPRESSED_SIZE 0xc + + #define GRUB_KERNEL_MIPS_ARC_TOTAL_MODULE_SIZE 0x08 + #define GRUB_KERNEL_MIPS_ARC_PREFIX 0x0c + #define GRUB_KERNEL_MIPS_ARC_PREFIX_END 0x54 /* The offset of GRUB_PREFIX. */ #define GRUB_KERNEL_I386_EFI_PREFIX 0x8 @@@ -158,9 -161,8 +169,9 @@@ #define GRUB_KERNEL_POWERPC_IEEE1275_MOD_ALIGN 0x1000 - #define GRUB_KERNEL_MIPS_MOD_ALIGN 0x1 - #define GRUB_KERNEL_MIPS_YEELOONG_MOD_ALIGN GRUB_KERNEL_MIPS_MOD_ALIGN - #define GRUB_KERNEL_MIPS_QEMU_MIPS_MOD_ALIGN GRUB_KERNEL_MIPS_MOD_ALIGN + #define GRUB_KERNEL_MIPS_LOONGSON_MOD_ALIGN 0x1 + #define GRUB_KERNEL_MIPS_ARC_MOD_ALIGN 0x1 ++#define GRUB_KERNEL_MIPS_QEMU_MIPS_MOD_ALIGN 0x1 /* Minimal gap between _end and the start of the modules. It's a hack for PowerMac to prevent "CLAIM failed" error. The real fix is to diff --cc util/grub-mkimage.c index 53e867602,296f89daf..480521cd6 --- a/util/grub-mkimage.c +++ b/util/grub-mkimage.c @@@ -354,6 -400,48 +400,70 @@@ struct image_target_desc image_targets[ .install_bsd_part = TARGET_NO_FIELD, .link_addr = GRUB_KERNEL_SPARC64_IEEE1275_LINK_ADDR }, + { + .dirname = "ia64-efi", + .names = {"ia64-efi", NULL}, + .voidp_sizeof = 8, + .bigendian = 0, + .id = IMAGE_EFI, + .flags = PLATFORM_FLAGS_NONE, + .prefix = GRUB_KERNEL_IA64_EFI_PREFIX, + .prefix_end = GRUB_KERNEL_IA64_EFI_PREFIX_END, + .raw_size = 0, + .total_module_size = TARGET_NO_FIELD, + .kernel_image_size = TARGET_NO_FIELD, + .compressed_size = TARGET_NO_FIELD, + .section_align = GRUB_PE32_SECTION_ALIGNMENT, + .vaddr_offset = EFI64_HEADER_SIZE, + .install_dos_part = TARGET_NO_FIELD, + .install_bsd_part = TARGET_NO_FIELD, + .pe_target = GRUB_PE32_MACHINE_IA64, + .elf_target = EM_IA_64, + }, + { + .dirname = "mips-arc", + .names = {"mips-arc", NULL}, + .voidp_sizeof = 4, + .bigendian = 1, + .id = IMAGE_MIPS_ARC, + .flags = PLATFORM_FLAGS_DECOMPRESSORS, + .prefix = GRUB_KERNEL_MIPS_ARC_PREFIX, + .prefix_end = GRUB_KERNEL_MIPS_ARC_PREFIX_END, + .raw_size = 0, + .total_module_size = GRUB_KERNEL_MIPS_ARC_TOTAL_MODULE_SIZE, + .compressed_size = TARGET_NO_FIELD, + .kernel_image_size = TARGET_NO_FIELD, + .section_align = 1, + .vaddr_offset = 0, + .install_dos_part = TARGET_NO_FIELD, + .install_bsd_part = TARGET_NO_FIELD, + .link_addr = GRUB_KERNEL_MIPS_ARC_LINK_ADDR, + .elf_target = EM_MIPS, + .link_align = GRUB_KERNEL_MIPS_ARC_LINK_ALIGN, + .default_compression = COMPRESSION_NONE + }, ++ { ++ .dirname = "mips-qemu_mips", ++ .names = { "mips-qemu_mips-elf", NULL }, ++ .voidp_sizeof = 4, ++ .bigendian = 0, ++ .id = IMAGE_LOONGSON_ELF, ++ .flags = PLATFORM_FLAGS_DECOMPRESSORS, ++ .prefix = GRUB_KERNEL_MIPS_QEMU_MIPS_PREFIX, ++ .prefix_end = GRUB_KERNEL_MIPS_QEMU_MIPS_PREFIX_END, ++ .raw_size = 0, ++ .total_module_size = GRUB_KERNEL_MIPS_QEMU_MIPS_TOTAL_MODULE_SIZE, ++ .compressed_size = TARGET_NO_FIELD, ++ .kernel_image_size = TARGET_NO_FIELD, ++ .section_align = 1, ++ .vaddr_offset = 0, ++ .install_dos_part = TARGET_NO_FIELD, ++ .install_bsd_part = TARGET_NO_FIELD, ++ .link_addr = GRUB_KERNEL_MIPS_QEMU_MIPS_LINK_ADDR, ++ .elf_target = EM_MIPS, ++ .link_align = GRUB_KERNEL_MIPS_QEMU_MIPS_LINK_ALIGN, ++ .default_compression = COMPRESSION_NONE ++ }, }; #define grub_target_to_host32(x) (grub_target_to_host32_real (image_target, (x)))