]> git.proxmox.com Git - mirror_qemu.git/commitdiff
mips_malta: Fix semihosting argument passing for nanoMIPS bare metal
authorStefan Markovic <smarkovic@wavecomp.com>
Fri, 10 Aug 2018 17:21:07 +0000 (19:21 +0200)
committerAleksandar Markovic <amarkovic@wavecomp.com>
Fri, 24 Aug 2018 15:51:59 +0000 (17:51 +0200)
Fix passing argument for nanoMIPS bare metal related to the
semihosting regime.

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Aleksandar Markovic <amarkovic@wavecomp.com>
Signed-off-by: Yongbok Kim <yongbok.kim@mips.com>
Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
Signed-off-by: Stefan Markovic <smarkovic@wavecomp.com>
hw/mips/mips_malta.c

index f261dd6a941699eb22af2220ecab7651628d1505..40041d5ec0bf3d68acb07c0c22b4502997b0ffd8 100644 (file)
@@ -630,8 +630,14 @@ static void write_bootloader_nanomips(uint8_t *base, int64_t run_addr,
                                 /* nop */
 
     /* to_here: */
-    stw_p(p++, 0x0080); stw_p(p++, 0x0002);
+    if (semihosting_get_argc()) {
+        /* Preserve a0 content as arguments have been passed    */
+        stw_p(p++, 0x8000); stw_p(p++, 0xc000);
+                                /* nop                          */
+    } else {
+        stw_p(p++, 0x0080); stw_p(p++, 0x0002);
                                 /* li a0,2                      */
+    }
 
     stw_p(p++, 0xe3a0 | NM_HI1(ENVP_ADDR - 64));