From nobody Tue Feb 10 06:43:11 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.128.49 as permitted sender) client-ip=209.85.128.49; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-f49.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.128.49 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1604424697; cv=none; d=zohomail.com; s=zohoarc; b=b30cF1ff9jjcdYkmz7agzVJUvHQEl+krx/AJyskqlSZN3iD3FLKo0IBs1GNQHe9frbdaK4JcV97mJMTMiX0i4ZlfUToLPIQKLC/LoS5GT2VhB2In1uz4W9so6xhajTO1aaqaKijilZpK+H/l2KG9RxK4w8uV/QxS79DVskjSx8M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1604424697; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=+hIf3eZWVLUuPvUK+JvEYw3IeK+GL5CZY+UJFkfdKak=; b=Tip4milQHFQt4RPTbciprMEKSFt2HTAmj83h71bcHG9fVFwKlAiIvbzBlWKpsfkYr1/d8yGpkJEgq80ou3JbrvyfFmdymuKE+p0sJ4LCQTY3wSxHeBh0thpDquHXYngaVybYOzR7CmMHcpumNPpzBrdoJ1V+RYRZy8911jUUx04= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.128.49 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-wm1-f49.google.com (mail-wm1-f49.google.com [209.85.128.49]) by mx.zohomail.com with SMTPS id 1604424697261271.5337762681869; Tue, 3 Nov 2020 09:31:37 -0800 (PST) Received: by mail-wm1-f49.google.com with SMTP id 13so133883wmf.0 for ; Tue, 03 Nov 2020 09:31:36 -0800 (PST) Return-Path: Return-Path: Received: from x1w.redhat.com (234.red-83-42-66.dynamicip.rima-tde.net. [83.42.66.234]) by smtp.gmail.com with ESMTPSA id b7sm25997762wrp.16.2020.11.03.09.31.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Nov 2020 09:31:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=+hIf3eZWVLUuPvUK+JvEYw3IeK+GL5CZY+UJFkfdKak=; b=RDS9bHK755AAjOa913VZXj+0Y0ZgCSO0CZBQhSbRAozhcUDX2V87G4pADClN4xNOTv I+EV/1aDXWmwEvU1GGzO58N8H8m0EIHQMkkgK5U8K6WlY7Ner7UXv5URJDsbK6NZCrCL M++0mUUjdJObsQ2KPuJC7mbtn394ehNg6n3rcKjEioOkMoBeJ7SQ5b6oyzdY/nEa7+VJ SImYrk45NzebYCsLTUuilwP0ztAMz0qQeq48psLMj6RcLkwdvJf7N2wNLYZFDvYJYeyk AvEcIRscN5LYaI0ChJWGcv0Olge3UNOsI1uDAHg9VbzWkAEiZ21+QNUsGah0gYl8k+AZ yQyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=+hIf3eZWVLUuPvUK+JvEYw3IeK+GL5CZY+UJFkfdKak=; b=jrbcY/75DYC/vslqF1aJzxIrKKTKNdLlqPkfsmdffl5TAtdO7rkY1rHHQ0VU1WP3jQ 2A0FXECsgo8OGGrnzNj+Ir10nndFzSxzacH3JzbwJJG/f3aojiAIMdHAsTsGwCtbt9Ep SNdOxFxag+7C1gmnoHdkFJTUsxBOQ5SNPC57mFeqGAqpiBlgIR7kVHLN1Q/LZFs+yTld 124s5T9+zm8p0zu9xpXypr/A/T8GNv5ivwBHcq5E5TnjKQ3tTYvAnYf/KtKCaR6/HoWa RyTFnT4sJAgLI/kIK12y3V0tUofY5XdcRsOg81y53RUZG8IaIFsOY87ZZjRd/wlVIIBJ oMMg== X-Gm-Message-State: AOAM532Vs8UkJZE/5lB4B12ugwJ/EpH4SJlD05BOcrRlMJsqDZBdf6rg ijwXbZshrBJEqh7iTguh78Y= X-Google-Smtp-Source: ABdhPJz0QIO2VboMehLgOmAvzOCgyqtgSqmU2Bt/s7hWh2LjZ9oyDY4GKpkZK5yzKk2/m8p/M0KGug== X-Received: by 2002:a1c:81c9:: with SMTP id c192mr221409wmd.1.1604424695048; Tue, 03 Nov 2020 09:31:35 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Thomas Huth , Jiaxun Yang , Paul Burton , libvir-list@redhat.com, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Aurelien Jarno , John Snow , Paolo Bonzini , Laurent Vivier , Aleksandar Rikalo , qemu-block@nongnu.org, Huacai Chen , Richard Henderson , Peter Krempa Subject: [PULL 1/6] hw/mips: Remove the 'r4k' machine Date: Tue, 3 Nov 2020 18:31:22 +0100 Message-Id: <20201103173127.2704256-2-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20201103173127.2704256-1-f4bug@amsat.org> References: <20201103173127.2704256-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) We deprecated the support for the 'r4k' machine for the 5.0 release (commit d32dc61421), which means that our deprecation policy allows us to drop it in release 5.2. Remove the code. To repeat the rationale from the deprecation note: - this virtual machine has no specification - the Linux kernel dropped support for it 10 years ago Users are recommended to use the Malta board instead. Acked-by: Richard Henderson Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Thomas Huth ACKed-by: Peter Krempa Message-Id: <20201102201311.2220005-1-f4bug@amsat.org> --- docs/system/deprecated.rst | 12 +- .../devices/mips-softmmu-common.mak | 1 - hw/mips/r4k.c | 318 ------------------ tests/qtest/cdrom-test.c | 2 +- tests/qtest/endianness-test.c | 2 - MAINTAINERS | 6 - hw/mips/Kconfig | 13 - hw/mips/meson.build | 1 - 8 files changed, 7 insertions(+), 348 deletions(-) delete mode 100644 hw/mips/r4k.c diff --git a/docs/system/deprecated.rst b/docs/system/deprecated.rst index 32a0e620dbb..8c1dc7645d7 100644 --- a/docs/system/deprecated.rst +++ b/docs/system/deprecated.rst @@ -328,12 +328,6 @@ The 'scsi-disk' device is deprecated. Users should use= 'scsi-hd' or System emulator machines ------------------------ =20 -mips ``r4k`` platform (since 5.0) -''''''''''''''''''''''''''''''''' - -This machine type is very old and unmaintained. Users should use the ``mal= ta`` -machine type instead. - mips ``fulong2e`` machine (since 5.1) ''''''''''''''''''''''''''''''''''''' =20 @@ -576,6 +570,12 @@ The version specific Spike machines have been removed = in favour of the generic ``spike`` machine. If you need to specify an older version of the = RISC-V spec you can use the ``-cpu rv64gcsu,priv_spec=3Dv1.10.0`` command line ar= gument. =20 +mips ``r4k`` platform (removed in 5.2) +'''''''''''''''''''''''''''''''''''''' + +This machine type was very old and unmaintained. Users should use the ``ma= lta`` +machine type instead. + Related binaries ---------------- =20 diff --git a/default-configs/devices/mips-softmmu-common.mak b/default-conf= igs/devices/mips-softmmu-common.mak index da29c6c0b24..ea78fe72759 100644 --- a/default-configs/devices/mips-softmmu-common.mak +++ b/default-configs/devices/mips-softmmu-common.mak @@ -33,7 +33,6 @@ CONFIG_MC146818RTC=3Dy CONFIG_EMPTY_SLOT=3Dy CONFIG_MIPS_CPS=3Dy CONFIG_MIPS_ITU=3Dy -CONFIG_R4K=3Dy CONFIG_MALTA=3Dy CONFIG_PCNET_PCI=3Dy CONFIG_MIPSSIM=3Dy diff --git a/hw/mips/r4k.c b/hw/mips/r4k.c deleted file mode 100644 index 38308543421..00000000000 --- a/hw/mips/r4k.c +++ /dev/null @@ -1,318 +0,0 @@ -/* - * QEMU/MIPS pseudo-board - * - * emulates a simple machine with ISA-like bus. - * ISA IO space mapped to the 0x14000000 (PHYS) and - * ISA memory at the 0x10000000 (PHYS, 16Mb in size). - * All peripherial devices are attached to this "bus" with - * the standard PC ISA addresses. - */ - -#include "qemu/osdep.h" -#include "qemu/units.h" -#include "qapi/error.h" -#include "qemu-common.h" -#include "cpu.h" -#include "hw/clock.h" -#include "hw/mips/mips.h" -#include "hw/mips/cpudevs.h" -#include "hw/intc/i8259.h" -#include "hw/char/serial.h" -#include "hw/isa/isa.h" -#include "net/net.h" -#include "hw/net/ne2000-isa.h" -#include "sysemu/sysemu.h" -#include "hw/boards.h" -#include "hw/block/flash.h" -#include "qemu/log.h" -#include "hw/mips/bios.h" -#include "hw/ide.h" -#include "hw/ide/internal.h" -#include "hw/loader.h" -#include "elf.h" -#include "hw/rtc/mc146818rtc.h" -#include "hw/input/i8042.h" -#include "hw/timer/i8254.h" -#include "exec/address-spaces.h" -#include "sysemu/qtest.h" -#include "sysemu/reset.h" -#include "sysemu/runstate.h" -#include "qemu/error-report.h" - -#define MAX_IDE_BUS 2 - -static const int ide_iobase[2] =3D { 0x1f0, 0x170 }; -static const int ide_iobase2[2] =3D { 0x3f6, 0x376 }; -static const int ide_irq[2] =3D { 14, 15 }; - -static ISADevice *pit; /* PIT i8254 */ - -/* i8254 PIT is attached to the IRQ0 at PIC i8259 */ - -static struct _loaderparams { - int ram_size; - const char *kernel_filename; - const char *kernel_cmdline; - const char *initrd_filename; -} loaderparams; - -static void mips_qemu_write(void *opaque, hwaddr addr, - uint64_t val, unsigned size) -{ - if ((addr & 0xffff) =3D=3D 0 && val =3D=3D 42) { - qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET); - } else if ((addr & 0xffff) =3D=3D 4 && val =3D=3D 42) { - qemu_system_shutdown_request(SHUTDOWN_CAUSE_GUEST_SHUTDOWN); - } -} - -static uint64_t mips_qemu_read(void *opaque, hwaddr addr, - unsigned size) -{ - return 0; -} - -static const MemoryRegionOps mips_qemu_ops =3D { - .read =3D mips_qemu_read, - .write =3D mips_qemu_write, - .endianness =3D DEVICE_NATIVE_ENDIAN, -}; - -typedef struct ResetData { - MIPSCPU *cpu; - uint64_t vector; -} ResetData; - -static int64_t load_kernel(void) -{ - const size_t params_size =3D 264; - int64_t entry, kernel_high, initrd_size; - long kernel_size; - ram_addr_t initrd_offset; - uint32_t *params_buf; - int big_endian; - -#ifdef TARGET_WORDS_BIGENDIAN - big_endian =3D 1; -#else - big_endian =3D 0; -#endif - kernel_size =3D load_elf(loaderparams.kernel_filename, NULL, - cpu_mips_kseg0_to_phys, NULL, - (uint64_t *)&entry, NULL, - (uint64_t *)&kernel_high, NULL, big_endian, - EM_MIPS, 1, 0); - if (kernel_size < 0) { - error_report("could not load kernel '%s': %s", - loaderparams.kernel_filename, - load_elf_strerror(kernel_size)); - exit(1); - } - - /* load initrd */ - initrd_size =3D 0; - initrd_offset =3D 0; - if (loaderparams.initrd_filename) { - initrd_size =3D get_image_size(loaderparams.initrd_filename); - if (initrd_size > 0) { - initrd_offset =3D ROUND_UP(kernel_high, INITRD_PAGE_SIZE); - if (initrd_offset + initrd_size > ram_size) { - error_report("memory too small for initial ram disk '%s'", - loaderparams.initrd_filename); - exit(1); - } - initrd_size =3D load_image_targphys(loaderparams.initrd_filena= me, - initrd_offset, - ram_size - initrd_offset); - } - if (initrd_size =3D=3D (target_ulong) -1) { - error_report("could not load initial ram disk '%s'", - loaderparams.initrd_filename); - exit(1); - } - } - - /* Store command line. */ - params_buf =3D g_malloc(params_size); - - params_buf[0] =3D tswap32(ram_size); - params_buf[1] =3D tswap32(0x12345678); - - if (initrd_size > 0) { - snprintf((char *)params_buf + 8, 256, - "rd_start=3D0x%" PRIx64 " rd_size=3D%" PRId64 " %s", - cpu_mips_phys_to_kseg0(NULL, initrd_offset), - initrd_size, loaderparams.kernel_cmdline); - } else { - snprintf((char *)params_buf + 8, 256, - "%s", loaderparams.kernel_cmdline); - } - - rom_add_blob_fixed("params", params_buf, params_size, - 16 * MiB - params_size); - - g_free(params_buf); - return entry; -} - -static void main_cpu_reset(void *opaque) -{ - ResetData *s =3D (ResetData *)opaque; - CPUMIPSState *env =3D &s->cpu->env; - - cpu_reset(CPU(s->cpu)); - env->active_tc.PC =3D s->vector; -} - -static const int sector_len =3D 32 * KiB; -static -void mips_r4k_init(MachineState *machine) -{ - const char *kernel_filename =3D machine->kernel_filename; - const char *kernel_cmdline =3D machine->kernel_cmdline; - const char *initrd_filename =3D machine->initrd_filename; - char *filename; - MemoryRegion *address_space_mem =3D get_system_memory(); - MemoryRegion *bios; - MemoryRegion *iomem =3D g_new(MemoryRegion, 1); - MemoryRegion *isa_io =3D g_new(MemoryRegion, 1); - MemoryRegion *isa_mem =3D g_new(MemoryRegion, 1); - int bios_size; - Clock *cpuclk; - MIPSCPU *cpu; - CPUMIPSState *env; - ResetData *reset_info; - int i; - qemu_irq *i8259; - ISABus *isa_bus; - DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS]; - DriveInfo *dinfo; - int be; - - cpuclk =3D clock_new(OBJECT(machine), "cpu-refclk"); - clock_set_hz(cpuclk, 200000000); /* 200 MHz */ - - /* init CPUs */ - cpu =3D mips_cpu_create_with_clock(machine->cpu_type, cpuclk); - env =3D &cpu->env; - - reset_info =3D g_malloc0(sizeof(ResetData)); - reset_info->cpu =3D cpu; - reset_info->vector =3D env->active_tc.PC; - qemu_register_reset(main_cpu_reset, reset_info); - - /* allocate RAM */ - if (machine->ram_size > 256 * MiB) { - error_report("Too much memory for this machine: %" PRId64 "MB," - " maximum 256MB", ram_size / MiB); - exit(1); - } - memory_region_add_subregion(address_space_mem, 0, machine->ram); - - memory_region_init_io(iomem, NULL, &mips_qemu_ops, - NULL, "mips-qemu", 0x10000); - - memory_region_add_subregion(address_space_mem, 0x1fbf0000, iomem); - - /* - * Try to load a BIOS image. If this fails, we continue regardless, - * but initialize the hardware ourselves. When a kernel gets - * preloaded we also initialize the hardware, since the BIOS wasn't - * run. - */ - - if (bios_name =3D=3D NULL) { - bios_name =3D BIOS_FILENAME; - } - filename =3D qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name); - if (filename) { - bios_size =3D get_image_size(filename); - } else { - bios_size =3D -1; - } -#ifdef TARGET_WORDS_BIGENDIAN - be =3D 1; -#else - be =3D 0; -#endif - dinfo =3D drive_get(IF_PFLASH, 0, 0); - if ((bios_size > 0) && (bios_size <=3D BIOS_SIZE)) { - bios =3D g_new(MemoryRegion, 1); - memory_region_init_rom(bios, NULL, "mips_r4k.bios", BIOS_SIZE, - &error_fatal); - memory_region_add_subregion(get_system_memory(), 0x1fc00000, bios); - - load_image_targphys(filename, 0x1fc00000, BIOS_SIZE); - } else if (dinfo !=3D NULL) { - uint32_t mips_rom =3D 0x00400000; - if (!pflash_cfi01_register(0x1fc00000, "mips_r4k.bios", mips_rom, - blk_by_legacy_dinfo(dinfo), - sector_len, 4, 0, 0, 0, 0, be)) { - fprintf(stderr, "qemu: Error registering flash memory.\n"); - } - } else if (!qtest_enabled()) { - /* not fatal */ - warn_report("could not load MIPS bios '%s'", bios_name); - } - g_free(filename); - - if (kernel_filename) { - loaderparams.ram_size =3D machine->ram_size; - loaderparams.kernel_filename =3D kernel_filename; - loaderparams.kernel_cmdline =3D kernel_cmdline; - loaderparams.initrd_filename =3D initrd_filename; - reset_info->vector =3D load_kernel(); - } - - /* Init CPU internal devices */ - cpu_mips_irq_init_cpu(cpu); - cpu_mips_clock_init(cpu); - - /* ISA bus: IO space at 0x14000000, mem space at 0x10000000 */ - memory_region_init_alias(isa_io, NULL, "isa-io", - get_system_io(), 0, 0x00010000); - memory_region_init(isa_mem, NULL, "isa-mem", 0x01000000); - memory_region_add_subregion(get_system_memory(), 0x14000000, isa_io); - memory_region_add_subregion(get_system_memory(), 0x10000000, isa_mem); - isa_bus =3D isa_bus_new(NULL, isa_mem, get_system_io(), &error_abort); - - /* The PIC is attached to the MIPS CPU INT0 pin */ - i8259 =3D i8259_init(isa_bus, env->irq[2]); - isa_bus_irqs(isa_bus, i8259); - - mc146818_rtc_init(isa_bus, 2000, NULL); - - pit =3D i8254_pit_init(isa_bus, 0x40, 0, NULL); - - serial_hds_isa_init(isa_bus, 0, MAX_ISA_SERIAL_PORTS); - - isa_vga_init(isa_bus); - - if (nd_table[0].used) { - isa_ne2000_init(isa_bus, 0x300, 9, &nd_table[0]); - } - - ide_drive_get(hd, ARRAY_SIZE(hd)); - for (i =3D 0; i < MAX_IDE_BUS; i++) - isa_ide_init(isa_bus, ide_iobase[i], ide_iobase2[i], ide_irq[i], - hd[MAX_IDE_DEVS * i], - hd[MAX_IDE_DEVS * i + 1]); - - isa_create_simple(isa_bus, TYPE_I8042); -} - -static void mips_machine_init(MachineClass *mc) -{ - mc->deprecation_reason =3D "use malta machine type instead"; - mc->desc =3D "mips r4k platform"; - mc->init =3D mips_r4k_init; - mc->block_default_type =3D IF_IDE; -#ifdef TARGET_MIPS64 - mc->default_cpu_type =3D MIPS_CPU_TYPE_NAME("R4000"); -#else - mc->default_cpu_type =3D MIPS_CPU_TYPE_NAME("24Kf"); -#endif - mc->default_ram_id =3D "mips_r4k.ram"; -} - -DEFINE_MACHINE("mips", mips_machine_init) diff --git a/tests/qtest/cdrom-test.c b/tests/qtest/cdrom-test.c index eef242dc80c..5af944a5fb7 100644 --- a/tests/qtest/cdrom-test.c +++ b/tests/qtest/cdrom-test.c @@ -217,7 +217,7 @@ int main(int argc, char **argv) add_cdrom_param_tests(sparc64machines); } else if (!strncmp(arch, "mips64", 6)) { const char *mips64machines[] =3D { - "magnum", "malta", "mips", "pica61", NULL + "magnum", "malta", "pica61", NULL }; add_cdrom_param_tests(mips64machines); } else if (g_str_equal(arch, "arm") || g_str_equal(arch, "aarch64")) { diff --git a/tests/qtest/endianness-test.c b/tests/qtest/endianness-test.c index 4e79e22c28c..09ecb531f11 100644 --- a/tests/qtest/endianness-test.c +++ b/tests/qtest/endianness-test.c @@ -27,11 +27,9 @@ struct TestCase { =20 static const TestCase test_cases[] =3D { { "i386", "pc", -1 }, - { "mips", "mips", 0x14000000, .bswap =3D true }, { "mips", "malta", 0x10000000, .bswap =3D true }, { "mips64", "magnum", 0x90000000, .bswap =3D true }, { "mips64", "pica61", 0x90000000, .bswap =3D true }, - { "mips64", "mips", 0x14000000, .bswap =3D true }, { "mips64", "malta", 0x10000000, .bswap =3D true }, { "mips64el", "fuloong2e", 0x1fd00000 }, { "ppc", "g3beige", 0xfe000000, .bswap =3D true, .superio =3D "i82378"= }, diff --git a/MAINTAINERS b/MAINTAINERS index c1d16026baf..8a2c2041521 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1138,12 +1138,6 @@ S: Orphaned F: hw/mips/mipssim.c F: hw/net/mipsnet.c =20 -R4000 -R: Aurelien Jarno -R: Aleksandar Rikalo -S: Obsolete -F: hw/mips/r4k.c - Fuloong 2E M: Huacai Chen M: Philippe Mathieu-Daud=C3=A9 diff --git a/hw/mips/Kconfig b/hw/mips/Kconfig index 67d39c56a4e..8be70122f4c 100644 --- a/hw/mips/Kconfig +++ b/hw/mips/Kconfig @@ -1,16 +1,3 @@ -config R4K - bool - select ISA_BUS - select SERIAL_ISA - select I8259 - select I8254 - select MC146818RTC - imply VGA_ISA - imply NE2000_ISA - select IDE_ISA - select PCKBD - select PFLASH_CFI01 - config MALTA bool select ISA_SUPERIO diff --git a/hw/mips/meson.build b/hw/mips/meson.build index 46294b7382f..bcdf96be69f 100644 --- a/hw/mips/meson.build +++ b/hw/mips/meson.build @@ -6,6 +6,5 @@ mips_ss.add(when: 'CONFIG_MIPSSIM', if_true: files('mipssim.c')) mips_ss.add(when: 'CONFIG_MIPS_BOSTON', if_true: [files('boston.c'), fdt]) mips_ss.add(when: 'CONFIG_MIPS_CPS', if_true: files('cps.c')) -mips_ss.add(when: 'CONFIG_R4K', if_true: files('r4k.c')) =20 hw_arch +=3D {'mips': mips_ss} --=20 2.26.2