* [PATCH v2 00/15] linux-user/sparc: Handle missing traps
@ 2023-02-16 5:45 Richard Henderson
2023-02-16 5:45 ` [PATCH v2 01/15] linux-user/sparc: Raise SIGILL for all unhandled software traps Richard Henderson
` (15 more replies)
0 siblings, 16 replies; 23+ messages in thread
From: Richard Henderson @ 2023-02-16 5:45 UTC (permalink / raw)
To: qemu-devel; +Cc: laurent
Lots of missing trap codes for cpu_loop().
Changes for v2:
- Fix v8plus syscall trap.
- New patch to unify syscall error return via C flag.
r~
Richard Henderson (15):
linux-user/sparc: Raise SIGILL for all unhandled software traps
linux-user/sparc: Tidy syscall trap
linux-user/sparc: Tidy syscall error return
linux-user/sparc: Use TT_TRAP for flush windows
linux-user/sparc: Tidy window spill/fill traps
linux-user/sparc: Fix sparc64_{get,set}_context traps
linux-user/sparc: Handle software breakpoint trap
linux-user/sparc: Handle division by zero traps
linux-user/sparc: Handle getcc, setcc, getpsr traps
linux-user/sparc: Handle priviledged opcode trap
linux-user/sparc: Handle privilidged action trap
linux-user/sparc: Handle coprocessor disabled trap
linux-user/sparc: Handle unimplemented flush trap
linux-user/sparc: Handle floating-point exceptions
linux-user/sparc: Handle tag overflow traps
linux-user/sparc/target_signal.h | 2 +-
linux-user/syscall_defs.h | 5 +
target/sparc/cpu.h | 3 +-
linux-user/sparc/cpu_loop.c | 190 ++++++++++++++++++++++++-------
linux-user/sparc/signal.c | 36 +++---
5 files changed, 175 insertions(+), 61 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH v2 01/15] linux-user/sparc: Raise SIGILL for all unhandled software traps
2023-02-16 5:45 [PATCH v2 00/15] linux-user/sparc: Handle missing traps Richard Henderson
@ 2023-02-16 5:45 ` Richard Henderson
2023-02-16 6:07 ` Richard Henderson
2023-02-16 5:45 ` [PATCH v2 02/15] linux-user/sparc: Tidy syscall trap Richard Henderson
` (14 subsequent siblings)
15 siblings, 1 reply; 23+ messages in thread
From: Richard Henderson @ 2023-02-16 5:45 UTC (permalink / raw)
To: qemu-devel; +Cc: laurent, Ilya Leoshkevich
The linux kernel's trap tables vector all unassigned trap
numbers to BAD_TRAP, which then raises SIGILL.
Tested-by: Ilya Leoshkevich <iii@linux.ibm.com>
Reported-by: Ilya Leoshkevich <iii@linux.ibm.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
linux-user/sparc/cpu_loop.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c
index 434c90a55f..c120c42278 100644
--- a/linux-user/sparc/cpu_loop.c
+++ b/linux-user/sparc/cpu_loop.c
@@ -248,6 +248,14 @@ void cpu_loop (CPUSPARCState *env)
cpu_exec_step_atomic(cs);
break;
default:
+ /*
+ * Most software trap numbers vector to BAD_TRAP.
+ * Handle anything not explicitly matched above.
+ */
+ if (trapnr >= TT_TRAP && trapnr <= TT_TRAP + 0x7f) {
+ force_sig_fault(TARGET_SIGILL, ILL_ILLTRP, env->pc);
+ break;
+ }
fprintf(stderr, "Unhandled trap: 0x%x\n", trapnr);
cpu_dump_state(cs, stderr, 0);
exit(EXIT_FAILURE);
--
2.34.1
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH v2 02/15] linux-user/sparc: Tidy syscall trap
2023-02-16 5:45 [PATCH v2 00/15] linux-user/sparc: Handle missing traps Richard Henderson
2023-02-16 5:45 ` [PATCH v2 01/15] linux-user/sparc: Raise SIGILL for all unhandled software traps Richard Henderson
@ 2023-02-16 5:45 ` Richard Henderson
2023-02-16 7:51 ` Philippe Mathieu-Daudé
2023-02-16 5:45 ` [PATCH v2 03/15] linux-user/sparc: Tidy syscall error return Richard Henderson
` (13 subsequent siblings)
15 siblings, 1 reply; 23+ messages in thread
From: Richard Henderson @ 2023-02-16 5:45 UTC (permalink / raw)
To: qemu-devel; +Cc: laurent
Use TT_TRAP.
For sparc32, 0x88 is the "Slowaris" system call, currently BAD_TRAP
in the kernel's ttable_32.S. For sparc64, 0x110 is tl0_linux32, the
sparc32 trap, now folded into the TARGET_ABI32 case via TT_TRAP.
For sparc64, there does still exist trap 0x111 as tl0_oldlinux64,
which was replaced by 0x16d as tl0_linux64 in 1998. Since no one
has noticed, don't bother implementing it now.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
linux-user/sparc/cpu_loop.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c
index c120c42278..d31ea057db 100644
--- a/linux-user/sparc/cpu_loop.c
+++ b/linux-user/sparc/cpu_loop.c
@@ -149,6 +149,12 @@ static void flush_windows(CPUSPARCState *env)
#endif
}
+#ifdef TARGET_ABI32
+#define TARGET_TT_SYSCALL (TT_TRAP + 0x10) /* t_linux */
+#else
+#define TARGET_TT_SYSCALL (TT_TRAP + 0x6d) /* tl0_linux64 */
+#endif
+
void cpu_loop (CPUSPARCState *env)
{
CPUState *cs = env_cpu(env);
@@ -167,13 +173,7 @@ void cpu_loop (CPUSPARCState *env)
}
switch (trapnr) {
-#ifndef TARGET_SPARC64
- case 0x88:
- case 0x90:
-#else
- case 0x110:
- case 0x16d:
-#endif
+ case TARGET_TT_SYSCALL:
ret = do_syscall (env, env->gregs[1],
env->regwptr[0], env->regwptr[1],
env->regwptr[2], env->regwptr[3],
--
2.34.1
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH v2 03/15] linux-user/sparc: Tidy syscall error return
2023-02-16 5:45 [PATCH v2 00/15] linux-user/sparc: Handle missing traps Richard Henderson
2023-02-16 5:45 ` [PATCH v2 01/15] linux-user/sparc: Raise SIGILL for all unhandled software traps Richard Henderson
2023-02-16 5:45 ` [PATCH v2 02/15] linux-user/sparc: Tidy syscall trap Richard Henderson
@ 2023-02-16 5:45 ` Richard Henderson
2023-02-16 5:45 ` [PATCH v2 04/15] linux-user/sparc: Use TT_TRAP for flush windows Richard Henderson
` (12 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Richard Henderson @ 2023-02-16 5:45 UTC (permalink / raw)
To: qemu-devel; +Cc: laurent
Reduce ifdefs with #define syscall_cc.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
linux-user/sparc/cpu_loop.c | 15 +++++----------
1 file changed, 5 insertions(+), 10 deletions(-)
diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c
index d31ea057db..051a292ce5 100644
--- a/linux-user/sparc/cpu_loop.c
+++ b/linux-user/sparc/cpu_loop.c
@@ -149,10 +149,13 @@ static void flush_windows(CPUSPARCState *env)
#endif
}
+/* Avoid ifdefs below for the abi32 and abi64 paths. */
#ifdef TARGET_ABI32
#define TARGET_TT_SYSCALL (TT_TRAP + 0x10) /* t_linux */
+#define syscall_cc psr
#else
#define TARGET_TT_SYSCALL (TT_TRAP + 0x6d) /* tl0_linux64 */
+#define syscall_cc xcc
#endif
void cpu_loop (CPUSPARCState *env)
@@ -183,18 +186,10 @@ void cpu_loop (CPUSPARCState *env)
break;
}
if ((abi_ulong)ret >= (abi_ulong)(-515)) {
-#if defined(TARGET_SPARC64) && !defined(TARGET_ABI32)
- env->xcc |= PSR_CARRY;
-#else
- env->psr |= PSR_CARRY;
-#endif
+ env->syscall_cc |= PSR_CARRY;
ret = -ret;
} else {
-#if defined(TARGET_SPARC64) && !defined(TARGET_ABI32)
- env->xcc &= ~PSR_CARRY;
-#else
- env->psr &= ~PSR_CARRY;
-#endif
+ env->syscall_cc &= ~PSR_CARRY;
}
env->regwptr[0] = ret;
/* next instruction */
--
2.34.1
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH v2 04/15] linux-user/sparc: Use TT_TRAP for flush windows
2023-02-16 5:45 [PATCH v2 00/15] linux-user/sparc: Handle missing traps Richard Henderson
` (2 preceding siblings ...)
2023-02-16 5:45 ` [PATCH v2 03/15] linux-user/sparc: Tidy syscall error return Richard Henderson
@ 2023-02-16 5:45 ` Richard Henderson
2023-02-16 7:54 ` Philippe Mathieu-Daudé
2023-02-16 5:45 ` [PATCH v2 05/15] linux-user/sparc: Tidy window spill/fill traps Richard Henderson
` (11 subsequent siblings)
15 siblings, 1 reply; 23+ messages in thread
From: Richard Henderson @ 2023-02-16 5:45 UTC (permalink / raw)
To: qemu-devel; +Cc: laurent
The v9 and pre-v9 code can be unified with this macro.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
linux-user/sparc/cpu_loop.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c
index 051a292ce5..e1d08ff204 100644
--- a/linux-user/sparc/cpu_loop.c
+++ b/linux-user/sparc/cpu_loop.c
@@ -196,15 +196,14 @@ void cpu_loop (CPUSPARCState *env)
env->pc = env->npc;
env->npc = env->npc + 4;
break;
- case 0x83: /* flush windows */
-#ifdef TARGET_ABI32
- case 0x103:
-#endif
+
+ case TT_TRAP + 0x03: /* flush windows */
flush_windows(env);
/* next instruction */
env->pc = env->npc;
env->npc = env->npc + 4;
break;
+
#ifndef TARGET_SPARC64
case TT_WIN_OVF: /* window overflow */
save_window(env);
--
2.34.1
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH v2 05/15] linux-user/sparc: Tidy window spill/fill traps
2023-02-16 5:45 [PATCH v2 00/15] linux-user/sparc: Handle missing traps Richard Henderson
` (3 preceding siblings ...)
2023-02-16 5:45 ` [PATCH v2 04/15] linux-user/sparc: Use TT_TRAP for flush windows Richard Henderson
@ 2023-02-16 5:45 ` Richard Henderson
2023-02-16 7:55 ` Philippe Mathieu-Daudé
2023-02-16 5:45 ` [PATCH v2 06/15] linux-user/sparc: Fix sparc64_{get, set}_context traps Richard Henderson
` (10 subsequent siblings)
15 siblings, 1 reply; 23+ messages in thread
From: Richard Henderson @ 2023-02-16 5:45 UTC (permalink / raw)
To: qemu-devel; +Cc: laurent
Add some macros to localize the hw difference between v9 and pre-v9.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
linux-user/sparc/cpu_loop.c | 23 +++++++++++++----------
1 file changed, 13 insertions(+), 10 deletions(-)
diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c
index e1d08ff204..2bcf32590f 100644
--- a/linux-user/sparc/cpu_loop.c
+++ b/linux-user/sparc/cpu_loop.c
@@ -158,6 +158,15 @@ static void flush_windows(CPUSPARCState *env)
#define syscall_cc xcc
#endif
+/* Avoid ifdefs below for the v9 and pre-v9 hw traps. */
+#ifdef TARGET_SPARC64
+#define TARGET_TT_SPILL TT_SPILL
+#define TARGET_TT_FILL TT_FILL
+#else
+#define TARGET_TT_SPILL TT_WIN_OVF
+#define TARGET_TT_FILL TT_WIN_UNF
+#endif
+
void cpu_loop (CPUSPARCState *env)
{
CPUState *cs = env_cpu(env);
@@ -204,20 +213,14 @@ void cpu_loop (CPUSPARCState *env)
env->npc = env->npc + 4;
break;
-#ifndef TARGET_SPARC64
- case TT_WIN_OVF: /* window overflow */
+ case TARGET_TT_SPILL: /* window overflow */
save_window(env);
break;
- case TT_WIN_UNF: /* window underflow */
- restore_window(env);
- break;
-#else
- case TT_SPILL: /* window overflow */
- save_window(env);
- break;
- case TT_FILL: /* window underflow */
+ case TARGET_TT_FILL: /* window underflow */
restore_window(env);
break;
+
+#ifdef TARGET_SPARC64
#ifndef TARGET_ABI32
case 0x16e:
flush_windows(env);
--
2.34.1
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH v2 06/15] linux-user/sparc: Fix sparc64_{get, set}_context traps
2023-02-16 5:45 [PATCH v2 00/15] linux-user/sparc: Handle missing traps Richard Henderson
` (4 preceding siblings ...)
2023-02-16 5:45 ` [PATCH v2 05/15] linux-user/sparc: Tidy window spill/fill traps Richard Henderson
@ 2023-02-16 5:45 ` Richard Henderson
2023-02-16 5:45 ` [PATCH v2 07/15] linux-user/sparc: Handle software breakpoint trap Richard Henderson
` (9 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Richard Henderson @ 2023-02-16 5:45 UTC (permalink / raw)
To: qemu-devel; +Cc: laurent
These traps are present for sparc64 with ilp32, aka sparc32plus.
Enabling them means adjusting the defines over in signal.c,
and fixing an incorrect usage of abi_ulong when we really meant
the full register, target_ulong.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
linux-user/sparc/cpu_loop.c | 23 +++++++++++------------
linux-user/sparc/signal.c | 36 +++++++++++++++++++-----------------
2 files changed, 30 insertions(+), 29 deletions(-)
diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c
index 2bcf32590f..edbc4f3bdc 100644
--- a/linux-user/sparc/cpu_loop.c
+++ b/linux-user/sparc/cpu_loop.c
@@ -213,6 +213,17 @@ void cpu_loop (CPUSPARCState *env)
env->npc = env->npc + 4;
break;
+#ifdef TARGET_SPARC64
+ case TT_TRAP + 0x6e:
+ flush_windows(env);
+ sparc64_get_context(env);
+ break;
+ case TT_TRAP + 0x6f:
+ flush_windows(env);
+ sparc64_set_context(env);
+ break;
+#endif
+
case TARGET_TT_SPILL: /* window overflow */
save_window(env);
break;
@@ -220,18 +231,6 @@ void cpu_loop (CPUSPARCState *env)
restore_window(env);
break;
-#ifdef TARGET_SPARC64
-#ifndef TARGET_ABI32
- case 0x16e:
- flush_windows(env);
- sparc64_get_context(env);
- break;
- case 0x16f:
- flush_windows(env);
- sparc64_set_context(env);
- break;
-#endif
-#endif
case EXCP_INTERRUPT:
/* just indicate that signals should be handled asap */
break;
diff --git a/linux-user/sparc/signal.c b/linux-user/sparc/signal.c
index b501750fe0..2be9000b9e 100644
--- a/linux-user/sparc/signal.c
+++ b/linux-user/sparc/signal.c
@@ -503,7 +503,23 @@ long do_rt_sigreturn(CPUSPARCState *env)
return -QEMU_ESIGRETURN;
}
-#if defined(TARGET_SPARC64) && !defined(TARGET_ABI32)
+#ifdef TARGET_ABI32
+void setup_sigtramp(abi_ulong sigtramp_page)
+{
+ uint32_t *tramp = lock_user(VERIFY_WRITE, sigtramp_page, 2 * 8, 0);
+ assert(tramp != NULL);
+
+ default_sigreturn = sigtramp_page;
+ install_sigtramp(tramp, TARGET_NR_sigreturn);
+
+ default_rt_sigreturn = sigtramp_page + 8;
+ install_sigtramp(tramp + 2, TARGET_NR_rt_sigreturn);
+
+ unlock_user(tramp, sigtramp_page, 2 * 8);
+}
+#endif
+
+#ifdef TARGET_SPARC64
#define SPARC_MC_TSTATE 0
#define SPARC_MC_PC 1
#define SPARC_MC_NPC 2
@@ -575,7 +591,7 @@ void sparc64_set_context(CPUSPARCState *env)
struct target_ucontext *ucp;
target_mc_gregset_t *grp;
target_mc_fpu_t *fpup;
- abi_ulong pc, npc, tstate;
+ target_ulong pc, npc, tstate;
unsigned int i;
unsigned char fenab;
@@ -773,18 +789,4 @@ do_sigsegv:
unlock_user_struct(ucp, ucp_addr, 1);
force_sig(TARGET_SIGSEGV);
}
-#else
-void setup_sigtramp(abi_ulong sigtramp_page)
-{
- uint32_t *tramp = lock_user(VERIFY_WRITE, sigtramp_page, 2 * 8, 0);
- assert(tramp != NULL);
-
- default_sigreturn = sigtramp_page;
- install_sigtramp(tramp, TARGET_NR_sigreturn);
-
- default_rt_sigreturn = sigtramp_page + 8;
- install_sigtramp(tramp + 2, TARGET_NR_rt_sigreturn);
-
- unlock_user(tramp, sigtramp_page, 2 * 8);
-}
-#endif
+#endif /* TARGET_SPARC64 */
--
2.34.1
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH v2 07/15] linux-user/sparc: Handle software breakpoint trap
2023-02-16 5:45 [PATCH v2 00/15] linux-user/sparc: Handle missing traps Richard Henderson
` (5 preceding siblings ...)
2023-02-16 5:45 ` [PATCH v2 06/15] linux-user/sparc: Fix sparc64_{get, set}_context traps Richard Henderson
@ 2023-02-16 5:45 ` Richard Henderson
2023-02-16 5:45 ` [PATCH v2 08/15] linux-user/sparc: Handle division by zero traps Richard Henderson
` (8 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Richard Henderson @ 2023-02-16 5:45 UTC (permalink / raw)
To: qemu-devel; +Cc: laurent
This is 'ta 1' for both v9 and pre-v9.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
linux-user/sparc/cpu_loop.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c
index edbc4f3bdc..c14eaea163 100644
--- a/linux-user/sparc/cpu_loop.c
+++ b/linux-user/sparc/cpu_loop.c
@@ -206,6 +206,11 @@ void cpu_loop (CPUSPARCState *env)
env->npc = env->npc + 4;
break;
+ case TT_TRAP + 0x01: /* breakpoint */
+ case EXCP_DEBUG:
+ force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->pc);
+ break;
+
case TT_TRAP + 0x03: /* flush windows */
flush_windows(env);
/* next instruction */
@@ -237,9 +242,6 @@ void cpu_loop (CPUSPARCState *env)
case TT_ILL_INSN:
force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPC, env->pc);
break;
- case EXCP_DEBUG:
- force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->pc);
- break;
case EXCP_ATOMIC:
cpu_exec_step_atomic(cs);
break;
--
2.34.1
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH v2 08/15] linux-user/sparc: Handle division by zero traps
2023-02-16 5:45 [PATCH v2 00/15] linux-user/sparc: Handle missing traps Richard Henderson
` (6 preceding siblings ...)
2023-02-16 5:45 ` [PATCH v2 07/15] linux-user/sparc: Handle software breakpoint trap Richard Henderson
@ 2023-02-16 5:45 ` Richard Henderson
2023-02-16 5:45 ` [PATCH v2 09/15] linux-user/sparc: Handle getcc, setcc, getpsr traps Richard Henderson
` (7 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Richard Henderson @ 2023-02-16 5:45 UTC (permalink / raw)
To: qemu-devel; +Cc: laurent
In addition to the hw trap vector, there is a software trap
assigned for older sparc without hw division instructions.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
linux-user/sparc/cpu_loop.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c
index c14eaea163..e04c842867 100644
--- a/linux-user/sparc/cpu_loop.c
+++ b/linux-user/sparc/cpu_loop.c
@@ -211,6 +211,11 @@ void cpu_loop (CPUSPARCState *env)
force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->pc);
break;
+ case TT_TRAP + 0x02: /* div0 */
+ case TT_DIV_ZERO:
+ force_sig_fault(TARGET_SIGFPE, TARGET_FPE_INTDIV, env->pc);
+ break;
+
case TT_TRAP + 0x03: /* flush windows */
flush_windows(env);
/* next instruction */
--
2.34.1
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH v2 09/15] linux-user/sparc: Handle getcc, setcc, getpsr traps
2023-02-16 5:45 [PATCH v2 00/15] linux-user/sparc: Handle missing traps Richard Henderson
` (7 preceding siblings ...)
2023-02-16 5:45 ` [PATCH v2 08/15] linux-user/sparc: Handle division by zero traps Richard Henderson
@ 2023-02-16 5:45 ` Richard Henderson
2023-02-16 5:45 ` [PATCH v2 10/15] linux-user/sparc: Handle priviledged opcode trap Richard Henderson
` (6 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Richard Henderson @ 2023-02-16 5:45 UTC (permalink / raw)
To: qemu-devel; +Cc: laurent
These are really only meaningful for sparc32, but they're
still present for backward compatibility for sparc64.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
linux-user/sparc/cpu_loop.c | 62 +++++++++++++++++++++++++++++++++++--
1 file changed, 59 insertions(+), 3 deletions(-)
diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c
index e04c842867..a3edb353f6 100644
--- a/linux-user/sparc/cpu_loop.c
+++ b/linux-user/sparc/cpu_loop.c
@@ -149,6 +149,51 @@ static void flush_windows(CPUSPARCState *env)
#endif
}
+static void next_instruction(CPUSPARCState *env)
+{
+ env->pc = env->npc;
+ env->npc = env->npc + 4;
+}
+
+static uint32_t do_getcc(CPUSPARCState *env)
+{
+#ifdef TARGET_SPARC64
+ return cpu_get_ccr(env) & 0xf;
+#else
+ return extract32(cpu_get_psr(env), 20, 4);
+#endif
+}
+
+static void do_setcc(CPUSPARCState *env, uint32_t icc)
+{
+#ifdef TARGET_SPARC64
+ cpu_put_ccr(env, (cpu_get_ccr(env) & 0xf0) | (icc & 0xf));
+#else
+ cpu_put_psr(env, deposit32(cpu_get_psr(env), 20, 4, icc));
+#endif
+}
+
+static uint32_t do_getpsr(CPUSPARCState *env)
+{
+#ifdef TARGET_SPARC64
+ const uint64_t TSTATE_CWP = 0x1f;
+ const uint64_t TSTATE_ICC = 0xfull << 32;
+ const uint64_t TSTATE_XCC = 0xfull << 36;
+ const uint32_t PSR_S = 0x00000080u;
+ const uint32_t PSR_V8PLUS = 0xff000000u;
+ uint64_t tstate = sparc64_tstate(env);
+
+ /* See <asm/psrcompat.h>, tstate_to_psr. */
+ return ((tstate & TSTATE_CWP) |
+ PSR_S |
+ ((tstate & TSTATE_ICC) >> 12) |
+ ((tstate & TSTATE_XCC) >> 20) |
+ PSR_V8PLUS);
+#else
+ return (cpu_get_psr(env) & (PSR_ICC | PSR_CWP)) | PSR_S;
+#endif
+}
+
/* Avoid ifdefs below for the abi32 and abi64 paths. */
#ifdef TARGET_ABI32
#define TARGET_TT_SYSCALL (TT_TRAP + 0x10) /* t_linux */
@@ -218,9 +263,20 @@ void cpu_loop (CPUSPARCState *env)
case TT_TRAP + 0x03: /* flush windows */
flush_windows(env);
- /* next instruction */
- env->pc = env->npc;
- env->npc = env->npc + 4;
+ next_instruction(env);
+ break;
+
+ case TT_TRAP + 0x20: /* getcc */
+ env->gregs[1] = do_getcc(env);
+ next_instruction(env);
+ break;
+ case TT_TRAP + 0x21: /* setcc */
+ do_setcc(env, env->gregs[1]);
+ next_instruction(env);
+ break;
+ case TT_TRAP + 0x22: /* getpsr */
+ env->gregs[1] = do_getpsr(env);
+ next_instruction(env);
break;
#ifdef TARGET_SPARC64
--
2.34.1
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH v2 10/15] linux-user/sparc: Handle priviledged opcode trap
2023-02-16 5:45 [PATCH v2 00/15] linux-user/sparc: Handle missing traps Richard Henderson
` (8 preceding siblings ...)
2023-02-16 5:45 ` [PATCH v2 09/15] linux-user/sparc: Handle getcc, setcc, getpsr traps Richard Henderson
@ 2023-02-16 5:45 ` Richard Henderson
2023-02-16 5:45 ` [PATCH v2 11/15] linux-user/sparc: Handle privilidged action trap Richard Henderson
` (5 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Richard Henderson @ 2023-02-16 5:45 UTC (permalink / raw)
To: qemu-devel; +Cc: laurent
For the most part priviledged opcodes are ifdefed out of the
user-only sparc translator, which will then incorrectly produce
illegal opcode traps. But there are some code paths that
properly raise TT_PRIV_INSN, so we must handle it.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
linux-user/sparc/cpu_loop.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c
index a3edb353f6..61b6e81459 100644
--- a/linux-user/sparc/cpu_loop.c
+++ b/linux-user/sparc/cpu_loop.c
@@ -303,6 +303,9 @@ void cpu_loop (CPUSPARCState *env)
case TT_ILL_INSN:
force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLOPC, env->pc);
break;
+ case TT_PRIV_INSN:
+ force_sig_fault(TARGET_SIGILL, TARGET_ILL_PRVOPC, env->pc);
+ break;
case EXCP_ATOMIC:
cpu_exec_step_atomic(cs);
break;
--
2.34.1
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH v2 11/15] linux-user/sparc: Handle privilidged action trap
2023-02-16 5:45 [PATCH v2 00/15] linux-user/sparc: Handle missing traps Richard Henderson
` (9 preceding siblings ...)
2023-02-16 5:45 ` [PATCH v2 10/15] linux-user/sparc: Handle priviledged opcode trap Richard Henderson
@ 2023-02-16 5:45 ` Richard Henderson
2023-02-16 5:45 ` [PATCH v2 12/15] linux-user/sparc: Handle coprocessor disabled trap Richard Henderson
` (4 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Richard Henderson @ 2023-02-16 5:45 UTC (permalink / raw)
To: qemu-devel; +Cc: laurent
This is raised by using an %asi < 0x80 in user-mode.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
linux-user/sparc/cpu_loop.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c
index 61b6e81459..43f19fbd91 100644
--- a/linux-user/sparc/cpu_loop.c
+++ b/linux-user/sparc/cpu_loop.c
@@ -306,6 +306,12 @@ void cpu_loop (CPUSPARCState *env)
case TT_PRIV_INSN:
force_sig_fault(TARGET_SIGILL, TARGET_ILL_PRVOPC, env->pc);
break;
+#ifdef TARGET_SPARC64
+ case TT_PRIV_ACT:
+ /* Note do_privact defers to do_privop. */
+ force_sig_fault(TARGET_SIGILL, TARGET_ILL_PRVOPC, env->pc);
+ break;
+#endif
case EXCP_ATOMIC:
cpu_exec_step_atomic(cs);
break;
--
2.34.1
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH v2 12/15] linux-user/sparc: Handle coprocessor disabled trap
2023-02-16 5:45 [PATCH v2 00/15] linux-user/sparc: Handle missing traps Richard Henderson
` (10 preceding siblings ...)
2023-02-16 5:45 ` [PATCH v2 11/15] linux-user/sparc: Handle privilidged action trap Richard Henderson
@ 2023-02-16 5:45 ` Richard Henderson
2023-02-16 5:45 ` [PATCH v2 13/15] linux-user/sparc: Handle unimplemented flush trap Richard Henderson
` (3 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Richard Henderson @ 2023-02-16 5:45 UTC (permalink / raw)
To: qemu-devel; +Cc: laurent
Since qemu does not implement a sparc coprocessor, all such
instructions raise this trap. Because of that, we never raise
the coprocessor exception trap, which would be vector 0x28.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
linux-user/sparc/cpu_loop.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c
index 43f19fbd91..bf7e10216f 100644
--- a/linux-user/sparc/cpu_loop.c
+++ b/linux-user/sparc/cpu_loop.c
@@ -311,6 +311,10 @@ void cpu_loop (CPUSPARCState *env)
/* Note do_privact defers to do_privop. */
force_sig_fault(TARGET_SIGILL, TARGET_ILL_PRVOPC, env->pc);
break;
+#else
+ case TT_NCP_INSN:
+ force_sig_fault(TARGET_SIGILL, TARGET_ILL_COPROC, env->pc);
+ break;
#endif
case EXCP_ATOMIC:
cpu_exec_step_atomic(cs);
--
2.34.1
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH v2 13/15] linux-user/sparc: Handle unimplemented flush trap
2023-02-16 5:45 [PATCH v2 00/15] linux-user/sparc: Handle missing traps Richard Henderson
` (11 preceding siblings ...)
2023-02-16 5:45 ` [PATCH v2 12/15] linux-user/sparc: Handle coprocessor disabled trap Richard Henderson
@ 2023-02-16 5:45 ` Richard Henderson
2023-02-16 5:45 ` [PATCH v2 14/15] linux-user/sparc: Handle floating-point exceptions Richard Henderson
` (2 subsequent siblings)
15 siblings, 0 replies; 23+ messages in thread
From: Richard Henderson @ 2023-02-16 5:45 UTC (permalink / raw)
To: qemu-devel; +Cc: laurent
For sparc64, TT_UNIMP_FLUSH == TT_ILL_INSN, so this is
already handled. For sparc32, the kernel uses SKIP_TRAP.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
linux-user/sparc/cpu_loop.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c
index bf7e10216f..093358a39a 100644
--- a/linux-user/sparc/cpu_loop.c
+++ b/linux-user/sparc/cpu_loop.c
@@ -315,6 +315,9 @@ void cpu_loop (CPUSPARCState *env)
case TT_NCP_INSN:
force_sig_fault(TARGET_SIGILL, TARGET_ILL_COPROC, env->pc);
break;
+ case TT_UNIMP_FLUSH:
+ next_instruction(env);
+ break;
#endif
case EXCP_ATOMIC:
cpu_exec_step_atomic(cs);
--
2.34.1
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH v2 14/15] linux-user/sparc: Handle floating-point exceptions
2023-02-16 5:45 [PATCH v2 00/15] linux-user/sparc: Handle missing traps Richard Henderson
` (12 preceding siblings ...)
2023-02-16 5:45 ` [PATCH v2 13/15] linux-user/sparc: Handle unimplemented flush trap Richard Henderson
@ 2023-02-16 5:45 ` Richard Henderson
2023-02-16 5:45 ` [PATCH v2 15/15] linux-user/sparc: Handle tag overflow traps Richard Henderson
2023-03-07 15:56 ` [PATCH v2 00/15] linux-user/sparc: Handle missing traps Laurent Vivier
15 siblings, 0 replies; 23+ messages in thread
From: Richard Henderson @ 2023-02-16 5:45 UTC (permalink / raw)
To: qemu-devel; +Cc: laurent
Raise SIGFPE for ieee exceptions.
The other types, such as FSR_FTT_UNIMPFPOP, should not appear,
because we enable normal emulation of missing insns at the
start of sparc_cpu_realizefn().
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
target/sparc/cpu.h | 3 +--
linux-user/sparc/cpu_loop.c | 22 ++++++++++++++++++++++
2 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/target/sparc/cpu.h b/target/sparc/cpu.h
index e478c5eb16..ae8de606d5 100644
--- a/target/sparc/cpu.h
+++ b/target/sparc/cpu.h
@@ -197,8 +197,7 @@ enum {
#define FSR_FTT2 (1ULL << 16)
#define FSR_FTT1 (1ULL << 15)
#define FSR_FTT0 (1ULL << 14)
-//gcc warns about constant overflow for ~FSR_FTT_MASK
-//#define FSR_FTT_MASK (FSR_FTT2 | FSR_FTT1 | FSR_FTT0)
+#define FSR_FTT_MASK (FSR_FTT2 | FSR_FTT1 | FSR_FTT0)
#ifdef TARGET_SPARC64
#define FSR_FTT_NMASK 0xfffffffffffe3fffULL
#define FSR_FTT_CEXC_NMASK 0xfffffffffffe3fe0ULL
diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c
index 093358a39a..5a8a71e976 100644
--- a/linux-user/sparc/cpu_loop.c
+++ b/linux-user/sparc/cpu_loop.c
@@ -297,6 +297,28 @@ void cpu_loop (CPUSPARCState *env)
restore_window(env);
break;
+ case TT_FP_EXCP:
+ {
+ int code = TARGET_FPE_FLTUNK;
+ target_ulong fsr = env->fsr;
+
+ if ((fsr & FSR_FTT_MASK) == FSR_FTT_IEEE_EXCP) {
+ if (fsr & FSR_NVC) {
+ code = TARGET_FPE_FLTINV;
+ } else if (fsr & FSR_OFC) {
+ code = TARGET_FPE_FLTOVF;
+ } else if (fsr & FSR_UFC) {
+ code = TARGET_FPE_FLTUND;
+ } else if (fsr & FSR_DZC) {
+ code = TARGET_FPE_FLTDIV;
+ } else if (fsr & FSR_NXC) {
+ code = TARGET_FPE_FLTRES;
+ }
+ }
+ force_sig_fault(TARGET_SIGFPE, code, env->pc);
+ }
+ break;
+
case EXCP_INTERRUPT:
/* just indicate that signals should be handled asap */
break;
--
2.34.1
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH v2 15/15] linux-user/sparc: Handle tag overflow traps
2023-02-16 5:45 [PATCH v2 00/15] linux-user/sparc: Handle missing traps Richard Henderson
` (13 preceding siblings ...)
2023-02-16 5:45 ` [PATCH v2 14/15] linux-user/sparc: Handle floating-point exceptions Richard Henderson
@ 2023-02-16 5:45 ` Richard Henderson
2023-03-07 15:56 ` [PATCH v2 00/15] linux-user/sparc: Handle missing traps Laurent Vivier
15 siblings, 0 replies; 23+ messages in thread
From: Richard Henderson @ 2023-02-16 5:45 UTC (permalink / raw)
To: qemu-devel; +Cc: laurent
This trap is raised by taddcctv and tsubcctv insns.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
linux-user/sparc/target_signal.h | 2 +-
linux-user/syscall_defs.h | 5 +++++
linux-user/sparc/cpu_loop.c | 3 +++
3 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/linux-user/sparc/target_signal.h b/linux-user/sparc/target_signal.h
index 87757f0c4e..f223eb4af6 100644
--- a/linux-user/sparc/target_signal.h
+++ b/linux-user/sparc/target_signal.h
@@ -8,7 +8,7 @@
#define TARGET_SIGTRAP 5
#define TARGET_SIGABRT 6
#define TARGET_SIGIOT 6
-#define TARGET_SIGSTKFLT 7 /* actually EMT */
+#define TARGET_SIGEMT 7
#define TARGET_SIGFPE 8
#define TARGET_SIGKILL 9
#define TARGET_SIGBUS 10
diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
index 77864de57f..614a1cbc8e 100644
--- a/linux-user/syscall_defs.h
+++ b/linux-user/syscall_defs.h
@@ -717,6 +717,11 @@ typedef struct target_siginfo {
#define TARGET_TRAP_HWBKPT (4) /* hardware breakpoint/watchpoint */
#define TARGET_TRAP_UNK (5) /* undiagnosed trap */
+/*
+ * SIGEMT si_codes
+ */
+#define TARGET_EMT_TAGOVF 1 /* tag overflow */
+
#include "target_resource.h"
struct target_pollfd {
diff --git a/linux-user/sparc/cpu_loop.c b/linux-user/sparc/cpu_loop.c
index 5a8a71e976..b36bb2574b 100644
--- a/linux-user/sparc/cpu_loop.c
+++ b/linux-user/sparc/cpu_loop.c
@@ -328,6 +328,9 @@ void cpu_loop (CPUSPARCState *env)
case TT_PRIV_INSN:
force_sig_fault(TARGET_SIGILL, TARGET_ILL_PRVOPC, env->pc);
break;
+ case TT_TOVF:
+ force_sig_fault(TARGET_SIGEMT, TARGET_EMT_TAGOVF, env->pc);
+ break;
#ifdef TARGET_SPARC64
case TT_PRIV_ACT:
/* Note do_privact defers to do_privop. */
--
2.34.1
^ permalink raw reply related [flat|nested] 23+ messages in thread
* Re: [PATCH v2 01/15] linux-user/sparc: Raise SIGILL for all unhandled software traps
2023-02-16 5:45 ` [PATCH v2 01/15] linux-user/sparc: Raise SIGILL for all unhandled software traps Richard Henderson
@ 2023-02-16 6:07 ` Richard Henderson
0 siblings, 0 replies; 23+ messages in thread
From: Richard Henderson @ 2023-02-16 6:07 UTC (permalink / raw)
To: qemu-devel; +Cc: laurent, Ilya Leoshkevich
On 2/15/23 19:45, Richard Henderson wrote:
> The linux kernel's trap tables vector all unassigned trap
> numbers to BAD_TRAP, which then raises SIGILL.
>
> Tested-by: Ilya Leoshkevich <iii@linux.ibm.com>
> Reported-by: Ilya Leoshkevich <iii@linux.ibm.com>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> linux-user/sparc/cpu_loop.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
I'll queue this to tcg-next, along with Ilya's other start_exclusive patches.
r~
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2 02/15] linux-user/sparc: Tidy syscall trap
2023-02-16 5:45 ` [PATCH v2 02/15] linux-user/sparc: Tidy syscall trap Richard Henderson
@ 2023-02-16 7:51 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 23+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-02-16 7:51 UTC (permalink / raw)
To: Richard Henderson, qemu-devel; +Cc: laurent
On 16/2/23 06:45, Richard Henderson wrote:
> Use TT_TRAP.
>
> For sparc32, 0x88 is the "Slowaris" system call, currently BAD_TRAP
> in the kernel's ttable_32.S. For sparc64, 0x110 is tl0_linux32, the
> sparc32 trap, now folded into the TARGET_ABI32 case via TT_TRAP.
>
> For sparc64, there does still exist trap 0x111 as tl0_oldlinux64,
> which was replaced by 0x16d as tl0_linux64 in 1998. Since no one
> has noticed, don't bother implementing it now.
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> linux-user/sparc/cpu_loop.c | 14 +++++++-------
> 1 file changed, 7 insertions(+), 7 deletions(-)
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2 04/15] linux-user/sparc: Use TT_TRAP for flush windows
2023-02-16 5:45 ` [PATCH v2 04/15] linux-user/sparc: Use TT_TRAP for flush windows Richard Henderson
@ 2023-02-16 7:54 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 23+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-02-16 7:54 UTC (permalink / raw)
To: Richard Henderson, qemu-devel; +Cc: laurent
On 16/2/23 06:45, Richard Henderson wrote:
> The v9 and pre-v9 code can be unified with this macro.
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> linux-user/sparc/cpu_loop.c | 7 +++----
> 1 file changed, 3 insertions(+), 4 deletions(-)
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2 05/15] linux-user/sparc: Tidy window spill/fill traps
2023-02-16 5:45 ` [PATCH v2 05/15] linux-user/sparc: Tidy window spill/fill traps Richard Henderson
@ 2023-02-16 7:55 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 23+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-02-16 7:55 UTC (permalink / raw)
To: Richard Henderson, qemu-devel; +Cc: laurent
On 16/2/23 06:45, Richard Henderson wrote:
> Add some macros to localize the hw difference between v9 and pre-v9.
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> linux-user/sparc/cpu_loop.c | 23 +++++++++++++----------
> 1 file changed, 13 insertions(+), 10 deletions(-)
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2 00/15] linux-user/sparc: Handle missing traps
2023-02-16 5:45 [PATCH v2 00/15] linux-user/sparc: Handle missing traps Richard Henderson
` (14 preceding siblings ...)
2023-02-16 5:45 ` [PATCH v2 15/15] linux-user/sparc: Handle tag overflow traps Richard Henderson
@ 2023-03-07 15:56 ` Laurent Vivier
2023-03-07 17:07 ` Richard Henderson
15 siblings, 1 reply; 23+ messages in thread
From: Laurent Vivier @ 2023-03-07 15:56 UTC (permalink / raw)
To: Richard Henderson, qemu-devel
Hi Richard,
I don't have the time to review your series, do you want I queue it in the linux-user branch and I
keep it if it passes my test suite?
Thanks,
Laurent
Le 16/02/2023 à 06:45, Richard Henderson a écrit :
> Lots of missing trap codes for cpu_loop().
>
> Changes for v2:
> - Fix v8plus syscall trap.
> - New patch to unify syscall error return via C flag.
>
>
> r~
>
>
> Richard Henderson (15):
> linux-user/sparc: Raise SIGILL for all unhandled software traps
> linux-user/sparc: Tidy syscall trap
> linux-user/sparc: Tidy syscall error return
> linux-user/sparc: Use TT_TRAP for flush windows
> linux-user/sparc: Tidy window spill/fill traps
> linux-user/sparc: Fix sparc64_{get,set}_context traps
> linux-user/sparc: Handle software breakpoint trap
> linux-user/sparc: Handle division by zero traps
> linux-user/sparc: Handle getcc, setcc, getpsr traps
> linux-user/sparc: Handle priviledged opcode trap
> linux-user/sparc: Handle privilidged action trap
> linux-user/sparc: Handle coprocessor disabled trap
> linux-user/sparc: Handle unimplemented flush trap
> linux-user/sparc: Handle floating-point exceptions
> linux-user/sparc: Handle tag overflow traps
>
> linux-user/sparc/target_signal.h | 2 +-
> linux-user/syscall_defs.h | 5 +
> target/sparc/cpu.h | 3 +-
> linux-user/sparc/cpu_loop.c | 190 ++++++++++++++++++++++++-------
> linux-user/sparc/signal.c | 36 +++---
> 5 files changed, 175 insertions(+), 61 deletions(-)
>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2 00/15] linux-user/sparc: Handle missing traps
2023-03-07 15:56 ` [PATCH v2 00/15] linux-user/sparc: Handle missing traps Laurent Vivier
@ 2023-03-07 17:07 ` Richard Henderson
2023-03-07 18:23 ` Laurent Vivier
0 siblings, 1 reply; 23+ messages in thread
From: Richard Henderson @ 2023-03-07 17:07 UTC (permalink / raw)
To: Laurent Vivier, qemu-devel
On 3/7/23 07:56, Laurent Vivier wrote:
> Hi Richard,
>
> I don't have the time to review your series, do you want I queue it in the linux-user
> branch and I keep it if it passes my test suite?
Yes please.
r~
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v2 00/15] linux-user/sparc: Handle missing traps
2023-03-07 17:07 ` Richard Henderson
@ 2023-03-07 18:23 ` Laurent Vivier
0 siblings, 0 replies; 23+ messages in thread
From: Laurent Vivier @ 2023-03-07 18:23 UTC (permalink / raw)
To: Richard Henderson, qemu-devel
Le 07/03/2023 à 18:07, Richard Henderson a écrit :
> On 3/7/23 07:56, Laurent Vivier wrote:
>> Hi Richard,
>>
>> I don't have the time to review your series, do you want I queue it in the linux-user branch and I
>> keep it if it passes my test suite?
>
> Yes please.
>
Done, except PATCH 1 that is already merged.
Thanks,
Laurent
^ permalink raw reply [flat|nested] 23+ messages in thread
end of thread, other threads:[~2023-03-07 18:23 UTC | newest]
Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-02-16 5:45 [PATCH v2 00/15] linux-user/sparc: Handle missing traps Richard Henderson
2023-02-16 5:45 ` [PATCH v2 01/15] linux-user/sparc: Raise SIGILL for all unhandled software traps Richard Henderson
2023-02-16 6:07 ` Richard Henderson
2023-02-16 5:45 ` [PATCH v2 02/15] linux-user/sparc: Tidy syscall trap Richard Henderson
2023-02-16 7:51 ` Philippe Mathieu-Daudé
2023-02-16 5:45 ` [PATCH v2 03/15] linux-user/sparc: Tidy syscall error return Richard Henderson
2023-02-16 5:45 ` [PATCH v2 04/15] linux-user/sparc: Use TT_TRAP for flush windows Richard Henderson
2023-02-16 7:54 ` Philippe Mathieu-Daudé
2023-02-16 5:45 ` [PATCH v2 05/15] linux-user/sparc: Tidy window spill/fill traps Richard Henderson
2023-02-16 7:55 ` Philippe Mathieu-Daudé
2023-02-16 5:45 ` [PATCH v2 06/15] linux-user/sparc: Fix sparc64_{get, set}_context traps Richard Henderson
2023-02-16 5:45 ` [PATCH v2 07/15] linux-user/sparc: Handle software breakpoint trap Richard Henderson
2023-02-16 5:45 ` [PATCH v2 08/15] linux-user/sparc: Handle division by zero traps Richard Henderson
2023-02-16 5:45 ` [PATCH v2 09/15] linux-user/sparc: Handle getcc, setcc, getpsr traps Richard Henderson
2023-02-16 5:45 ` [PATCH v2 10/15] linux-user/sparc: Handle priviledged opcode trap Richard Henderson
2023-02-16 5:45 ` [PATCH v2 11/15] linux-user/sparc: Handle privilidged action trap Richard Henderson
2023-02-16 5:45 ` [PATCH v2 12/15] linux-user/sparc: Handle coprocessor disabled trap Richard Henderson
2023-02-16 5:45 ` [PATCH v2 13/15] linux-user/sparc: Handle unimplemented flush trap Richard Henderson
2023-02-16 5:45 ` [PATCH v2 14/15] linux-user/sparc: Handle floating-point exceptions Richard Henderson
2023-02-16 5:45 ` [PATCH v2 15/15] linux-user/sparc: Handle tag overflow traps Richard Henderson
2023-03-07 15:56 ` [PATCH v2 00/15] linux-user/sparc: Handle missing traps Laurent Vivier
2023-03-07 17:07 ` Richard Henderson
2023-03-07 18:23 ` Laurent Vivier
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).