Probably doesn't work on real malta board but is useful for tests to replace
qemu_mips
---
configure.ac | 10 ++-
gentpl.py | 10 +--
grub-core/Makefile.am | 11 +++
grub-core/Makefile.core.def | 12 ++++
grub-core/kern/mips/malta/init.c | 115 ++++++++++++++++++++++++++++++
grub-core/kern/mips/malta/pci.c | 69 ++++++++++++++++++
grub-core/lib/mips/malta/reboot.c | 36 ++++++++++
include/grub/kernel.h | 1 +
include/grub/mips/malta/cmos.h | 30 ++++++++
include/grub/mips/malta/console.h | 22 ++++++
include/grub/mips/malta/kernel.h | 24 +++++++
include/grub/mips/malta/memory.h | 50 +++++++++++++
include/grub/mips/malta/pci.h | 61 ++++++++++++++++
include/grub/mips/malta/serial.h | 24 +++++++
include/grub/mips/malta/time.h | 25 +++++++
include/grub/offsets.h | 8 +++
include/grub/util/install.h | 2 +
tests/ahci_test.in | 3 +
tests/cdboot_test.in | 2 +-
tests/ehci_test.in | 3 +
tests/fddboot_test.in | 2 +-
tests/file_filter_test.in | 2 +-
tests/hddboot_test.in | 2 +-
tests/netboot_test.in | 2 +-
tests/ohci_test.in | 3 +
tests/partmap_test.in | 2 +-
tests/pata_test.in | 3 +
tests/uhci_test.in | 3 +
tests/util/grub-shell.in | 27 +++++++
util/grub-install-common.c | 2 +
util/grub-install.c | 14 ++++
util/grub-mkrescue.c | 4 ++
util/grub-module-verifier.c | 2 +
util/mkimage.c | 36 ++++++++++
34 files changed, 608 insertions(+), 14 deletions(-)
create mode 100644 grub-core/kern/mips/malta/init.c
create mode 100644 grub-core/kern/mips/malta/pci.c
create mode 100644 grub-core/lib/mips/malta/reboot.c
create mode 100644 include/grub/mips/malta/cmos.h
create mode 100644 include/grub/mips/malta/console.h
create mode 100644 include/grub/mips/malta/kernel.h
create mode 100644 include/grub/mips/malta/memory.h
create mode 100644 include/grub/mips/malta/pci.h
create mode 100644 include/grub/mips/malta/serial.h
create mode 100644 include/grub/mips/malta/time.h
diff --git a/configure.ac b/configure.ac
index 34f4f9415..ce338c13f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -187,7 +187,9 @@ case "$target_cpu"-"$platform" in
mips-qemu_mips) ;;
mips-qemu-mips) platform=qemu_mips;;
mips-arc) ;;
+ mips-malta) ;;
mipsel-arc) ;;
+ mipsel-malta) ;;
mipsel-qemu_mips) ;;
mipsel-qemu-mips) platform=qemu_mips;;
mipsel-yeeloong) platform=loongson ;;
@@ -253,6 +255,7 @@ case "$platform" in
emu) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_EMU=1" ;;
loongson) machine_CPPFLAGS="$machine_CPPFLAGS
-DGRUB_MACHINE_MIPS_LOONGSON=1" ;;
qemu_mips) machine_CPPFLAGS="$machine_CPPFLAGS
-DGRUB_MACHINE_MIPS_QEMU_MIPS=1" ;;
+ malta) machine_CPPFLAGS="$machine_CPPFLAGS
-DGRUB_MACHINE_MIPS_MALTA=1" ;;
arc) machine_CPPFLAGS="$machine_CPPFLAGS -DGRUB_MACHINE_ARC=1" ;;
esac
if test x${target_cpu} = xmipsel ; then
@@ -270,7 +273,7 @@ case "${target_cpu}-$platform" in
TARGET_LINK_ADDR=0x80700000
TARGET_DECOMPRESSOR_LINK_ADDR=0x80600000
;;
- mips*-qemu_mips | mips*-loongson)
+ mips*-qemu_mips | mips*-loongson | mips*-malta)
TARGET_DECOMPRESSOR_LINK_ADDR=0x80100000
;;
esac
@@ -1823,7 +1826,7 @@ if test x"$grub_build_mkfont_excuse" = x ; then
else
enable_build_grub_mkfont=no
fi
-if test x"$enable_build_grub_mkfont" = xno && ( test "x$platform" = xqemu ||
test "x$platform" = xloongson || test "x$platform" = xqemu_mips || test
"x$platform" = xcoreboot ); then
+if test x"$enable_build_grub_mkfont" = xno && ( test "x$platform" = xqemu ||
test "x$platform" = xloongson || test "x$platform" = xmalta || test
"x$platform" = xqemu_mips || test "x$platform" = xcoreboot ); then
if test x"$grub_build_mkfont_excuse" = x ; then
AC_MSG_ERROR([qemu, coreboot and loongson ports need build-time
grub-mkfont])
else
@@ -1908,7 +1911,7 @@ if test x"$enable_build_grub_mkfont" = xno ; then
FONT_SOURCE=
fi
-if test "x$FONT_SOURCE" = x && ( test "x$platform" = xqemu || test
"x$platform" = xloongson || test "x$platform" = xqemu_mips || test "x$platform"
= xcoreboot ); then
+if test "x$FONT_SOURCE" = x && ( test "x$platform" = xqemu || test
"x$platform" = xloongson || test "x$platform" = xmalta || test "x$platform" =
xqemu_mips || test "x$platform" = xcoreboot ); then
if test x"$grub_build_mkfont_excuse" = x ; then
AC_MSG_ERROR([qemu, coreboot and loongson ports need unifont])
else
@@ -2182,6 +2185,7 @@ AM_CONDITIONAL([COND_mips], [test x$target_cpu = xmips -o
x$target_cpu = xmipsel
AM_CONDITIONAL([COND_mips_arc], [test "(" x$target_cpu = xmips -o x$target_cpu
= xmipsel ")" -a x$platform = xarc])
AM_CONDITIONAL([COND_mips_loongson], [test x$target_cpu = xmipsel -a
x$platform = xloongson])
AM_CONDITIONAL([COND_mips_qemu_mips], [test "(" x$target_cpu = xmips -o
x$target_cpu = xmipsel ")" -a x$platform = xqemu_mips])
+AM_CONDITIONAL([COND_mips_malta], [test "(" x$target_cpu = xmips -o
x$target_cpu = xmipsel ")" -a x$platform = xmalta])
AM_CONDITIONAL([COND_mipsel], [test x$target_cpu = xmipsel])
AM_CONDITIONAL([COND_mipseb], [test x$target_cpu = xmips])
AM_CONDITIONAL([COND_powerpc_ieee1275], [test x$target_cpu = xpowerpc -a
x$platform = xieee1275])
diff --git a/gentpl.py b/gentpl.py
index d8c6965d8..b375911d0 100644
--- a/gentpl.py
+++ b/gentpl.py
@@ -29,7 +29,7 @@ import re
GRUB_PLATFORMS = [ "emu", "i386_pc", "i386_efi", "i386_qemu", "i386_coreboot",
"i386_multiboot", "i386_ieee1275", "x86_64_efi",
"i386_xen", "x86_64_xen", "i386_xen_pvh",
- "mips_loongson", "sparc64_ieee1275",
+ "mips_loongson", "mips_malta", "sparc64_ieee1275",
"powerpc_ieee1275", "mips_arc", "ia64_efi",
"mips_qemu_mips", "arm_uboot", "arm_efi", "arm64_efi",
"arm_coreboot", "loongarch64_efi", "riscv32_efi",
"riscv64_efi" ]
@@ -42,7 +42,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_loongson", "mips_qemu_mips", "mips_arc" ]
+GROUPS["mips"] = [ "mips_loongson", "mips_qemu_mips", "mips_arc",
"mips_malta" ]
GROUPS["sparc64"] = [ "sparc64_ieee1275" ]
GROUPS["powerpc"] = [ "powerpc_ieee1275" ]
GROUPS["arm"] = [ "arm_uboot", "arm_efi", "arm_coreboot" ]
@@ -63,10 +63,10 @@ GROUPS["coreboot"] = [ "i386_coreboot", "arm_coreboot" ]
GROUPS["noemu"] = GRUB_PLATFORMS[:]; GROUPS["noemu"].remove("emu")
# Groups based on hardware features
-GROUPS["cmos"] = GROUPS["x86"][:] + ["mips_loongson", "mips_qemu_mips",
+GROUPS["cmos"] = GROUPS["x86"][:] + ["mips_loongson", "mips_qemu_mips",
"mips_malta",
"sparc64_ieee1275", "powerpc_ieee1275"]
GROUPS["cmos"].remove("i386_efi"); GROUPS["cmos"].remove("x86_64_efi");
-GROUPS["pci"] = GROUPS["x86"] + ["mips_loongson"]
+GROUPS["pci"] = GROUPS["x86"] + ["mips_loongson", "mips_malta"]
GROUPS["usb"] = GROUPS["pci"] + ["arm_coreboot"]
# If gfxterm is main output console integrate it into kernel
@@ -75,7 +75,7 @@ GROUPS["videomodules"] = GRUB_PLATFORMS[:];
for i in GROUPS["videoinkernel"]: GROUPS["videomodules"].remove(i)
# Similar for terminfo
-GROUPS["terminfoinkernel"] = [ "emu", "mips_loongson", "mips_arc",
"mips_qemu_mips", "i386_xen_pvh" ] + GROUPS["xen"] + GROUPS["ieee1275"] +
GROUPS["uboot"];
+GROUPS["terminfoinkernel"] = [ "emu", "mips_loongson", "mips_arc",
"mips_qemu_mips", "i386_xen_pvh", "mips_malta" ] + GROUPS["xen"] +
GROUPS["ieee1275"] + GROUPS["uboot"];
GROUPS["terminfomodule"] = GRUB_PLATFORMS[:];
for i in GROUPS["terminfoinkernel"]: GROUPS["terminfomodule"].remove(i)
diff --git a/grub-core/Makefile.am b/grub-core/Makefile.am
index e50db8106..db386af5c 100644
--- a/grub-core/Makefile.am
+++ b/grub-core/Makefile.am
@@ -216,6 +216,17 @@ KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lib/arg.h
endif
+if COND_mips_malta
+#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/machine/pci.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/serial.h
+#KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/loader.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/terminfo.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/extcmd.h
+KERNEL_HEADER_FILES += $(top_srcdir)/include/grub/lib/arg.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
diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def
index f70e02e69..482ed4d7b 100644
--- a/grub-core/Makefile.core.def
+++ b/grub-core/Makefile.core.def
@@ -103,6 +103,7 @@ kernel = {
sparc64_ieee1275_ldflags = '-Wl,-Ttext,0x4400';
mips_arc_ldflags = '-Wl,-Ttext,$(TARGET_LINK_ADDR)';
mips_qemu_mips_ldflags = '-Wl,-Ttext,0x80200000';
+ mips_malta_ldflags = '-Wl,-Ttext,0x80200000';
mips_arc_cppflags =
'-DGRUB_DECOMPRESSOR_LINK_ADDR=$(TARGET_DECOMPRESSOR_LINK_ADDR)';
i386_qemu_cppflags =
'-DGRUB_BOOT_MACHINE_LINK_ADDR=$(GRUB_BOOT_MACHINE_LINK_ADDR)';
@@ -297,6 +298,12 @@ kernel = {
mips = kern/mips/dl.c;
mips = kern/mips/init.c;
+ mips_malta = kern/mips/malta/init.c;
+ mips_malta = term/ns8250.c;
+ mips_malta = term/serial.c;
+ mips_malta = kern/mips/malta/pci.c;
+ mips_malta = bus/pci.c;
+
mips_qemu_mips = kern/mips/qemu_mips/init.c;
mips_qemu_mips = term/ns8250.c;
mips_qemu_mips = term/serial.c;
@@ -605,7 +612,9 @@ module = {
module = {
name = cs5536;
x86 = bus/cs5536.c;
+ mips_malta = bus/cs5536.c;
enable = x86;
+ enable = mips_malta;
};
module = {
@@ -854,6 +863,7 @@ module = {
enable = sparc64_ieee1275;
enable = powerpc_ieee1275;
enable = mips_arc;
+ enable = mips_malta;
enable = ia64_efi;
enable = arm_efi;
enable = arm64_efi;
@@ -960,6 +970,7 @@ module = {
mips_arc = lib/mips/arc/reboot.c;
mips_loongson = lib/mips/loongson/reboot.c;
mips_qemu_mips = lib/mips/qemu_mips/reboot.c;
+ mips_malta = lib/mips/malta/reboot.c;
xen = lib/xen/reboot.c;
i386_xen_pvh = lib/xen/reboot.c;
uboot = lib/uboot/reboot.c;
@@ -2476,6 +2487,7 @@ module = {
name = keylayouts;
common = commands/keylayouts.c;
enable = x86;
+ enable = mips_malta;
};
module = {
diff --git a/grub-core/kern/mips/malta/init.c b/grub-core/kern/mips/malta/init.c
new file mode 100644
index 000000000..b1944a042
--- /dev/null
+++ b/grub-core/kern/mips/malta/init.c
@@ -0,0 +1,115 @@
+#include <grub/kernel.h>
+#include <grub/misc.h>
+#include <grub/env.h>
+#include <grub/time.h>
+#include <grub/types.h>
+#include <grub/misc.h>
+#include <grub/mm.h>
+#include <grub/time.h>
+#include <grub/machine/memory.h>
+#include <grub/machine/kernel.h>
+#include <grub/machine/console.h>
+#include <grub/machine/pci.h>
+#include <grub/cpu/memory.h>
+#include <grub/memory.h>
+#include <grub/video.h>
+#include <grub/terminfo.h>
+#include <grub/keyboard_layouts.h>
+#include <grub/serial.h>
+#include <grub/loader.h>
+#include <grub/at_keyboard.h>
+
+static inline int
+probe_mem (grub_addr_t addr)
+{
+ volatile grub_uint8_t *ptr = (grub_uint8_t *) (0xa0000000 | addr);
+ grub_uint8_t c = *ptr;
+ *ptr = 0xAA;
+ if (*ptr != 0xAA)
+ return 0;
+ *ptr = 0x55;
+ if (*ptr != 0x55)
+ return 0;
+ *ptr = c;
+ return 1;
+}
+
+void
+grub_machine_init (void)
+{
+ grub_addr_t modend;
+
+ grub_arch_memsize = 128 * 0x100000;
+
+ /* FIXME: measure this. */
+ grub_arch_cpuclock = 300000000;
+
+ modend = grub_modules_get_end ();
+ grub_mm_init_region ((void *) modend, grub_arch_memsize
+ - (modend - GRUB_ARCH_LOWMEMVSTART));
+
+ grub_install_get_time_ms (grub_rtc_get_time_ms);
+
+ /* grub_keylayouts_init ();
+ grub_at_keyboard_init ();
+
+ grub_qemu_init_cirrus ();
+ grub_vga_text_init ();*/
+
+ grub_terminfo_init ();
+ grub_serial_init ();
+
+ // grub_boot_init ();
+}
+
+void
+grub_machine_fini (int flags __attribute__ ((unused)))
+{
+}
+
+void
+grub_exit (void)
+{
+ grub_halt ();
+}
+
+static int
+grub_shutdown_pci_iter (grub_pci_device_t dev, grub_pci_id_t pciid,
+ void *data __attribute__ ((unused)))
+{
+ /* QEMU. */
+ if (pciid == 0x71138086)
+ {
+ grub_pci_address_t addr;
+ addr = grub_pci_make_address (dev, 0x40);
+ grub_pci_write (addr, 0x7001);
+ addr = grub_pci_make_address (dev, 0x80);
+ grub_pci_write (addr, grub_pci_read (addr) | 1);
+ grub_outw (0x2000, GRUB_MACHINE_PCI_IO_BASE + 0x7004);
+ }
+ return 0;
+}
+
+void
+grub_halt (void)
+{
+ grub_pci_iterate (grub_shutdown_pci_iter, NULL);
+ while (1);
+}
+
+grub_err_t
+grub_machine_mmap_iterate (grub_memory_hook_t hook, void *hook_data)
+{
+ hook (0, grub_arch_memsize, GRUB_MEMORY_AVAILABLE, hook_data);
+ return GRUB_ERR_NONE;
+}
+
+void
+grub_machine_get_bootlocation (char **device __attribute__ ((unused)),
+ char **path __attribute__ ((unused)))
+{
+}
+
+extern char _end[];
+grub_addr_t grub_modbase = (grub_addr_t) _end;
+
diff --git a/grub-core/kern/mips/malta/pci.c b/grub-core/kern/mips/malta/pci.c
new file mode 100644
index 000000000..299be26b7
--- /dev/null
+++ b/grub-core/kern/mips/malta/pci.c
@@ -0,0 +1,69 @@
+#include <grub/pci.h>
+#include <grub/machine/pci.h>
+
+static volatile grub_uint32_t *cfg_addr = (volatile grub_uint32_t *)
0xbbe00cf8;
+static volatile grub_uint32_t *cfg_data = (volatile grub_uint32_t *)
0xbbe00cfc;
+
+grub_uint32_t
+grub_pci_read (grub_pci_address_t addr)
+{
+ *cfg_addr = addr & ~3;
+ return *cfg_data;
+}
+
+grub_uint16_t
+grub_pci_read_word (grub_pci_address_t addr)
+{
+ *cfg_addr = addr & ~3;
+ return *((volatile grub_uint16_t *) cfg_data + ((addr & 2) >> 1));
+}
+
+grub_uint8_t
+grub_pci_read_byte (grub_pci_address_t addr)
+{
+ *cfg_addr = addr & ~3;
+ return *((volatile grub_uint8_t *) cfg_data + (addr & 3));
+}
+
+void
+grub_pci_write (grub_pci_address_t addr, grub_uint32_t data)
+{
+ *cfg_addr = addr & ~3;
+ *cfg_data = data;
+}
+
+void
+grub_pci_write_word (grub_pci_address_t addr, grub_uint16_t data)
+{
+ *cfg_addr = addr & ~3;
+ *((volatile grub_uint16_t *) cfg_data + ((addr & 2) >> 1)) = data;
+}
+
+void
+grub_pci_write_byte (grub_pci_address_t addr, grub_uint8_t data)
+{
+ *cfg_addr = addr & ~3;
+ *((volatile grub_uint8_t *) cfg_data + (addr & 3)) = data;
+}
+
+volatile void *
+grub_pci_device_map_range (grub_pci_device_t dev __attribute__ ((unused)),
+ grub_addr_t base, grub_size_t size __attribute__
((unused)))
+{
+ return (volatile void *)(0xa0000000 | base);
+}
+
+void *
+grub_pci_device_map_range_cached (grub_pci_device_t dev,
+ grub_addr_t base, grub_size_t size)
+{
+ return (void *) (((grub_addr_t) grub_pci_device_map_range (dev, base, size))
+ & ~0x20000000);
+}
+
+void
+grub_pci_device_unmap_range (grub_pci_device_t dev __attribute__ ((unused)),
+ volatile void *mem __attribute__ ((unused)),
+ grub_size_t size __attribute__ ((unused)))
+{
+}
diff --git a/grub-core/lib/mips/malta/reboot.c
b/grub-core/lib/mips/malta/reboot.c
new file mode 100644
index 000000000..4b4af3298
--- /dev/null
+++ b/grub-core/lib/mips/malta/reboot.c
@@ -0,0 +1,36 @@
+/*
+ * GRUB -- GRand Unified Bootloader
+ * Copyright (C) 2011 Free Software Foundation, Inc.
+ *
+ * GRUB is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GRUB is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <grub/machine/kernel.h>
+#include <grub/machine/memory.h>
+#include <grub/machine/pci.h>
+#include <grub/misc.h>
+#include <grub/time.h>
+#include <grub/term.h>
+#include <grub/i18n.h>
+
+void
+grub_reboot (void)
+{
+ grub_outl (0x42, 0xbf000500);
+ grub_millisleep (1500);
+
+ grub_puts_ (N_("Reboot failed"));
+ grub_refresh ();
+ while (1);
+}
diff --git a/include/grub/kernel.h b/include/grub/kernel.h
index 6121c1e66..bd1a9ebd5 100644
--- a/include/grub/kernel.h
+++ b/include/grub/kernel.h
@@ -80,6 +80,7 @@ struct grub_module_info64
#if defined (GRUB_MACHINE_PCBIOS) || defined (GRUB_MACHINE_COREBOOT) \
|| defined (GRUB_MACHINE_MULTIBOOT) || defined (GRUB_MACHINE_MIPS_QEMU_MIPS)
\
+ || defined (GRUB_MACHINE_MIPS_MALTA) \
|| defined (GRUB_MACHINE_MIPS_LOONGSON) || defined (GRUB_MACHINE_ARC) \
|| (defined (__sparc__) && defined (GRUB_MACHINE_IEEE1275)) \
|| defined (GRUB_MACHINE_UBOOT) || defined (GRUB_MACHINE_XEN) \
diff --git a/include/grub/mips/malta/cmos.h b/include/grub/mips/malta/cmos.h
new file mode 100644
index 000000000..90e51af5e
--- /dev/null
+++ b/include/grub/mips/malta/cmos.h
@@ -0,0 +1,30 @@
+/*
+ * GRUB -- GRand Unified Bootloader
+ * Copyright (C) 2008 Free Software Foundation, Inc.
+ *
+ * GRUB is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GRUB is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef GRUB_CPU_CMOS_H
+#define GRUB_CPU_CMOS_H 1
+
+#include <grub/types.h>
+#include <grub/cpu/io.h>
+
+#define GRUB_CMOS_ADDR_REG 0xb8000070
+#define GRUB_CMOS_DATA_REG 0xb8000071
+#define GRUB_CMOS_ADDR_REG_HI 0xb8000072
+#define GRUB_CMOS_DATA_REG_HI 0xb8000073
+
+#endif /* GRUB_CPU_CMOS_H */
diff --git a/include/grub/mips/malta/console.h
b/include/grub/mips/malta/console.h
new file mode 100644
index 000000000..eb1a5781b
--- /dev/null
+++ b/include/grub/mips/malta/console.h
@@ -0,0 +1,22 @@
+/*
+ * GRUB -- GRand Unified Bootloader
+ * Copyright (C) 2009 Free Software Foundation, Inc.
+ *
+ * GRUB is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GRUB is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef GRUB_MACHINE_CONSOLE_HEADER
+#define GRUB_MACHINE_CONSOLE_HEADER 1
+
+#endif /* ! GRUB_MACHINE_CONSOLE_HEADER */
diff --git a/include/grub/mips/malta/kernel.h b/include/grub/mips/malta/kernel.h
new file mode 100644
index 000000000..bddc80416
--- /dev/null
+++ b/include/grub/mips/malta/kernel.h
@@ -0,0 +1,24 @@
+/*
+ * GRUB -- GRand Unified Bootloader
+ * Copyright (C) 2005,2006,2007,2008,2009 Free Software Foundation, Inc.
+ *
+ * GRUB is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GRUB is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef GRUB_KERNEL_MACHINE_HEADER
+#define GRUB_KERNEL_MACHINE_HEADER 1
+
+#include <grub/symbol.h>
+
+#endif
diff --git a/include/grub/mips/malta/memory.h b/include/grub/mips/malta/memory.h
new file mode 100644
index 000000000..29b04a5ad
--- /dev/null
+++ b/include/grub/mips/malta/memory.h
@@ -0,0 +1,50 @@
+/*
+ * GRUB -- GRand Unified Bootloader
+ * Copyright (C) 2009 Free Software Foundation, Inc.
+ *
+ * GRUB is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GRUB is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef GRUB_MEMORY_MACHINE_HEADER
+#define GRUB_MEMORY_MACHINE_HEADER 1
+
+#ifndef ASM_FILE
+#include <grub/symbol.h>
+#include <grub/err.h>
+#include <grub/types.h>
+#endif
+
+#define GRUB_MACHINE_MEMORY_STACK_HIGH 0x80f00000
+#define GRUB_MACHINE_MEMORY_USABLE 0x81000000
+
+#ifndef ASM_FILE
+
+extern grub_uint32_t grub_arch_memsize __attribute__ ((section(".text")));
+
+static inline grub_err_t
+grub_machine_mmap_register (grub_uint64_t start __attribute__ ((unused)),
+ grub_uint64_t size __attribute__ ((unused)),
+ int type __attribute__ ((unused)),
+ int handle __attribute__ ((unused)))
+{
+ return GRUB_ERR_NONE;
+}
+static inline grub_err_t
+grub_machine_mmap_unregister (int handle __attribute__ ((unused)))
+{
+ return GRUB_ERR_NONE;
+}
+#endif
+
+#endif
diff --git a/include/grub/mips/malta/pci.h b/include/grub/mips/malta/pci.h
new file mode 100644
index 000000000..ca85279d9
--- /dev/null
+++ b/include/grub/mips/malta/pci.h
@@ -0,0 +1,61 @@
+/*
+ * GRUB -- GRand Unified Bootloader
+ * Copyright (C) 2008 Free Software Foundation, Inc.
+ *
+ * GRUB is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GRUB is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef GRUB_MACHINE_PCI_H
+#define GRUB_MACHINE_PCI_H 1
+
+#include <grub/types.h>
+#include <grub/cpu/io.h>
+#include <grub/pci.h>
+
+#define GRUB_MACHINE_PCI_IO_BASE 0xb8000000
+
+grub_uint32_t
+EXPORT_FUNC (grub_pci_read) (grub_pci_address_t addr);
+
+grub_uint16_t
+EXPORT_FUNC (grub_pci_read_word) (grub_pci_address_t addr);
+
+grub_uint8_t
+EXPORT_FUNC (grub_pci_read_byte) (grub_pci_address_t addr);
+
+void
+EXPORT_FUNC (grub_pci_write) (grub_pci_address_t addr, grub_uint32_t data);
+
+void
+EXPORT_FUNC (grub_pci_write_word) (grub_pci_address_t addr, grub_uint16_t
data);
+
+void
+EXPORT_FUNC (grub_pci_write_byte) (grub_pci_address_t addr, grub_uint8_t data);
+
+volatile void *
+EXPORT_FUNC (grub_pci_device_map_range) (grub_pci_device_t dev,
+ grub_addr_t base, grub_size_t size);
+void *
+EXPORT_FUNC (grub_pci_device_map_range_cached) (grub_pci_device_t dev,
+ grub_addr_t base,
+ grub_size_t size);
+void
+EXPORT_FUNC (grub_pci_device_unmap_range) (grub_pci_device_t dev,
+ volatile void *mem,
+ grub_size_t size);
+
+#define GRUB_PCI_NUM_DEVICES 32
+#define GRUB_PCI_NUM_BUS 256
+
+#endif
diff --git a/include/grub/mips/malta/serial.h b/include/grub/mips/malta/serial.h
new file mode 100644
index 000000000..bee041d53
--- /dev/null
+++ b/include/grub/mips/malta/serial.h
@@ -0,0 +1,24 @@
+/*
+ * GRUB -- GRand Unified Bootloader
+ * Copyright (C) 2009 Free Software Foundation, Inc.
+ *
+ * GRUB is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GRUB is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef GRUB_MACHINE_SERIAL_HEADER
+#define GRUB_MACHINE_SERIAL_HEADER 1
+
+#define GRUB_MACHINE_SERIAL_PORTS { 0xb80003f8 }
+
+#endif
diff --git a/include/grub/mips/malta/time.h b/include/grub/mips/malta/time.h
new file mode 100644
index 000000000..164b61ef8
--- /dev/null
+++ b/include/grub/mips/malta/time.h
@@ -0,0 +1,25 @@
+/*
+ * GRUB -- GRand Unified Bootloader
+ * Copyright (C) 2003,2004,2005,2007 Free Software Foundation, Inc.
+ *
+ * GRUB is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GRUB is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KERNEL_MACHINE_TIME_HEADER
+#define KERNEL_MACHINE_TIME_HEADER 1
+
+#include <grub/symbol.h>
+#include <grub/cpu/time.h>
+
+#endif /* ! KERNEL_MACHINE_TIME_HEADER */
diff --git a/include/grub/offsets.h b/include/grub/offsets.h
index 442dc31de..a77be45ea 100644
--- a/include/grub/offsets.h
+++ b/include/grub/offsets.h
@@ -82,6 +82,13 @@
#define GRUB_DECOMPRESSOR_MIPS_QEMU_MIPS_UNCOMPRESSED_ADDR 0x10
#define GRUB_KERNEL_MIPS_QEMU_MIPS_TOTAL_MODULE_SIZE 0x08
+#define GRUB_KERNEL_MIPS_MALTA_LINK_ADDR 0x80200000
+#define GRUB_KERNEL_MIPS_MALTA_LINK_ALIGN 32
+#define GRUB_DECOMPRESSOR_MIPS_MALTA_COMPRESSED_SIZE 0x8
+#define GRUB_DECOMPRESSOR_MIPS_MALTA_UNCOMPRESSED_SIZE 0xc
+#define GRUB_DECOMPRESSOR_MIPS_MALTA_UNCOMPRESSED_ADDR 0x10
+#define GRUB_KERNEL_MIPS_MALTA_TOTAL_MODULE_SIZE 0x08
+
#define GRUB_KERNEL_MIPS_ARC_LINK_ADDR 0x88200000
#define GRUB_KERNEL_MIPSEL_ARC_LINK_ADDR 0x80700000
#define GRUB_KERNEL_MIPS_ARC_LINK_ALIGN 32
@@ -121,6 +128,7 @@
#define GRUB_KERNEL_MIPS_LOONGSON_MOD_ALIGN 0x4
#define GRUB_KERNEL_MIPS_ARC_MOD_ALIGN 0x4
#define GRUB_KERNEL_MIPS_QEMU_MIPS_MOD_ALIGN 0x4
+#define GRUB_KERNEL_MIPS_MALTA_MOD_ALIGN 0x4
#define GRUB_KERNEL_ARM_UBOOT_MOD_ALIGN 0x8
#define GRUB_KERNEL_ARM_UBOOT_TOTAL_MODULE_SIZE 0x4
diff --git a/include/grub/util/install.h b/include/grub/util/install.h
index 5c0a52ca2..f59a19780 100644
--- a/include/grub/util/install.h
+++ b/include/grub/util/install.h
@@ -112,6 +112,8 @@ enum grub_install_plat
GRUB_INSTALL_PLATFORM_LOONGARCH64_EFI,
GRUB_INSTALL_PLATFORM_RISCV32_EFI,
GRUB_INSTALL_PLATFORM_RISCV64_EFI,
+ GRUB_INSTALL_PLATFORM_MIPSEL_MALTA,
+ GRUB_INSTALL_PLATFORM_MIPS_MALTA,
GRUB_INSTALL_PLATFORM_MAX
};
diff --git a/tests/ahci_test.in b/tests/ahci_test.in
index 70646a24e..e65bef89a 100644
--- a/tests/ahci_test.in
+++ b/tests/ahci_test.in
@@ -29,6 +29,9 @@ case "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" in
# PLATFORM: no AHCI on ARC and qemu-mips platforms
mips*-arc | mips*-qemu_mips)
exit 77;;
+ # Not supported yet
+ mips*-malta)
+ exit 77;;
# FIXME: No native drivers are available for those
powerpc-ieee1275 | sparc64-ieee1275 | arm*-efi | loongarch64-efi)
exit 77;;
diff --git a/tests/cdboot_test.in b/tests/cdboot_test.in
index f00cdec58..46dcc3acd 100644
--- a/tests/cdboot_test.in
+++ b/tests/cdboot_test.in
@@ -24,7 +24,7 @@ case "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" in
*-emu)
exit 77;;
# PLATFORM: Flash targets
- i386-qemu | i386-coreboot | mips-qemu_mips | mipsel-qemu_mips)
+ mips-malta | mipsel-malta | i386-qemu | i386-coreboot | mips-qemu_mips |
mipsel-qemu_mips)
exit 77;;
# FIXME: currently grub-shell uses only -kernel for loongson
mipsel-loongson)
diff --git a/tests/ehci_test.in b/tests/ehci_test.in
index bf823a5de..037eaf499 100644
--- a/tests/ehci_test.in
+++ b/tests/ehci_test.in
@@ -29,6 +29,9 @@ case "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" in
# PLATFORM: no USB on ARC and qemu-mips platforms
mips*-arc | mips*-qemu_mips)
exit 77;;
+ # Not supported yet
+ mips*-malta)
+ exit 77;;
# FIXME: No native drivers are available for those
powerpc-ieee1275 | sparc64-ieee1275 | arm*-efi | loongarch64-efi)
exit 77;;
diff --git a/tests/fddboot_test.in b/tests/fddboot_test.in
index 6ef49efcb..c6ea2883e 100644
--- a/tests/fddboot_test.in
+++ b/tests/fddboot_test.in
@@ -24,7 +24,7 @@ case "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" in
*-emu)
exit 77;;
# PLATFORM: Flash targets
- i386-qemu | i386-coreboot | mips-qemu_mips | mipsel-qemu_mips)
+ mips-malta | mipsel-malta | i386-qemu | i386-coreboot | mips-qemu_mips |
mipsel-qemu_mips)
exit 77;;
# FIXME: currently grub-shell uses only -kernel for loongson
mipsel-loongson)
diff --git a/tests/file_filter_test.in b/tests/file_filter_test.in
index ed6abcb5a..826b45699 100644
--- a/tests/file_filter_test.in
+++ b/tests/file_filter_test.in
@@ -50,7 +50,7 @@ case "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" in
*-emu)
exit 0;;
# PLATFORM: Flash targets
- i386-qemu | i386-coreboot | mips-qemu_mips | mipsel-qemu_mips)
+ i386-qemu | i386-coreboot | mips-malta | mipsel-malta | mips-qemu_mips |
mipsel-qemu_mips)
exit 0;;
# FIXME: currently grub-shell uses only -kernel for loongson
mipsel-loongson)
diff --git a/tests/hddboot_test.in b/tests/hddboot_test.in
index 764e0da1c..430390acd 100644
--- a/tests/hddboot_test.in
+++ b/tests/hddboot_test.in
@@ -24,7 +24,7 @@ case "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" in
*-emu)
exit 77;;
# PLATFORM: Flash targets
- i386-qemu | i386-coreboot | mips-qemu_mips | mipsel-qemu_mips)
+ mips-malta | mipsel-malta | i386-qemu | i386-coreboot | mips-qemu_mips |
mipsel-qemu_mips)
exit 77;;
# FIXME: currently grub-shell uses only -kernel for loongson
mipsel-loongson)
diff --git a/tests/netboot_test.in b/tests/netboot_test.in
index 510c9c34b..9b87adfa4 100644
--- a/tests/netboot_test.in
+++ b/tests/netboot_test.in
@@ -24,7 +24,7 @@ case "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" in
*-emu)
exit 77;;
# PLATFORM: Flash targets
- i386-qemu | i386-coreboot | mips-qemu_mips | mipsel-qemu_mips)
+ mips-malta | mipsel-malta | i386-qemu | i386-coreboot | mips-qemu_mips |
mipsel-qemu_mips)
exit 77;;
# FIXME: currently grub-shell uses only -kernel for loongson
mipsel-loongson)
diff --git a/tests/ohci_test.in b/tests/ohci_test.in
index a40d3bc0a..9be52d482 100644
--- a/tests/ohci_test.in
+++ b/tests/ohci_test.in
@@ -29,6 +29,9 @@ case "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" in
# PLATFORM: no USB on ARC and qemu-mips platforms
mips*-arc | mips*-qemu_mips)
exit 77;;
+ # Not supported yet
+ mips*-malta)
+ exit 77;;
# FIXME: No native drivers are available for those
powerpc-ieee1275 | sparc64-ieee1275 | arm*-efi | loongarch64-efi)
exit 77;;
diff --git a/tests/partmap_test.in b/tests/partmap_test.in
index 4138e88fe..f71cdaabe 100644
--- a/tests/partmap_test.in
+++ b/tests/partmap_test.in
@@ -66,7 +66,7 @@ list_parts () {
}
case "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" in
- mips-qemu_mips | mipsel-qemu_mips | i386-qemu | i386-multiboot |
i386-coreboot | mipsel-loongson)
+ mips-malta | mipsel-malta | mips-qemu_mips | mipsel-qemu_mips | i386-qemu
| i386-multiboot | i386-coreboot | mipsel-loongson)
disk=ata0
;;
powerpc-ieee1275)
diff --git a/tests/pata_test.in b/tests/pata_test.in
index 4d0e7d573..253a82d60 100644
--- a/tests/pata_test.in
+++ b/tests/pata_test.in
@@ -39,6 +39,9 @@ case "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" in
disk=hdb
indisk=ata1
;;
+ # Test fails even though ata works. Disable for now
+ mips*-malta)
+ exit 77;;
esac
imgfile="`mktemp "${TMPDIR:-/tmp}/tmp.XXXXXXXXXX"`" || exit 99
diff --git a/tests/uhci_test.in b/tests/uhci_test.in
index de199a281..a8295a3cf 100644
--- a/tests/uhci_test.in
+++ b/tests/uhci_test.in
@@ -29,6 +29,9 @@ case "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" in
# PLATFORM: no USB on ARC and qemu-mips platforms
mips*-arc | mips*-qemu_mips)
exit 77;;
+ # Not supported yet
+ mips*-malta)
+ exit 77;;
# FIXME: No native drivers are available for those
powerpc-ieee1275 | sparc64-ieee1275 | arm*-efi | loongarch64-efi)
exit 77;;
diff --git a/tests/util/grub-shell.in b/tests/util/grub-shell.in
index 15c5f45a5..369af2894 100644
--- a/tests/util/grub-shell.in
+++ b/tests/util/grub-shell.in
@@ -118,6 +118,14 @@ case "${grub_modinfo_target_cpu}-${grub_modinfo_platform}"
in
qemuopts="-M mips $qemuopts"
console=vga_text
;;
+
+ mips-malta)
+ boot=malta
+ qemu=qemu-system-mips
+ qemuopts="-M malta $qemuopts"
+ console=
+ trim=1
+ ;;
mips-arc)
boot=cd
qemu=qemu-system-mips64
@@ -141,6 +149,13 @@ case "${grub_modinfo_target_cpu}-${grub_modinfo_platform}"
in
qemuopts="-M mips $qemuopts"
console=vga_text
;;
+ mipsel-malta)
+ boot=mipsel_malta
+ qemu=qemu-system-mipsel
+ qemuopts="-M malta $qemuopts"
+ console=
+ trim=1
+ ;;
mipsel-loongson)
boot=mipsel_fulong2e
qemu=qemu-system-mips64el
@@ -421,7 +436,9 @@ for option in "$@"; do
elif [ "$dev" = "qemu" ] ; then boot=qemu;
elif [ "$dev" = "coreboot" ] ; then boot=coreboot;
elif [ "$dev" = "mips_qemu" ] ; then boot=mips_qemu;
+ elif [ "$dev" = "mips_malta" ] ; then boot=mips_malta;
elif [ "$dev" = "mipsel_qemu" ] ; then boot=mipsel_qemu;
+ elif [ "$dev" = "mipsel_malta" ] ; then boot=mipsel_malta;
elif [ "$dev" = "mipsel_fulong2e" ] ; then boot=mipsel_fulong2e;
else
echo "Unrecognized boot method \`$dev'" 1>&2
@@ -585,6 +602,11 @@ if [ x$boot = xmipsel_qemu ]; then
device="cdrom "
fi
+if [ x$boot = xmipsel_malta ]; then
+ bootdev="-kernel ${rom_directory}/mipsel-malta.elf"
+ device="cdrom "
+fi
+
if [ x$boot = xmipsel_fulong2e ]; then
bootdev="-kernel ${rom_directory}/mipsel-loongson.elf -append
machtype=lemote-fuloong-2e"
device="cdrom "
@@ -595,6 +617,11 @@ if [ x$boot = xmips_qemu ]; then
device="cdrom "
fi
+if [ x$boot = xmips_malta ]; then
+ bootdev="-kernel ${rom_directory}/mips-malta.elf"
+ device="cdrom "
+fi
+
if [ x$boot = xcoreboot ]; then
imgfile="$work_directory/coreboot.img"
cp "${GRUB_COREBOOT_ROM}" "${imgfile}"
diff --git a/util/grub-install-common.c b/util/grub-install-common.c
index 22bccb6a3..48d9d652d 100644
--- a/util/grub-install-common.c
+++ b/util/grub-install-common.c
@@ -916,6 +916,8 @@ static struct
[GRUB_INSTALL_PLATFORM_I386_XEN_PVH] = { "i386", "xen_pvh" },
[GRUB_INSTALL_PLATFORM_MIPSEL_LOONGSON] = { "mipsel", "loongson" },
[GRUB_INSTALL_PLATFORM_MIPSEL_QEMU_MIPS] = { "mipsel", "qemu_mips" },
+ [GRUB_INSTALL_PLATFORM_MIPSEL_MALTA] = { "mipsel", "malta" },
+ [GRUB_INSTALL_PLATFORM_MIPS_MALTA] = { "mips", "malta" },
[GRUB_INSTALL_PLATFORM_MIPS_QEMU_MIPS] = { "mips", "qemu_mips" },
[GRUB_INSTALL_PLATFORM_MIPSEL_ARC] = { "mipsel", "arc" },
[GRUB_INSTALL_PLATFORM_MIPS_ARC] = { "mips", "arc" },
diff --git a/util/grub-install.c b/util/grub-install.c
index 7dc5657bb..bf3caa60b 100644
--- a/util/grub-install.c
+++ b/util/grub-install.c
@@ -503,6 +503,8 @@ have_bootdev (enum grub_install_plat pl)
case GRUB_INSTALL_PLATFORM_I386_MULTIBOOT:
case GRUB_INSTALL_PLATFORM_MIPSEL_QEMU_MIPS:
case GRUB_INSTALL_PLATFORM_MIPS_QEMU_MIPS:
+ case GRUB_INSTALL_PLATFORM_MIPSEL_MALTA:
+ case GRUB_INSTALL_PLATFORM_MIPS_MALTA:
case GRUB_INSTALL_PLATFORM_MIPSEL_LOONGSON:
case GRUB_INSTALL_PLATFORM_ARM_UBOOT:
@@ -948,6 +950,8 @@ main (int argc, char *argv[])
case GRUB_INSTALL_PLATFORM_MIPSEL_LOONGSON:
case GRUB_INSTALL_PLATFORM_MIPSEL_QEMU_MIPS:
case GRUB_INSTALL_PLATFORM_MIPS_QEMU_MIPS:
+ case GRUB_INSTALL_PLATFORM_MIPSEL_MALTA:
+ case GRUB_INSTALL_PLATFORM_MIPS_MALTA:
disk_module = xstrdup ("native");
break;
@@ -987,6 +991,8 @@ main (int argc, char *argv[])
case GRUB_INSTALL_PLATFORM_MIPSEL_LOONGSON:
case GRUB_INSTALL_PLATFORM_MIPSEL_QEMU_MIPS:
case GRUB_INSTALL_PLATFORM_MIPS_QEMU_MIPS:
+ case GRUB_INSTALL_PLATFORM_MIPSEL_MALTA:
+ case GRUB_INSTALL_PLATFORM_MIPS_MALTA:
case GRUB_INSTALL_PLATFORM_I386_XEN:
case GRUB_INSTALL_PLATFORM_X86_64_XEN:
case GRUB_INSTALL_PLATFORM_I386_XEN_PVH:
@@ -1535,6 +1541,8 @@ main (int argc, char *argv[])
case GRUB_INSTALL_PLATFORM_I386_MULTIBOOT:
case GRUB_INSTALL_PLATFORM_MIPSEL_QEMU_MIPS:
case GRUB_INSTALL_PLATFORM_MIPS_QEMU_MIPS:
+ case GRUB_INSTALL_PLATFORM_MIPSEL_MALTA:
+ case GRUB_INSTALL_PLATFORM_MIPS_MALTA:
g = grub_util_guess_baremetal_drive (*curdev);
break;
case GRUB_INSTALL_PLATFORM_MIPS_ARC:
@@ -1623,6 +1631,8 @@ main (int argc, char *argv[])
case GRUB_INSTALL_PLATFORM_MIPSEL_LOONGSON:
case GRUB_INSTALL_PLATFORM_MIPSEL_QEMU_MIPS:
case GRUB_INSTALL_PLATFORM_MIPS_QEMU_MIPS:
+ case GRUB_INSTALL_PLATFORM_MIPSEL_MALTA:
+ case GRUB_INSTALL_PLATFORM_MIPS_MALTA:
core_name = "core.elf";
snprintf (mkimage_target, sizeof (mkimage_target),
"%s-%s-elf",
@@ -1734,6 +1744,8 @@ main (int argc, char *argv[])
case GRUB_INSTALL_PLATFORM_I386_XEN:
case GRUB_INSTALL_PLATFORM_X86_64_XEN:
case GRUB_INSTALL_PLATFORM_I386_XEN_PVH:
+ case GRUB_INSTALL_PLATFORM_MIPSEL_MALTA:
+ case GRUB_INSTALL_PLATFORM_MIPS_MALTA:
break;
/* pacify warning. */
case GRUB_INSTALL_PLATFORM_MAX:
@@ -2025,6 +2037,8 @@ main (int argc, char *argv[])
case GRUB_INSTALL_PLATFORM_I386_XEN:
case GRUB_INSTALL_PLATFORM_X86_64_XEN:
case GRUB_INSTALL_PLATFORM_I386_XEN_PVH:
+ case GRUB_INSTALL_PLATFORM_MIPSEL_MALTA:
+ case GRUB_INSTALL_PLATFORM_MIPS_MALTA:
grub_util_warn ("%s",
_("WARNING: no platform-specific install was performed"));
break;
diff --git a/util/grub-mkrescue.c b/util/grub-mkrescue.c
index 6dc71a8a1..82b9c247e 100644
--- a/util/grub-mkrescue.c
+++ b/util/grub-mkrescue.c
@@ -967,6 +967,7 @@ main (int argc, char *argv[])
grub_install_push_module ("pata");
make_image (GRUB_INSTALL_PLATFORM_MIPSEL_QEMU_MIPS, "mipsel-qemu_mips-elf",
"roms/mipsel-qemu_mips.elf");
+ make_image (GRUB_INSTALL_PLATFORM_MIPSEL_MALTA, "mipsel-malta-elf",
"roms/mipsel-malta.elf");
make_image (GRUB_INSTALL_PLATFORM_MIPSEL_LOONGSON, "mipsel-loongson-elf",
"loongson.elf");
@@ -974,6 +975,7 @@ main (int argc, char *argv[])
make_image (GRUB_INSTALL_PLATFORM_MIPSEL_LOONGSON, "mipsel-fuloong2f-flash",
"mipsel-fuloong2f.bin");
make_image (GRUB_INSTALL_PLATFORM_MIPS_QEMU_MIPS, "mips-qemu_mips-elf",
"roms/mips-qemu_mips.elf");
+ make_image (GRUB_INSTALL_PLATFORM_MIPS_MALTA, "mips-malta-elf",
"roms/mips-malta.elf");
grub_install_push_module ("at_keyboard");
@@ -1001,6 +1003,8 @@ main (int argc, char *argv[])
{GRUB_INSTALL_PLATFORM_MIPS_QEMU_MIPS, "roms/mips-qemu_mips.elf",
"mips-qemu_mips.elf"},
{GRUB_INSTALL_PLATFORM_I386_QEMU, "roms/qemu.img", "qemu.img"},
{GRUB_INSTALL_PLATFORM_I386_COREBOOT, "roms/coreboot.elf",
"coreboot.elf"},
+ {GRUB_INSTALL_PLATFORM_MIPS_MALTA, "roms/mips-malta.elf",
"mips-malta.elf"},
+ {GRUB_INSTALL_PLATFORM_MIPSEL_MALTA, "roms/mipsel-malta.elf",
"mipsel-malta.elf"},
};
grub_size_t i;
for (i = 0; i < ARRAY_SIZE (roms); i++)
diff --git a/util/grub-module-verifier.c b/util/grub-module-verifier.c
index 91d9e8f88..6ac7f9b80 100644
--- a/util/grub-module-verifier.c
+++ b/util/grub-module-verifier.c
@@ -226,8 +226,10 @@ static struct platform_whitelist whitelists[] = {
/* video is compiled-in on MIPS. */
{"mipsel", "loongson", (const char *[]) {"all_video", 0}},
{"mipsel", "qemu_mips", (const char *[]) {"all_video", 0}},
+ {"mipsel", "malta", (const char *[]) {"all_video", 0}},
{"mipsel", "arc", (const char *[]) {"all_video", 0}},
{"mips", "qemu_mips", (const char *[]) {"all_video", 0}},
+ {"mips", "malta", (const char *[]) {"all_video", 0}},
{"mips", "arc", (const char *[]) {"all_video", 0}},
};
diff --git a/util/mkimage.c b/util/mkimage.c
index b46df2909..b72c25814 100644
--- a/util/mkimage.c
+++ b/util/mkimage.c
@@ -461,6 +461,24 @@ static const struct grub_install_image_target_desc
image_targets[] =
.link_align = GRUB_KERNEL_MIPS_ARC_LINK_ALIGN,
.default_compression = GRUB_COMPRESSION_NONE
},
+ {
+ .dirname = "mipsel-malta",
+ .names = { "mipsel-malta-elf", NULL },
+ .voidp_sizeof = 4,
+ .bigendian = 0,
+ .id = IMAGE_LOONGSON_ELF,
+ .flags = PLATFORM_FLAGS_DECOMPRESSORS,
+ .total_module_size = GRUB_KERNEL_MIPS_MALTA_TOTAL_MODULE_SIZE,
+ .decompressor_compressed_size =
GRUB_DECOMPRESSOR_MIPS_LOONGSON_COMPRESSED_SIZE,
+ .decompressor_uncompressed_size =
GRUB_DECOMPRESSOR_MIPS_LOONGSON_UNCOMPRESSED_SIZE,
+ .decompressor_uncompressed_addr =
GRUB_DECOMPRESSOR_MIPS_LOONGSON_UNCOMPRESSED_ADDR,
+ .section_align = 1,
+ .vaddr_offset = 0,
+ .link_addr = GRUB_KERNEL_MIPS_MALTA_LINK_ADDR,
+ .elf_target = EM_MIPS,
+ .link_align = GRUB_KERNEL_MIPS_MALTA_LINK_ALIGN,
+ .default_compression = GRUB_COMPRESSION_NONE
+ },
{
.dirname = "mipsel-qemu_mips",
.names = { "mipsel-qemu_mips-elf", NULL },
@@ -533,6 +551,24 @@ static const struct grub_install_image_target_desc
image_targets[] =
.link_align = GRUB_KERNEL_MIPS_QEMU_MIPS_LINK_ALIGN,
.default_compression = GRUB_COMPRESSION_NONE
},
+ {
+ .dirname = "mips-malta",
+ .names = { "mips-malta-elf", NULL },
+ .voidp_sizeof = 4,
+ .bigendian = 1,
+ .id = IMAGE_LOONGSON_ELF,
+ .flags = PLATFORM_FLAGS_DECOMPRESSORS,
+ .total_module_size = GRUB_KERNEL_MIPS_MALTA_TOTAL_MODULE_SIZE,
+ .decompressor_compressed_size =
GRUB_DECOMPRESSOR_MIPS_LOONGSON_COMPRESSED_SIZE,
+ .decompressor_uncompressed_size =
GRUB_DECOMPRESSOR_MIPS_LOONGSON_UNCOMPRESSED_SIZE,
+ .decompressor_uncompressed_addr =
GRUB_DECOMPRESSOR_MIPS_LOONGSON_UNCOMPRESSED_ADDR,
+ .section_align = 1,
+ .vaddr_offset = 0,
+ .link_addr = GRUB_KERNEL_MIPS_MALTA_LINK_ADDR,
+ .elf_target = EM_MIPS,
+ .link_align = GRUB_KERNEL_MIPS_MALTA_LINK_ALIGN,
+ .default_compression = GRUB_COMPRESSION_NONE
+ },
{
.dirname = "arm-uboot",
.names = { "arm-uboot", NULL },
--
2.49.0
_______________________________________________
Grub-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/grub-devel