summary refs log tree commit diff stats
path: root/hw/mips/bootloader.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/mips/bootloader.c')
-rw-r--r--hw/mips/bootloader.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/hw/mips/bootloader.c b/hw/mips/bootloader.c
index 21ffd4d772..0035f37335 100644
--- a/hw/mips/bootloader.c
+++ b/hw/mips/bootloader.c
@@ -54,16 +54,32 @@ static bool bootcpu_supports_isa(uint64_t isa_mask)
     return cpu_supports_isa(&MIPS_CPU(first_cpu)->env, isa_mask);
 }
 
-/* Base types */
-static void bl_gen_nop(void **ptr)
+static void st_nm32_p(void **ptr, uint32_t insn)
 {
-    uint32_t *p = *ptr;
+    uint16_t *p = *ptr;
 
-    stl_p(p, 0);
+    stw_p(p, insn >> 16);
+    p++;
+    stw_p(p, insn >> 0);
     p++;
+
     *ptr = p;
 }
 
+/* Base types */
+static void bl_gen_nop(void **ptr)
+{
+    if (bootcpu_supports_isa(ISA_NANOMIPS32)) {
+        st_nm32_p(ptr, 0x8000c000);
+    } else {
+        uint32_t *p = *ptr;
+
+        stl_p(p, 0);
+        p++;
+        *ptr = p;
+    }
+}
+
 static void bl_gen_r_type(void **ptr, uint8_t opcode,
                           bl_reg rs, bl_reg rt, bl_reg rd,
                           uint8_t shift, uint8_t funct)