[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 05/10] linux-user/loongarch64: Use traps to track LSX/LASX usage
|
From: |
Song Gao |
|
Subject: |
[PULL 05/10] linux-user/loongarch64: Use traps to track LSX/LASX usage |
|
Date: |
Fri, 3 Nov 2023 14:23:27 +0800 |
From: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20231101030816.2353416-2-gaosong@loongson.cn>
Signed-off-by: Song Gao <gaosong@loongson.cn>
---
linux-user/loongarch64/cpu_loop.c | 13 +++++++++++++
target/loongarch/insn_trans/trans_vec.c.inc | 11 -----------
2 files changed, 13 insertions(+), 11 deletions(-)
diff --git a/linux-user/loongarch64/cpu_loop.c
b/linux-user/loongarch64/cpu_loop.c
index 894fdd111a..73d7b6796a 100644
--- a/linux-user/loongarch64/cpu_loop.c
+++ b/linux-user/loongarch64/cpu_loop.c
@@ -72,6 +72,19 @@ void cpu_loop(CPULoongArchState *env)
case EXCCODE_BCE:
force_sig_fault(TARGET_SIGSYS, TARGET_SI_KERNEL, env->pc);
break;
+
+ /*
+ * Begin with LSX and LASX disabled, then enable on the first trap.
+ * In this way we can tell if the unit is in use. This is used to
+ * choose the layout of any signal frame.
+ */
+ case EXCCODE_SXD:
+ env->CSR_EUEN |= R_CSR_EUEN_SXE_MASK;
+ break;
+ case EXCCODE_ASXD:
+ env->CSR_EUEN |= R_CSR_EUEN_ASXE_MASK;
+ break;
+
case EXCP_ATOMIC:
cpu_exec_step_atomic(cs);
break;
diff --git a/target/loongarch/insn_trans/trans_vec.c.inc
b/target/loongarch/insn_trans/trans_vec.c.inc
index 98f856bb29..92b1d22e28 100644
--- a/target/loongarch/insn_trans/trans_vec.c.inc
+++ b/target/loongarch/insn_trans/trans_vec.c.inc
@@ -4,8 +4,6 @@
* Copyright (c) 2022-2023 Loongson Technology Corporation Limited
*/
-#ifndef CONFIG_USER_ONLY
-
static bool check_vec(DisasContext *ctx, uint32_t oprsz)
{
if ((oprsz == 16) && ((ctx->base.tb->flags & HW_FLAGS_EUEN_SXE) == 0)) {
@@ -21,15 +19,6 @@ static bool check_vec(DisasContext *ctx, uint32_t oprsz)
return true;
}
-#else
-
-static bool check_vec(DisasContext *ctx, uint32_t oprsz)
-{
- return true;
-}
-
-#endif
-
static bool gen_vvvv_ptr_vl(DisasContext *ctx, arg_vvvv *a, uint32_t oprsz,
gen_helper_gvec_4_ptr *fn)
{
--
2.25.1
- [PULL 00/10] loongarch-to-apply queue, Song Gao, 2023/11/03
- [PULL 06/10] linux-user/loongarch64: Fix setup_extcontext alloc wrong fpu_context size, Song Gao, 2023/11/03
- [PULL 05/10] linux-user/loongarch64: Use traps to track LSX/LASX usage,
Song Gao <=
- [PULL 07/10] linux-user/loongarch64: setup_sigframe() set 'end' context size 0, Song Gao, 2023/11/03
- [PULL 04/10] target/loongarch: Support 4K page size, Song Gao, 2023/11/03
- [PULL 03/10] target/loongarch: Implement query-cpu-model-expansion, Song Gao, 2023/11/03
- [PULL 02/10] target/loongarch: Allow user enable/disable LSX/LASX features, Song Gao, 2023/11/03
- [PULL 08/10] linux-user/loongarch64: Use abi_{ulong,uint} types, Song Gao, 2023/11/03
- [PULL 01/10] target/loongarch: Add cpu model 'max', Song Gao, 2023/11/03
- [PULL 09/10] linux-user/loongarch64: Add LSX sigcontext save/restore, Song Gao, 2023/11/03
- [PULL 10/10] linux-user/loongarch64: Add LASX sigcontext save/restore, Song Gao, 2023/11/03
- Re: [PULL 00/10] loongarch-to-apply queue, Stefan Hajnoczi, 2023/11/06