[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v8 51/68] target/nios2: Enable unaligned traps for system mode
From: |
Richard Henderson |
Subject: |
[PATCH v8 51/68] target/nios2: Enable unaligned traps for system mode |
Date: |
Fri, 22 Apr 2022 09:52:21 -0700 |
Unaligned traps are optional, but required with an mmu.
Turn them on always, because the fallback behaviour undefined.
Enable alignment checks in the config file.
Unwind the guest pc properly from do_unaligned_access.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20220421151735.31996-48-richard.henderson@linaro.org>
---
target/nios2/helper.c | 4 ++--
configs/targets/nios2-softmmu.mak | 1 +
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/target/nios2/helper.c b/target/nios2/helper.c
index c5a2dd65b1..2e9fea4a01 100644
--- a/target/nios2/helper.c
+++ b/target/nios2/helper.c
@@ -241,8 +241,8 @@ void nios2_cpu_do_unaligned_access(CPUState *cs, vaddr addr,
CPUNios2State *env = &cpu->env;
env->ctrl[CR_BADADDR] = addr;
- env->ctrl[CR_EXCEPTION] = FIELD_DP32(0, CR_EXCEPTION, CAUSE, EXCP_UNALIGN);
- helper_raise_exception(env, EXCP_UNALIGN);
+ cs->exception_index = EXCP_UNALIGN;
+ cpu_loop_exit_restore(cs, retaddr);
}
bool nios2_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
diff --git a/configs/targets/nios2-softmmu.mak
b/configs/targets/nios2-softmmu.mak
index 9a372f0717..1e93b54cd1 100644
--- a/configs/targets/nios2-softmmu.mak
+++ b/configs/targets/nios2-softmmu.mak
@@ -1 +1,2 @@
TARGET_ARCH=nios2
+TARGET_ALIGNED_ONLY=y
--
2.34.1
- [PATCH v8 40/68] target/nios2: Remove CPU_INTERRUPT_NMI, (continued)
- [PATCH v8 40/68] target/nios2: Remove CPU_INTERRUPT_NMI, Richard Henderson, 2022/04/22
- [PATCH v8 41/68] target/nios2: Support division error exception, Richard Henderson, 2022/04/22
- [PATCH v8 42/68] target/nios2: Use tcg_constant_tl, Richard Henderson, 2022/04/22
- [PATCH v8 43/68] target/nios2: Split out named structs for [IRJ]_TYPE, Richard Henderson, 2022/04/22
- [PATCH v8 44/68] target/nios2: Split out helpers for gen_i_cmpxx, Richard Henderson, 2022/04/22
- [PATCH v8 45/68] target/nios2: Split out helpers for gen_i_math_logic, Richard Henderson, 2022/04/22
- [PATCH v8 46/68] target/nios2: Split out helpers for gen_r_math_logic, Richard Henderson, 2022/04/22
- [PATCH v8 47/68] target/nios2: Split out helpers for gen_rr_mul_high, Richard Henderson, 2022/04/22
- [PATCH v8 48/68] target/nios2: Split out helpers for gen_rr_shift, Richard Henderson, 2022/04/22
- [PATCH v8 49/68] target/nios2: Introduce dest_gpr, Richard Henderson, 2022/04/22
- [PATCH v8 51/68] target/nios2: Enable unaligned traps for system mode,
Richard Henderson <=
- [PATCH v8 52/68] target/nios2: Create gen_jumpr, Richard Henderson, 2022/04/22
- [PATCH v8 50/68] target/nios2: Drop CR_STATUS_EH from tb->flags, Richard Henderson, 2022/04/22
- [PATCH v8 54/68] target/nios2: Use gen_goto_tb for DISAS_TOO_MANY, Richard Henderson, 2022/04/22
- [PATCH v8 53/68] target/nios2: Hoist set of is_jmp into gen_goto_tb, Richard Henderson, 2022/04/22
- [PATCH v8 56/68] target/nios2: Implement Misaligned destination exception, Richard Henderson, 2022/04/22
- [PATCH v8 55/68] target/nios2: Use tcg_gen_lookup_and_goto_ptr, Richard Henderson, 2022/04/22
- [PATCH v8 57/68] target/nios2: Introduce shadow register sets, Richard Henderson, 2022/04/22
- [PATCH v8 59/68] target/nios2: Update helper_eret for shadow registers, Richard Henderson, 2022/04/22
- [PATCH v8 58/68] target/nios2: Implement rdprs, wrprs, Richard Henderson, 2022/04/22
- [PATCH v8 60/68] target/nios2: Implement EIC interrupt processing, Richard Henderson, 2022/04/22