@@ -24,6 +24,7 @@
#include "qemu/osdep.h"
#include "qemu/datadir.h"
+#include "qemu/legacy_binary_info.h"
#include "hw/clock.h"
#include "hw/mips/mips.h"
#include "hw/intc/i8259.h"
@@ -59,12 +60,6 @@ enum jazz_model_e {
JAZZ_PICA61,
};
-#if TARGET_BIG_ENDIAN
-#define BIOS_FILENAME "mips_bios.bin"
-#else
-#define BIOS_FILENAME "mipsel_bios.bin"
-#endif
-
static void main_cpu_reset(void *opaque)
{
MIPSCPU *cpu = opaque;
@@ -120,7 +115,8 @@ static const MemoryRegionOps dma_dummy_ops = {
};
static void mips_jazz_init_net(IOMMUMemoryRegion *rc4030_dma_mr,
- DeviceState *rc4030, MemoryRegion *dp8393x_prom)
+ DeviceState *rc4030, MemoryRegion *dp8393x_prom,
+ bool is_big_endian)
{
DeviceState *dev;
SysBusDevice *sysbus;
@@ -136,7 +132,7 @@ static void mips_jazz_init_net(IOMMUMemoryRegion *rc4030_dma_mr,
dev = qdev_new("dp8393x");
qdev_set_nic_properties(dev, nd);
qdev_prop_set_uint8(dev, "it_shift", 2);
- qdev_prop_set_bit(dev, "big_endian", TARGET_BIG_ENDIAN);
+ qdev_prop_set_bit(dev, "big_endian", is_big_endian);
object_property_set_link(OBJECT(dev), "dma_mr",
OBJECT(rc4030_dma_mr), &error_abort);
sysbus = SYS_BUS_DEVICE(dev);
@@ -194,6 +190,9 @@ static void mips_jazz_init(MachineState *machine,
MemoryRegion *bios2 = g_new(MemoryRegion, 1);
SysBusESPState *sysbus_esp;
ESPState *esp;
+ bool is_big_endian = legacy_binary_is_big_endian();
+ const char *default_bios_filename = is_big_endian ? "mips_bios.bin"
+ : "mipsel_bios.bin";
static const struct {
unsigned freq_hz;
unsigned pll_mult;
@@ -212,8 +211,7 @@ static void mips_jazz_init(MachineState *machine,
* ext_clk[jazz_model].pll_mult);
/* init CPUs */
- cpu = mips_cpu_create_with_clock(machine->cpu_type, cpuclk,
- TARGET_BIG_ENDIAN);
+ cpu = mips_cpu_create_with_clock(machine->cpu_type, cpuclk, is_big_endian);
env = &cpu->env;
qemu_register_reset(main_cpu_reset, cpu);
@@ -245,7 +243,8 @@ static void mips_jazz_init(MachineState *machine,
memory_region_add_subregion(address_space, 0xfff00000LL, bios2);
/* load the BIOS image. */
- filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, machine->firmware ?: BIOS_FILENAME);
+ filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, machine->firmware
+ ?: default_bios_filename);
if (filename) {
bios_size = load_image_targphys(filename, 0xfff00000LL,
MAGNUM_BIOS_SIZE);
@@ -329,7 +328,7 @@ static void mips_jazz_init(MachineState *machine,
}
/* Network controller */
- mips_jazz_init_net(rc4030_dma_mr, rc4030, dp8393x_prom);
+ mips_jazz_init_net(rc4030_dma_mr, rc4030, dp8393x_prom, is_big_endian);
/* SCSI adapter */
dev = qdev_new(TYPE_SYSBUS_ESP);
For legacy binaries, legacy_binary_is_big_endian() is equivalent of the compile time TARGET_BIG_ENDIAN definition. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- hw/mips/jazz.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-)