* [PATCH v2 0/4] hexagon: Fixes to sigcontext
@ 2025-10-09 19:59 Brian Cain
2025-10-09 19:59 ` [PATCH v2 1/4] linux-user/hexagon: Fix sigcontext Brian Cain
` (4 more replies)
0 siblings, 5 replies; 12+ messages in thread
From: Brian Cain @ 2025-10-09 19:59 UTC (permalink / raw)
To: qemu-devel
Cc: brian.cain, richard.henderson, philmd, matheus.bernardino, ale,
anjo, marco.liebel, ltaylorsimpson, alex.bennee, quic_mburton,
sid.manning
Revised from the original series at
https://lore.kernel.org/qemu-devel/20251008014754.3565553-1-brian.cain@oss.qualcomm.com/
Brian Cain (4):
linux-user/hexagon: Fix sigcontext
linux-user/hexagon: use abi_ulong
linux-user/hexagon: Use an array for GPRs
tests/tcg/hexagon: Add cs{0,1} coverage
linux-user/hexagon/signal.c | 184 +++++++++++------------------
tests/tcg/hexagon/signal_context.c | 22 +++-
2 files changed, 91 insertions(+), 115 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v2 1/4] linux-user/hexagon: Fix sigcontext
2025-10-09 19:59 [PATCH v2 0/4] hexagon: Fixes to sigcontext Brian Cain
@ 2025-10-09 19:59 ` Brian Cain
2025-10-09 21:36 ` Taylor Simpson
2025-10-09 19:59 ` [PATCH v2 2/4] linux-user/hexagon: use abi_ulong Brian Cain
` (3 subsequent siblings)
4 siblings, 1 reply; 12+ messages in thread
From: Brian Cain @ 2025-10-09 19:59 UTC (permalink / raw)
To: qemu-devel
Cc: brian.cain, richard.henderson, philmd, matheus.bernardino, ale,
anjo, marco.liebel, ltaylorsimpson, alex.bennee, quic_mburton,
sid.manning, Alex Rønne Petersen, Laurent Vivier
In order to correspond with the kernel, we've now (1) moved the
preds[] to the right offset and combined the representation as a single
ulong "p3_0", (2), added the cs{0,1} registers, (3) added a pad for 48
words, (4) added the user regs structure to an 8-byte aligned
target_sigcontext structure.
Co-authored-by: Alex Rønne Petersen <alex@alexrp.com>
Signed-off-by: Brian Cain <brian.cain@oss.qualcomm.com>
---
linux-user/hexagon/signal.c | 209 ++++++++++++++++++++----------------
1 file changed, 117 insertions(+), 92 deletions(-)
diff --git a/linux-user/hexagon/signal.c b/linux-user/hexagon/signal.c
index 492b51f155..2847952216 100644
--- a/linux-user/hexagon/signal.c
+++ b/linux-user/hexagon/signal.c
@@ -23,7 +23,7 @@
#include "signal-common.h"
#include "linux-user/trace.h"
-struct target_sigcontext {
+struct target_user_regs_struct {
target_ulong r0, r1, r2, r3;
target_ulong r4, r5, r6, r7;
target_ulong r8, r9, r10, r11;
@@ -39,14 +39,23 @@ struct target_sigcontext {
target_ulong m0;
target_ulong m1;
target_ulong usr;
+ target_ulong p3_0;
target_ulong gp;
target_ulong ugp;
target_ulong pc;
target_ulong cause;
target_ulong badva;
- target_ulong pred[NUM_PREGS];
+ target_ulong cs0;
+ target_ulong cs1;
+ target_ulong pad1; /* pad to 48 words */
};
+QEMU_BUILD_BUG_ON(sizeof(struct target_user_regs_struct) != 48 * 4);
+
+struct target_sigcontext {
+ struct target_user_regs_struct sc_regs;
+} QEMU_ALIGNED(8);
+
struct target_ucontext {
unsigned long uc_flags;
target_ulong uc_link; /* target pointer */
@@ -76,53 +85,63 @@ static abi_ulong get_sigframe(struct target_sigaction *ka,
static void setup_sigcontext(struct target_sigcontext *sc, CPUHexagonState *env)
{
- __put_user(env->gpr[HEX_REG_R00], &sc->r0);
- __put_user(env->gpr[HEX_REG_R01], &sc->r1);
- __put_user(env->gpr[HEX_REG_R02], &sc->r2);
- __put_user(env->gpr[HEX_REG_R03], &sc->r3);
- __put_user(env->gpr[HEX_REG_R04], &sc->r4);
- __put_user(env->gpr[HEX_REG_R05], &sc->r5);
- __put_user(env->gpr[HEX_REG_R06], &sc->r6);
- __put_user(env->gpr[HEX_REG_R07], &sc->r7);
- __put_user(env->gpr[HEX_REG_R08], &sc->r8);
- __put_user(env->gpr[HEX_REG_R09], &sc->r9);
- __put_user(env->gpr[HEX_REG_R10], &sc->r10);
- __put_user(env->gpr[HEX_REG_R11], &sc->r11);
- __put_user(env->gpr[HEX_REG_R12], &sc->r12);
- __put_user(env->gpr[HEX_REG_R13], &sc->r13);
- __put_user(env->gpr[HEX_REG_R14], &sc->r14);
- __put_user(env->gpr[HEX_REG_R15], &sc->r15);
- __put_user(env->gpr[HEX_REG_R16], &sc->r16);
- __put_user(env->gpr[HEX_REG_R17], &sc->r17);
- __put_user(env->gpr[HEX_REG_R18], &sc->r18);
- __put_user(env->gpr[HEX_REG_R19], &sc->r19);
- __put_user(env->gpr[HEX_REG_R20], &sc->r20);
- __put_user(env->gpr[HEX_REG_R21], &sc->r21);
- __put_user(env->gpr[HEX_REG_R22], &sc->r22);
- __put_user(env->gpr[HEX_REG_R23], &sc->r23);
- __put_user(env->gpr[HEX_REG_R24], &sc->r24);
- __put_user(env->gpr[HEX_REG_R25], &sc->r25);
- __put_user(env->gpr[HEX_REG_R26], &sc->r26);
- __put_user(env->gpr[HEX_REG_R27], &sc->r27);
- __put_user(env->gpr[HEX_REG_R28], &sc->r28);
- __put_user(env->gpr[HEX_REG_R29], &sc->r29);
- __put_user(env->gpr[HEX_REG_R30], &sc->r30);
- __put_user(env->gpr[HEX_REG_R31], &sc->r31);
- __put_user(env->gpr[HEX_REG_SA0], &sc->sa0);
- __put_user(env->gpr[HEX_REG_LC0], &sc->lc0);
- __put_user(env->gpr[HEX_REG_SA1], &sc->sa1);
- __put_user(env->gpr[HEX_REG_LC1], &sc->lc1);
- __put_user(env->gpr[HEX_REG_M0], &sc->m0);
- __put_user(env->gpr[HEX_REG_M1], &sc->m1);
- __put_user(env->gpr[HEX_REG_USR], &sc->usr);
- __put_user(env->gpr[HEX_REG_GP], &sc->gp);
- __put_user(env->gpr[HEX_REG_UGP], &sc->ugp);
- __put_user(env->gpr[HEX_REG_PC], &sc->pc);
+ target_ulong preds = 0;
- int i;
- for (i = 0; i < NUM_PREGS; i++) {
- __put_user(env->pred[i], &(sc->pred[i]));
+ __put_user(env->gpr[HEX_REG_R00], &sc->sc_regs.r0);
+ __put_user(env->gpr[HEX_REG_R01], &sc->sc_regs.r1);
+ __put_user(env->gpr[HEX_REG_R02], &sc->sc_regs.r2);
+ __put_user(env->gpr[HEX_REG_R03], &sc->sc_regs.r3);
+ __put_user(env->gpr[HEX_REG_R04], &sc->sc_regs.r4);
+ __put_user(env->gpr[HEX_REG_R05], &sc->sc_regs.r5);
+ __put_user(env->gpr[HEX_REG_R06], &sc->sc_regs.r6);
+ __put_user(env->gpr[HEX_REG_R07], &sc->sc_regs.r7);
+ __put_user(env->gpr[HEX_REG_R08], &sc->sc_regs.r8);
+ __put_user(env->gpr[HEX_REG_R09], &sc->sc_regs.r9);
+ __put_user(env->gpr[HEX_REG_R10], &sc->sc_regs.r10);
+ __put_user(env->gpr[HEX_REG_R11], &sc->sc_regs.r11);
+ __put_user(env->gpr[HEX_REG_R12], &sc->sc_regs.r12);
+ __put_user(env->gpr[HEX_REG_R13], &sc->sc_regs.r13);
+ __put_user(env->gpr[HEX_REG_R14], &sc->sc_regs.r14);
+ __put_user(env->gpr[HEX_REG_R15], &sc->sc_regs.r15);
+ __put_user(env->gpr[HEX_REG_R16], &sc->sc_regs.r16);
+ __put_user(env->gpr[HEX_REG_R17], &sc->sc_regs.r17);
+ __put_user(env->gpr[HEX_REG_R18], &sc->sc_regs.r18);
+ __put_user(env->gpr[HEX_REG_R19], &sc->sc_regs.r19);
+ __put_user(env->gpr[HEX_REG_R20], &sc->sc_regs.r20);
+ __put_user(env->gpr[HEX_REG_R21], &sc->sc_regs.r21);
+ __put_user(env->gpr[HEX_REG_R22], &sc->sc_regs.r22);
+ __put_user(env->gpr[HEX_REG_R23], &sc->sc_regs.r23);
+ __put_user(env->gpr[HEX_REG_R24], &sc->sc_regs.r24);
+ __put_user(env->gpr[HEX_REG_R25], &sc->sc_regs.r25);
+ __put_user(env->gpr[HEX_REG_R26], &sc->sc_regs.r26);
+ __put_user(env->gpr[HEX_REG_R27], &sc->sc_regs.r27);
+ __put_user(env->gpr[HEX_REG_R28], &sc->sc_regs.r28);
+ __put_user(env->gpr[HEX_REG_R29], &sc->sc_regs.r29);
+ __put_user(env->gpr[HEX_REG_R30], &sc->sc_regs.r30);
+ __put_user(env->gpr[HEX_REG_R31], &sc->sc_regs.r31);
+ __put_user(env->gpr[HEX_REG_SA0], &sc->sc_regs.sa0);
+ __put_user(env->gpr[HEX_REG_LC0], &sc->sc_regs.lc0);
+ __put_user(env->gpr[HEX_REG_SA1], &sc->sc_regs.sa1);
+ __put_user(env->gpr[HEX_REG_LC1], &sc->sc_regs.lc1);
+ __put_user(env->gpr[HEX_REG_M0], &sc->sc_regs.m0);
+ __put_user(env->gpr[HEX_REG_M1], &sc->sc_regs.m1);
+ __put_user(env->gpr[HEX_REG_USR], &sc->sc_regs.usr);
+ __put_user(env->gpr[HEX_REG_GP], &sc->sc_regs.gp);
+ __put_user(env->gpr[HEX_REG_UGP], &sc->sc_regs.ugp);
+ __put_user(env->gpr[HEX_REG_PC], &sc->sc_regs.pc);
+
+ /* Consolidate predicates into p3_0 */
+ for (int i = 0; i < NUM_PREGS; i++) {
+ preds |= (env->pred[i] & 0xff) << (i * 8);
}
+ __put_user(preds, &sc->sc_regs.p3_0);
+
+ /* Set cause and badva to 0 - these are set by kernel on exceptions */
+ __put_user(0, &sc->sc_regs.cause);
+ __put_user(0, &sc->sc_regs.badva);
+
+ __put_user(env->gpr[HEX_REG_CS0], &sc->sc_regs.cs0);
+ __put_user(env->gpr[HEX_REG_CS1], &sc->sc_regs.cs1);
}
static void setup_ucontext(struct target_ucontext *uc,
@@ -192,53 +211,59 @@ badframe:
static void restore_sigcontext(CPUHexagonState *env,
struct target_sigcontext *sc)
{
- __get_user(env->gpr[HEX_REG_R00], &sc->r0);
- __get_user(env->gpr[HEX_REG_R01], &sc->r1);
- __get_user(env->gpr[HEX_REG_R02], &sc->r2);
- __get_user(env->gpr[HEX_REG_R03], &sc->r3);
- __get_user(env->gpr[HEX_REG_R04], &sc->r4);
- __get_user(env->gpr[HEX_REG_R05], &sc->r5);
- __get_user(env->gpr[HEX_REG_R06], &sc->r6);
- __get_user(env->gpr[HEX_REG_R07], &sc->r7);
- __get_user(env->gpr[HEX_REG_R08], &sc->r8);
- __get_user(env->gpr[HEX_REG_R09], &sc->r9);
- __get_user(env->gpr[HEX_REG_R10], &sc->r10);
- __get_user(env->gpr[HEX_REG_R11], &sc->r11);
- __get_user(env->gpr[HEX_REG_R12], &sc->r12);
- __get_user(env->gpr[HEX_REG_R13], &sc->r13);
- __get_user(env->gpr[HEX_REG_R14], &sc->r14);
- __get_user(env->gpr[HEX_REG_R15], &sc->r15);
- __get_user(env->gpr[HEX_REG_R16], &sc->r16);
- __get_user(env->gpr[HEX_REG_R17], &sc->r17);
- __get_user(env->gpr[HEX_REG_R18], &sc->r18);
- __get_user(env->gpr[HEX_REG_R19], &sc->r19);
- __get_user(env->gpr[HEX_REG_R20], &sc->r20);
- __get_user(env->gpr[HEX_REG_R21], &sc->r21);
- __get_user(env->gpr[HEX_REG_R22], &sc->r22);
- __get_user(env->gpr[HEX_REG_R23], &sc->r23);
- __get_user(env->gpr[HEX_REG_R24], &sc->r24);
- __get_user(env->gpr[HEX_REG_R25], &sc->r25);
- __get_user(env->gpr[HEX_REG_R26], &sc->r26);
- __get_user(env->gpr[HEX_REG_R27], &sc->r27);
- __get_user(env->gpr[HEX_REG_R28], &sc->r28);
- __get_user(env->gpr[HEX_REG_R29], &sc->r29);
- __get_user(env->gpr[HEX_REG_R30], &sc->r30);
- __get_user(env->gpr[HEX_REG_R31], &sc->r31);
- __get_user(env->gpr[HEX_REG_SA0], &sc->sa0);
- __get_user(env->gpr[HEX_REG_LC0], &sc->lc0);
- __get_user(env->gpr[HEX_REG_SA1], &sc->sa1);
- __get_user(env->gpr[HEX_REG_LC1], &sc->lc1);
- __get_user(env->gpr[HEX_REG_M0], &sc->m0);
- __get_user(env->gpr[HEX_REG_M1], &sc->m1);
- __get_user(env->gpr[HEX_REG_USR], &sc->usr);
- __get_user(env->gpr[HEX_REG_GP], &sc->gp);
- __get_user(env->gpr[HEX_REG_UGP], &sc->ugp);
- __get_user(env->gpr[HEX_REG_PC], &sc->pc);
+ target_ulong preds;
- int i;
- for (i = 0; i < NUM_PREGS; i++) {
- __get_user(env->pred[i], &(sc->pred[i]));
+ __get_user(env->gpr[HEX_REG_R00], &sc->sc_regs.r0);
+ __get_user(env->gpr[HEX_REG_R01], &sc->sc_regs.r1);
+ __get_user(env->gpr[HEX_REG_R02], &sc->sc_regs.r2);
+ __get_user(env->gpr[HEX_REG_R03], &sc->sc_regs.r3);
+ __get_user(env->gpr[HEX_REG_R04], &sc->sc_regs.r4);
+ __get_user(env->gpr[HEX_REG_R05], &sc->sc_regs.r5);
+ __get_user(env->gpr[HEX_REG_R06], &sc->sc_regs.r6);
+ __get_user(env->gpr[HEX_REG_R07], &sc->sc_regs.r7);
+ __get_user(env->gpr[HEX_REG_R08], &sc->sc_regs.r8);
+ __get_user(env->gpr[HEX_REG_R09], &sc->sc_regs.r9);
+ __get_user(env->gpr[HEX_REG_R10], &sc->sc_regs.r10);
+ __get_user(env->gpr[HEX_REG_R11], &sc->sc_regs.r11);
+ __get_user(env->gpr[HEX_REG_R12], &sc->sc_regs.r12);
+ __get_user(env->gpr[HEX_REG_R13], &sc->sc_regs.r13);
+ __get_user(env->gpr[HEX_REG_R14], &sc->sc_regs.r14);
+ __get_user(env->gpr[HEX_REG_R15], &sc->sc_regs.r15);
+ __get_user(env->gpr[HEX_REG_R16], &sc->sc_regs.r16);
+ __get_user(env->gpr[HEX_REG_R17], &sc->sc_regs.r17);
+ __get_user(env->gpr[HEX_REG_R18], &sc->sc_regs.r18);
+ __get_user(env->gpr[HEX_REG_R19], &sc->sc_regs.r19);
+ __get_user(env->gpr[HEX_REG_R20], &sc->sc_regs.r20);
+ __get_user(env->gpr[HEX_REG_R21], &sc->sc_regs.r21);
+ __get_user(env->gpr[HEX_REG_R22], &sc->sc_regs.r22);
+ __get_user(env->gpr[HEX_REG_R23], &sc->sc_regs.r23);
+ __get_user(env->gpr[HEX_REG_R24], &sc->sc_regs.r24);
+ __get_user(env->gpr[HEX_REG_R25], &sc->sc_regs.r25);
+ __get_user(env->gpr[HEX_REG_R26], &sc->sc_regs.r26);
+ __get_user(env->gpr[HEX_REG_R27], &sc->sc_regs.r27);
+ __get_user(env->gpr[HEX_REG_R28], &sc->sc_regs.r28);
+ __get_user(env->gpr[HEX_REG_R29], &sc->sc_regs.r29);
+ __get_user(env->gpr[HEX_REG_R30], &sc->sc_regs.r30);
+ __get_user(env->gpr[HEX_REG_R31], &sc->sc_regs.r31);
+ __get_user(env->gpr[HEX_REG_SA0], &sc->sc_regs.sa0);
+ __get_user(env->gpr[HEX_REG_LC0], &sc->sc_regs.lc0);
+ __get_user(env->gpr[HEX_REG_SA1], &sc->sc_regs.sa1);
+ __get_user(env->gpr[HEX_REG_LC1], &sc->sc_regs.lc1);
+ __get_user(env->gpr[HEX_REG_M0], &sc->sc_regs.m0);
+ __get_user(env->gpr[HEX_REG_M1], &sc->sc_regs.m1);
+ __get_user(env->gpr[HEX_REG_USR], &sc->sc_regs.usr);
+ __get_user(env->gpr[HEX_REG_GP], &sc->sc_regs.gp);
+ __get_user(env->gpr[HEX_REG_UGP], &sc->sc_regs.ugp);
+ __get_user(env->gpr[HEX_REG_PC], &sc->sc_regs.pc);
+
+ /* Restore predicates from p3_0 */
+ __get_user(preds, &sc->sc_regs.p3_0);
+ for (int i = 0; i < NUM_PREGS; i++) {
+ env->pred[i] = (preds >> (i * 8)) & 0xff;
}
+
+ __get_user(env->gpr[HEX_REG_CS0], &sc->sc_regs.cs0);
+ __get_user(env->gpr[HEX_REG_CS1], &sc->sc_regs.cs1);
}
static void restore_ucontext(CPUHexagonState *env, struct target_ucontext *uc)
--
2.34.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 2/4] linux-user/hexagon: use abi_ulong
2025-10-09 19:59 [PATCH v2 0/4] hexagon: Fixes to sigcontext Brian Cain
2025-10-09 19:59 ` [PATCH v2 1/4] linux-user/hexagon: Fix sigcontext Brian Cain
@ 2025-10-09 19:59 ` Brian Cain
2025-10-09 20:22 ` Philippe Mathieu-Daudé
2025-10-09 19:59 ` [PATCH v2 3/4] linux-user/hexagon: Use an array for GPRs Brian Cain
` (2 subsequent siblings)
4 siblings, 1 reply; 12+ messages in thread
From: Brian Cain @ 2025-10-09 19:59 UTC (permalink / raw)
To: qemu-devel
Cc: brian.cain, richard.henderson, philmd, matheus.bernardino, ale,
anjo, marco.liebel, ltaylorsimpson, alex.bennee, quic_mburton,
sid.manning, Laurent Vivier
Change the user_regs_struct to use abi_ulong instead of
target_ulong.
Link: https://lore.kernel.org/qemu-devel/7bf3d8c5-df07-4cbd-ba62-4c7246a5f96b@linaro.org/
Suggested-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Brian Cain <brian.cain@oss.qualcomm.com>
---
linux-user/hexagon/signal.c | 52 ++++++++++++++++++-------------------
1 file changed, 26 insertions(+), 26 deletions(-)
diff --git a/linux-user/hexagon/signal.c b/linux-user/hexagon/signal.c
index 2847952216..e5514b2bec 100644
--- a/linux-user/hexagon/signal.c
+++ b/linux-user/hexagon/signal.c
@@ -24,30 +24,30 @@
#include "linux-user/trace.h"
struct target_user_regs_struct {
- target_ulong r0, r1, r2, r3;
- target_ulong r4, r5, r6, r7;
- target_ulong r8, r9, r10, r11;
- target_ulong r12, r13, r14, r15;
- target_ulong r16, r17, r18, r19;
- target_ulong r20, r21, r22, r23;
- target_ulong r24, r25, r26, r27;
- target_ulong r28, r29, r30, r31;
- target_ulong sa0;
- target_ulong lc0;
- target_ulong sa1;
- target_ulong lc1;
- target_ulong m0;
- target_ulong m1;
- target_ulong usr;
- target_ulong p3_0;
- target_ulong gp;
- target_ulong ugp;
- target_ulong pc;
- target_ulong cause;
- target_ulong badva;
- target_ulong cs0;
- target_ulong cs1;
- target_ulong pad1; /* pad to 48 words */
+ abi_ulong r0, r1, r2, r3;
+ abi_ulong r4, r5, r6, r7;
+ abi_ulong r8, r9, r10, r11;
+ abi_ulong r12, r13, r14, r15;
+ abi_ulong r16, r17, r18, r19;
+ abi_ulong r20, r21, r22, r23;
+ abi_ulong r24, r25, r26, r27;
+ abi_ulong r28, r29, r30, r31;
+ abi_ulong sa0;
+ abi_ulong lc0;
+ abi_ulong sa1;
+ abi_ulong lc1;
+ abi_ulong m0;
+ abi_ulong m1;
+ abi_ulong usr;
+ abi_ulong p3_0;
+ abi_ulong gp;
+ abi_ulong ugp;
+ abi_ulong pc;
+ abi_ulong cause;
+ abi_ulong badva;
+ abi_ulong cs0;
+ abi_ulong cs1;
+ abi_ulong pad1; /* pad to 48 words */
};
QEMU_BUILD_BUG_ON(sizeof(struct target_user_regs_struct) != 48 * 4);
@@ -85,7 +85,7 @@ static abi_ulong get_sigframe(struct target_sigaction *ka,
static void setup_sigcontext(struct target_sigcontext *sc, CPUHexagonState *env)
{
- target_ulong preds = 0;
+ abi_ulong preds = 0;
__put_user(env->gpr[HEX_REG_R00], &sc->sc_regs.r0);
__put_user(env->gpr[HEX_REG_R01], &sc->sc_regs.r1);
@@ -211,7 +211,7 @@ badframe:
static void restore_sigcontext(CPUHexagonState *env,
struct target_sigcontext *sc)
{
- target_ulong preds;
+ abi_ulong preds;
__get_user(env->gpr[HEX_REG_R00], &sc->sc_regs.r0);
__get_user(env->gpr[HEX_REG_R01], &sc->sc_regs.r1);
--
2.34.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 3/4] linux-user/hexagon: Use an array for GPRs
2025-10-09 19:59 [PATCH v2 0/4] hexagon: Fixes to sigcontext Brian Cain
2025-10-09 19:59 ` [PATCH v2 1/4] linux-user/hexagon: Fix sigcontext Brian Cain
2025-10-09 19:59 ` [PATCH v2 2/4] linux-user/hexagon: use abi_ulong Brian Cain
@ 2025-10-09 19:59 ` Brian Cain
2025-10-09 20:22 ` Philippe Mathieu-Daudé
2025-10-09 21:38 ` Taylor Simpson
2025-10-09 19:59 ` [PATCH v2 4/4] tests/tcg/hexagon: Add cs{0,1} coverage Brian Cain
2025-10-09 20:07 ` [PATCH v2 0/4] hexagon: Fixes to sigcontext Richard Henderson
4 siblings, 2 replies; 12+ messages in thread
From: Brian Cain @ 2025-10-09 19:59 UTC (permalink / raw)
To: qemu-devel
Cc: brian.cain, richard.henderson, philmd, matheus.bernardino, ale,
anjo, marco.liebel, ltaylorsimpson, alex.bennee, quic_mburton,
sid.manning, Laurent Vivier
Link: https://lore.kernel.org/qemu-devel/023e01dc389c$faf84320$f0e8c960$@gmail.com/
Suggested-by: Taylor Simpson <ltaylorsimpson@gmail.com>
Signed-off-by: Brian Cain <brian.cain@oss.qualcomm.com>
---
linux-user/hexagon/signal.c | 79 ++++---------------------------------
1 file changed, 7 insertions(+), 72 deletions(-)
diff --git a/linux-user/hexagon/signal.c b/linux-user/hexagon/signal.c
index e5514b2bec..183ecfaa19 100644
--- a/linux-user/hexagon/signal.c
+++ b/linux-user/hexagon/signal.c
@@ -24,14 +24,7 @@
#include "linux-user/trace.h"
struct target_user_regs_struct {
- abi_ulong r0, r1, r2, r3;
- abi_ulong r4, r5, r6, r7;
- abi_ulong r8, r9, r10, r11;
- abi_ulong r12, r13, r14, r15;
- abi_ulong r16, r17, r18, r19;
- abi_ulong r20, r21, r22, r23;
- abi_ulong r24, r25, r26, r27;
- abi_ulong r28, r29, r30, r31;
+ abi_ulong gpr[32];
abi_ulong sa0;
abi_ulong lc0;
abi_ulong sa1;
@@ -87,38 +80,9 @@ static void setup_sigcontext(struct target_sigcontext *sc, CPUHexagonState *env)
{
abi_ulong preds = 0;
- __put_user(env->gpr[HEX_REG_R00], &sc->sc_regs.r0);
- __put_user(env->gpr[HEX_REG_R01], &sc->sc_regs.r1);
- __put_user(env->gpr[HEX_REG_R02], &sc->sc_regs.r2);
- __put_user(env->gpr[HEX_REG_R03], &sc->sc_regs.r3);
- __put_user(env->gpr[HEX_REG_R04], &sc->sc_regs.r4);
- __put_user(env->gpr[HEX_REG_R05], &sc->sc_regs.r5);
- __put_user(env->gpr[HEX_REG_R06], &sc->sc_regs.r6);
- __put_user(env->gpr[HEX_REG_R07], &sc->sc_regs.r7);
- __put_user(env->gpr[HEX_REG_R08], &sc->sc_regs.r8);
- __put_user(env->gpr[HEX_REG_R09], &sc->sc_regs.r9);
- __put_user(env->gpr[HEX_REG_R10], &sc->sc_regs.r10);
- __put_user(env->gpr[HEX_REG_R11], &sc->sc_regs.r11);
- __put_user(env->gpr[HEX_REG_R12], &sc->sc_regs.r12);
- __put_user(env->gpr[HEX_REG_R13], &sc->sc_regs.r13);
- __put_user(env->gpr[HEX_REG_R14], &sc->sc_regs.r14);
- __put_user(env->gpr[HEX_REG_R15], &sc->sc_regs.r15);
- __put_user(env->gpr[HEX_REG_R16], &sc->sc_regs.r16);
- __put_user(env->gpr[HEX_REG_R17], &sc->sc_regs.r17);
- __put_user(env->gpr[HEX_REG_R18], &sc->sc_regs.r18);
- __put_user(env->gpr[HEX_REG_R19], &sc->sc_regs.r19);
- __put_user(env->gpr[HEX_REG_R20], &sc->sc_regs.r20);
- __put_user(env->gpr[HEX_REG_R21], &sc->sc_regs.r21);
- __put_user(env->gpr[HEX_REG_R22], &sc->sc_regs.r22);
- __put_user(env->gpr[HEX_REG_R23], &sc->sc_regs.r23);
- __put_user(env->gpr[HEX_REG_R24], &sc->sc_regs.r24);
- __put_user(env->gpr[HEX_REG_R25], &sc->sc_regs.r25);
- __put_user(env->gpr[HEX_REG_R26], &sc->sc_regs.r26);
- __put_user(env->gpr[HEX_REG_R27], &sc->sc_regs.r27);
- __put_user(env->gpr[HEX_REG_R28], &sc->sc_regs.r28);
- __put_user(env->gpr[HEX_REG_R29], &sc->sc_regs.r29);
- __put_user(env->gpr[HEX_REG_R30], &sc->sc_regs.r30);
- __put_user(env->gpr[HEX_REG_R31], &sc->sc_regs.r31);
+ for (int i = 0; i < 32; i++) {
+ __put_user(env->gpr[HEX_REG_R00 + i], &sc->sc_regs.gpr[i]);
+ }
__put_user(env->gpr[HEX_REG_SA0], &sc->sc_regs.sa0);
__put_user(env->gpr[HEX_REG_LC0], &sc->sc_regs.lc0);
__put_user(env->gpr[HEX_REG_SA1], &sc->sc_regs.sa1);
@@ -213,38 +177,9 @@ static void restore_sigcontext(CPUHexagonState *env,
{
abi_ulong preds;
- __get_user(env->gpr[HEX_REG_R00], &sc->sc_regs.r0);
- __get_user(env->gpr[HEX_REG_R01], &sc->sc_regs.r1);
- __get_user(env->gpr[HEX_REG_R02], &sc->sc_regs.r2);
- __get_user(env->gpr[HEX_REG_R03], &sc->sc_regs.r3);
- __get_user(env->gpr[HEX_REG_R04], &sc->sc_regs.r4);
- __get_user(env->gpr[HEX_REG_R05], &sc->sc_regs.r5);
- __get_user(env->gpr[HEX_REG_R06], &sc->sc_regs.r6);
- __get_user(env->gpr[HEX_REG_R07], &sc->sc_regs.r7);
- __get_user(env->gpr[HEX_REG_R08], &sc->sc_regs.r8);
- __get_user(env->gpr[HEX_REG_R09], &sc->sc_regs.r9);
- __get_user(env->gpr[HEX_REG_R10], &sc->sc_regs.r10);
- __get_user(env->gpr[HEX_REG_R11], &sc->sc_regs.r11);
- __get_user(env->gpr[HEX_REG_R12], &sc->sc_regs.r12);
- __get_user(env->gpr[HEX_REG_R13], &sc->sc_regs.r13);
- __get_user(env->gpr[HEX_REG_R14], &sc->sc_regs.r14);
- __get_user(env->gpr[HEX_REG_R15], &sc->sc_regs.r15);
- __get_user(env->gpr[HEX_REG_R16], &sc->sc_regs.r16);
- __get_user(env->gpr[HEX_REG_R17], &sc->sc_regs.r17);
- __get_user(env->gpr[HEX_REG_R18], &sc->sc_regs.r18);
- __get_user(env->gpr[HEX_REG_R19], &sc->sc_regs.r19);
- __get_user(env->gpr[HEX_REG_R20], &sc->sc_regs.r20);
- __get_user(env->gpr[HEX_REG_R21], &sc->sc_regs.r21);
- __get_user(env->gpr[HEX_REG_R22], &sc->sc_regs.r22);
- __get_user(env->gpr[HEX_REG_R23], &sc->sc_regs.r23);
- __get_user(env->gpr[HEX_REG_R24], &sc->sc_regs.r24);
- __get_user(env->gpr[HEX_REG_R25], &sc->sc_regs.r25);
- __get_user(env->gpr[HEX_REG_R26], &sc->sc_regs.r26);
- __get_user(env->gpr[HEX_REG_R27], &sc->sc_regs.r27);
- __get_user(env->gpr[HEX_REG_R28], &sc->sc_regs.r28);
- __get_user(env->gpr[HEX_REG_R29], &sc->sc_regs.r29);
- __get_user(env->gpr[HEX_REG_R30], &sc->sc_regs.r30);
- __get_user(env->gpr[HEX_REG_R31], &sc->sc_regs.r31);
+ for (int i = 0; i < 32; i++) {
+ __get_user(env->gpr[HEX_REG_R00 + i], &sc->sc_regs.gpr[i]);
+ }
__get_user(env->gpr[HEX_REG_SA0], &sc->sc_regs.sa0);
__get_user(env->gpr[HEX_REG_LC0], &sc->sc_regs.lc0);
__get_user(env->gpr[HEX_REG_SA1], &sc->sc_regs.sa1);
--
2.34.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 4/4] tests/tcg/hexagon: Add cs{0,1} coverage
2025-10-09 19:59 [PATCH v2 0/4] hexagon: Fixes to sigcontext Brian Cain
` (2 preceding siblings ...)
2025-10-09 19:59 ` [PATCH v2 3/4] linux-user/hexagon: Use an array for GPRs Brian Cain
@ 2025-10-09 19:59 ` Brian Cain
2025-10-09 21:40 ` Taylor Simpson
2025-10-09 20:07 ` [PATCH v2 0/4] hexagon: Fixes to sigcontext Richard Henderson
4 siblings, 1 reply; 12+ messages in thread
From: Brian Cain @ 2025-10-09 19:59 UTC (permalink / raw)
To: qemu-devel
Cc: brian.cain, richard.henderson, philmd, matheus.bernardino, ale,
anjo, marco.liebel, ltaylorsimpson, alex.bennee, quic_mburton,
sid.manning
Cover cs0,1 register corruption in the signal_context test case.
Reviewed-by: Anton Johansson <anjo@rev.ng>
Signed-off-by: Brian Cain <brian.cain@oss.qualcomm.com>
---
tests/tcg/hexagon/signal_context.c | 22 +++++++++++++++++++---
1 file changed, 19 insertions(+), 3 deletions(-)
diff --git a/tests/tcg/hexagon/signal_context.c b/tests/tcg/hexagon/signal_context.c
index 7202fa64b6..00bbb3efc7 100644
--- a/tests/tcg/hexagon/signal_context.c
+++ b/tests/tcg/hexagon/signal_context.c
@@ -26,7 +26,11 @@ void sig_user(int sig, siginfo_t *info, void *puc)
"p1 = r7\n\t"
"p2 = r7\n\t"
"p3 = r7\n\t"
- : : : "r7", "p0", "p1", "p2", "p3");
+ "r6 = #0x12345678\n\t"
+ "cs0 = r6\n\t"
+ "r6 = #0x87654321\n\t"
+ "cs1 = r6\n\t"
+ : : : "r6", "r7", "p0", "p1", "p2", "p3");
}
int main()
@@ -52,7 +56,11 @@ int main()
it.it_value.tv_nsec = 100000;
timer_settime(tid, 0, &it, NULL);
- asm("loop0(1f, %1)\n\t"
+ asm("r9 = #0xdeadbeef\n\t"
+ " cs0 = r9\n\t"
+ " r9 = #0xbadc0fee\n\t"
+ " cs1 = r9\n\t"
+ " loop0(1f, %1)\n\t"
"1: r8 = #0xff\n\t"
" p0 = r8\n\t"
" p1 = r8\n\t"
@@ -74,10 +82,18 @@ int main()
" r8 = p3\n\t"
" p0 = cmp.eq(r8, #0xff)\n\t"
" if (!p0) jump 2b\n\t"
+ " r8 = cs0\n\t"
+ " r9 = #0xdeadbeef\n\t"
+ " p0 = cmp.eq(r8, r9)\n\t"
+ " if (!p0) jump 2b\n\t"
+ " r8 = cs1\n\t"
+ " r9 = #0xbadc0fee\n\t"
+ " p0 = cmp.eq(r8, r9)\n\t"
+ " if (!p0) jump 2b\n\t"
"4: {}: endloop0\n\t"
:
: "r"(&err), "r"(i)
- : "memory", "r8", "p0", "p1", "p2", "p3");
+ : "memory", "r8", "r9", "p0", "p1", "p2", "p3");
puts(err ? "FAIL" : "PASS");
return err;
--
2.34.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v2 0/4] hexagon: Fixes to sigcontext
2025-10-09 19:59 [PATCH v2 0/4] hexagon: Fixes to sigcontext Brian Cain
` (3 preceding siblings ...)
2025-10-09 19:59 ` [PATCH v2 4/4] tests/tcg/hexagon: Add cs{0,1} coverage Brian Cain
@ 2025-10-09 20:07 ` Richard Henderson
4 siblings, 0 replies; 12+ messages in thread
From: Richard Henderson @ 2025-10-09 20:07 UTC (permalink / raw)
To: Brian Cain, qemu-devel
Cc: philmd, matheus.bernardino, ale, anjo, marco.liebel,
ltaylorsimpson, alex.bennee, quic_mburton, sid.manning
On 10/9/25 12:59, Brian Cain wrote:
> Revised from the original series at
> https://lore.kernel.org/qemu-devel/20251008014754.3565553-1-brian.cain@oss.qualcomm.com/
>
> Brian Cain (4):
> linux-user/hexagon: Fix sigcontext
> linux-user/hexagon: use abi_ulong
> linux-user/hexagon: Use an array for GPRs
> tests/tcg/hexagon: Add cs{0,1} coverage
>
> linux-user/hexagon/signal.c | 184 +++++++++++------------------
> tests/tcg/hexagon/signal_context.c | 22 +++-
> 2 files changed, 91 insertions(+), 115 deletions(-)
>
> --
> 2.34.1
>
Series:
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
r~
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 2/4] linux-user/hexagon: use abi_ulong
2025-10-09 19:59 ` [PATCH v2 2/4] linux-user/hexagon: use abi_ulong Brian Cain
@ 2025-10-09 20:22 ` Philippe Mathieu-Daudé
2025-10-09 21:37 ` Taylor Simpson
0 siblings, 1 reply; 12+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-09 20:22 UTC (permalink / raw)
To: Brian Cain, qemu-devel
Cc: richard.henderson, matheus.bernardino, ale, anjo, marco.liebel,
ltaylorsimpson, alex.bennee, quic_mburton, sid.manning,
Laurent Vivier
On 9/10/25 21:59, Brian Cain wrote:
> Change the user_regs_struct to use abi_ulong instead of
> target_ulong.
>
> Link: https://lore.kernel.org/qemu-devel/7bf3d8c5-df07-4cbd-ba62-4c7246a5f96b@linaro.org/
> Suggested-by: Richard Henderson <richard.henderson@linaro.org>
> Signed-off-by: Brian Cain <brian.cain@oss.qualcomm.com>
> ---
> linux-user/hexagon/signal.c | 52 ++++++++++++++++++-------------------
> 1 file changed, 26 insertions(+), 26 deletions(-)
>
> diff --git a/linux-user/hexagon/signal.c b/linux-user/hexagon/signal.c
> index 2847952216..e5514b2bec 100644
> --- a/linux-user/hexagon/signal.c
> +++ b/linux-user/hexagon/signal.c
> @@ -24,30 +24,30 @@
> #include "linux-user/trace.h"
>
> struct target_user_regs_struct {
> - target_ulong r0, r1, r2, r3;
> - target_ulong r4, r5, r6, r7;
> - target_ulong r8, r9, r10, r11;
> - target_ulong r12, r13, r14, r15;
> - target_ulong r16, r17, r18, r19;
> - target_ulong r20, r21, r22, r23;
> - target_ulong r24, r25, r26, r27;
> - target_ulong r28, r29, r30, r31;
Yay!
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 3/4] linux-user/hexagon: Use an array for GPRs
2025-10-09 19:59 ` [PATCH v2 3/4] linux-user/hexagon: Use an array for GPRs Brian Cain
@ 2025-10-09 20:22 ` Philippe Mathieu-Daudé
2025-10-09 21:38 ` Taylor Simpson
1 sibling, 0 replies; 12+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-09 20:22 UTC (permalink / raw)
To: Brian Cain, qemu-devel
Cc: richard.henderson, matheus.bernardino, ale, anjo, marco.liebel,
ltaylorsimpson, alex.bennee, quic_mburton, sid.manning,
Laurent Vivier
On 9/10/25 21:59, Brian Cain wrote:
> Link: https://lore.kernel.org/qemu-devel/023e01dc389c$faf84320$f0e8c960$@gmail.com/
> Suggested-by: Taylor Simpson <ltaylorsimpson@gmail.com>
> Signed-off-by: Brian Cain <brian.cain@oss.qualcomm.com>
> ---
> linux-user/hexagon/signal.c | 79 ++++---------------------------------
> 1 file changed, 7 insertions(+), 72 deletions(-)
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 1/4] linux-user/hexagon: Fix sigcontext
2025-10-09 19:59 ` [PATCH v2 1/4] linux-user/hexagon: Fix sigcontext Brian Cain
@ 2025-10-09 21:36 ` Taylor Simpson
0 siblings, 0 replies; 12+ messages in thread
From: Taylor Simpson @ 2025-10-09 21:36 UTC (permalink / raw)
To: Brian Cain
Cc: qemu-devel, richard.henderson, philmd, matheus.bernardino, ale,
anjo, marco.liebel, alex.bennee, quic_mburton, sid.manning,
Alex Rønne Petersen, Laurent Vivier
On Thu, Oct 9, 2025 at 1:59 PM Brian Cain <brian.cain@oss.qualcomm.com> wrote:
>
> In order to correspond with the kernel, we've now (1) moved the
> preds[] to the right offset and combined the representation as a single
> ulong "p3_0", (2), added the cs{0,1} registers, (3) added a pad for 48
> words, (4) added the user regs structure to an 8-byte aligned
> target_sigcontext structure.
>
> Co-authored-by: Alex Rønne Petersen <alex@alexrp.com>
> Signed-off-by: Brian Cain <brian.cain@oss.qualcomm.com>
> ---
> linux-user/hexagon/signal.c | 209 ++++++++++++++++++++----------------
> 1 file changed, 117 insertions(+), 92 deletions(-)
>
Reviewed-by: Taylor Simpson <ltaylorsimpson@gmail.com>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 2/4] linux-user/hexagon: use abi_ulong
2025-10-09 20:22 ` Philippe Mathieu-Daudé
@ 2025-10-09 21:37 ` Taylor Simpson
0 siblings, 0 replies; 12+ messages in thread
From: Taylor Simpson @ 2025-10-09 21:37 UTC (permalink / raw)
To: Philippe Mathieu-Daudé
Cc: Brian Cain, qemu-devel, richard.henderson, matheus.bernardino,
ale, anjo, marco.liebel, alex.bennee, quic_mburton, sid.manning,
Laurent Vivier
On Thu, Oct 9, 2025 at 2:22 PM Philippe Mathieu-Daudé <philmd@linaro.org> wrote:
>
> On 9/10/25 21:59, Brian Cain wrote:
> > Change the user_regs_struct to use abi_ulong instead of
> > target_ulong.
> >
> > Link: https://lore.kernel.org/qemu-devel/7bf3d8c5-df07-4cbd-ba62-4c7246a5f96b@linaro.org/
> > Suggested-by: Richard Henderson <richard.henderson@linaro.org>
> > Signed-off-by: Brian Cain <brian.cain@oss.qualcomm.com>
> > ---
> > linux-user/hexagon/signal.c | 52 ++++++++++++++++++-------------------
> > 1 file changed, 26 insertions(+), 26 deletions(-)
> >
> > diff --git a/linux-user/hexagon/signal.c b/linux-user/hexagon/signal.c
> > index 2847952216..e5514b2bec 100644
> > --- a/linux-user/hexagon/signal.c
> > +++ b/linux-user/hexagon/signal.c
> > @@ -24,30 +24,30 @@
> > #include "linux-user/trace.h"
> >
> > struct target_user_regs_struct {
> > - target_ulong r0, r1, r2, r3;
> > - target_ulong r4, r5, r6, r7;
> > - target_ulong r8, r9, r10, r11;
> > - target_ulong r12, r13, r14, r15;
> > - target_ulong r16, r17, r18, r19;
> > - target_ulong r20, r21, r22, r23;
> > - target_ulong r24, r25, r26, r27;
> > - target_ulong r28, r29, r30, r31;
>
> Yay!
>
> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Taylor Simpson <ltaylorsimpson@gmail.com>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 3/4] linux-user/hexagon: Use an array for GPRs
2025-10-09 19:59 ` [PATCH v2 3/4] linux-user/hexagon: Use an array for GPRs Brian Cain
2025-10-09 20:22 ` Philippe Mathieu-Daudé
@ 2025-10-09 21:38 ` Taylor Simpson
1 sibling, 0 replies; 12+ messages in thread
From: Taylor Simpson @ 2025-10-09 21:38 UTC (permalink / raw)
To: Brian Cain
Cc: qemu-devel, richard.henderson, philmd, matheus.bernardino, ale,
anjo, marco.liebel, alex.bennee, quic_mburton, sid.manning,
Laurent Vivier
On Thu, Oct 9, 2025 at 1:59 PM Brian Cain <brian.cain@oss.qualcomm.com> wrote:
>
> Link: https://lore.kernel.org/qemu-devel/023e01dc389c$faf84320$f0e8c960$@gmail.com/
> Suggested-by: Taylor Simpson <ltaylorsimpson@gmail.com>
> Signed-off-by: Brian Cain <brian.cain@oss.qualcomm.com>
> ---
> linux-user/hexagon/signal.c | 79 ++++---------------------------------
> 1 file changed, 7 insertions(+), 72 deletions(-)
>
Reviewed-by: Taylor Simpson <ltaylorsimpson@gmail.com>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 4/4] tests/tcg/hexagon: Add cs{0,1} coverage
2025-10-09 19:59 ` [PATCH v2 4/4] tests/tcg/hexagon: Add cs{0,1} coverage Brian Cain
@ 2025-10-09 21:40 ` Taylor Simpson
0 siblings, 0 replies; 12+ messages in thread
From: Taylor Simpson @ 2025-10-09 21:40 UTC (permalink / raw)
To: Brian Cain
Cc: qemu-devel, richard.henderson, philmd, matheus.bernardino, ale,
anjo, marco.liebel, alex.bennee, quic_mburton, sid.manning
On Thu, Oct 9, 2025 at 1:59 PM Brian Cain <brian.cain@oss.qualcomm.com> wrote:
>
> Cover cs0,1 register corruption in the signal_context test case.
>
> Reviewed-by: Anton Johansson <anjo@rev.ng>
> Signed-off-by: Brian Cain <brian.cain@oss.qualcomm.com>
> ---
> tests/tcg/hexagon/signal_context.c | 22 +++++++++++++++++++---
> 1 file changed, 19 insertions(+), 3 deletions(-)
>
Did you see my previous feedback on this?
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2025-10-09 21:40 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-09 19:59 [PATCH v2 0/4] hexagon: Fixes to sigcontext Brian Cain
2025-10-09 19:59 ` [PATCH v2 1/4] linux-user/hexagon: Fix sigcontext Brian Cain
2025-10-09 21:36 ` Taylor Simpson
2025-10-09 19:59 ` [PATCH v2 2/4] linux-user/hexagon: use abi_ulong Brian Cain
2025-10-09 20:22 ` Philippe Mathieu-Daudé
2025-10-09 21:37 ` Taylor Simpson
2025-10-09 19:59 ` [PATCH v2 3/4] linux-user/hexagon: Use an array for GPRs Brian Cain
2025-10-09 20:22 ` Philippe Mathieu-Daudé
2025-10-09 21:38 ` Taylor Simpson
2025-10-09 19:59 ` [PATCH v2 4/4] tests/tcg/hexagon: Add cs{0,1} coverage Brian Cain
2025-10-09 21:40 ` Taylor Simpson
2025-10-09 20:07 ` [PATCH v2 0/4] hexagon: Fixes to sigcontext Richard Henderson
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).