[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v10 57/65] linux-user: Add cpu_loop.c for nanoMIPS
From: |
Aleksandar Markovic |
Subject: |
[Qemu-devel] [PATCH v10 57/65] linux-user: Add cpu_loop.c for nanoMIPS |
Date: |
Fri, 17 Aug 2018 16:03:45 +0200 |
From: Dimitrije Nikolic <address@hidden>
Amend regular MIPS' cpu_loop.c to include nanoMIPS support.
Signed-off-by: Aleksandar Rikalo <address@hidden>
Signed-off-by: Aleksandar Markovic <address@hidden>
Signed-off-by: Stefan Markovic <address@hidden>
---
linux-user/mips/cpu_loop.c | 8 +++++++-
linux-user/nanomips/cpu_loop.c | 1 +
2 files changed, 8 insertions(+), 1 deletion(-)
create mode 100644 linux-user/nanomips/cpu_loop.c
diff --git a/linux-user/mips/cpu_loop.c b/linux-user/mips/cpu_loop.c
index c9c20cf..ada5a79 100644
--- a/linux-user/mips/cpu_loop.c
+++ b/linux-user/mips/cpu_loop.c
@@ -546,7 +546,7 @@ void cpu_loop(CPUMIPSState *env)
arg5, arg6, arg7, arg8);
}
done_syscall:
-# else
+# else /* N32/N64 and P32 */
ret = do_syscall(env, env->active_tc.gpr[2],
env->active_tc.gpr[4], env->active_tc.gpr[5],
env->active_tc.gpr[6], env->active_tc.gpr[7],
@@ -562,6 +562,7 @@ done_syscall:
Avoid clobbering register state. */
break;
}
+#if !defined(TARGET_ABI_MIPSP32)
if ((abi_ulong)ret >= (abi_ulong)-1133) {
env->active_tc.gpr[7] = 1; /* error flag */
ret = -ret;
@@ -569,6 +570,9 @@ done_syscall:
env->active_tc.gpr[7] = 0; /* error flag */
}
env->active_tc.gpr[2] = ret;
+#else
+ env->active_tc.gpr[4] = ret;
+#endif
break;
case EXCP_TLBL:
case EXCP_TLBS:
@@ -714,6 +718,8 @@ done_syscall:
} else {
code = ((trap_instr >> 6) & ((1 << 10) - 1));
}
+ } else if (env->insn_flags & ISA_NANOMIPS32) {
+ code = ((trap_instr >> 11) & ((1 << 5) - 1));
}
if (do_break(env, &info, code) != 0) {
diff --git a/linux-user/nanomips/cpu_loop.c b/linux-user/nanomips/cpu_loop.c
new file mode 100644
index 0000000..da4949a
--- /dev/null
+++ b/linux-user/nanomips/cpu_loop.c
@@ -0,0 +1 @@
+#include "../mips/cpu_loop.c"
--
2.7.4
- [Qemu-devel] [PATCH v10 41/65] mips_malta: Add setting up GT64120 BARs to the nanoMIPS bootloader, (continued)
- [Qemu-devel] [PATCH v10 41/65] mips_malta: Add setting up GT64120 BARs to the nanoMIPS bootloader, Aleksandar Markovic, 2018/08/17
- [Qemu-devel] [PATCH v10 47/65] linux-user: Add termbits.h header for nanoMIPS, Aleksandar Markovic, 2018/08/17
- [Qemu-devel] [PATCH v10 40/65] mips_malta: Add basic nanoMIPS boot code for Malta board, Aleksandar Markovic, 2018/08/17
- [Qemu-devel] [PATCH v10 54/65] linux-user: Add target_elf.h header for nanoMIPS, Aleksandar Markovic, 2018/08/17
- [Qemu-devel] [PATCH v10 45/65] linux-user: Add syscall numbers for nanoMIPS, Aleksandar Markovic, 2018/08/17
- [Qemu-devel] [PATCH v10 59/65] linux-user: Add support for statx() syscall for all platforms, Aleksandar Markovic, 2018/08/17
- [Qemu-devel] [PATCH v10 44/65] elf: Add nanoMIPS specific variations in ELF header fields, Aleksandar Markovic, 2018/08/17
- [Qemu-devel] [PATCH v10 42/65] mips_malta: Fix semihosting argument passing for nanoMIPS bare metal, Aleksandar Markovic, 2018/08/17
- [Qemu-devel] [PATCH v10 36/65] elf: Add EM_NANOMIPS value as a valid one for e_machine field, Aleksandar Markovic, 2018/08/17
- [Qemu-devel] [PATCH v10 65/65] qemu-doc: Add nanoMIPS-related items, Aleksandar Markovic, 2018/08/17
- [Qemu-devel] [PATCH v10 57/65] linux-user: Add cpu_loop.c for nanoMIPS,
Aleksandar Markovic <=
- [Qemu-devel] [PATCH v10 64/65] gdbstub: Add XML support for GDB for nanoMIPS, Aleksandar Markovic, 2018/08/17
- [Qemu-devel] [PATCH v10 33/65] disas: Add support for nanoMIPS platform, Aleksandar Markovic, 2018/08/17