[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v5 34/48] target/nios2: Enable unaligned traps for system mode
|
From: |
Richard Henderson |
|
Subject: |
[PATCH v5 34/48] target/nios2: Enable unaligned traps for system mode |
|
Date: |
Thu, 10 Mar 2022 03:27:11 -0800 |
Unaligned traps are optional, but required with an mmu.
Turn them on always, because the fallback behaviour is not
documented (though presumably it discards low bits).
Enable alignment checks in the config file.
Unwind the guest pc properly from do_unaligned_access.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
configs/targets/nios2-softmmu.mak | 1 +
target/nios2/helper.c | 4 ++--
2 files changed, 3 insertions(+), 2 deletions(-)
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
diff --git a/target/nios2/helper.c b/target/nios2/helper.c
index 460032adc0..bf40cff779 100644
--- a/target/nios2/helper.c
+++ b/target/nios2/helper.c
@@ -264,8 +264,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,
--
2.25.1
- [PATCH v5 22/48] target/nios2: Hoist CPU_LOG_INT logging, (continued)
- [PATCH v5 22/48] target/nios2: Hoist CPU_LOG_INT logging, Richard Henderson, 2022/03/10
- [PATCH v5 25/48] target/nios2: Clean up handling of tlbmisc in do_exception, Richard Henderson, 2022/03/10
- [PATCH v5 24/48] target/nios2: Cleanup set of CR_EXCEPTION for do_interrupt, Richard Henderson, 2022/03/10
- [PATCH v5 26/48] target/nios2: Prevent writes to read-only or reserved control fields, Richard Henderson, 2022/03/10
- [PATCH v5 27/48] target/nios2: Implement cpuid, Richard Henderson, 2022/03/10
- [PATCH v5 29/48] target/nios2: Remove CPU_INTERRUPT_NMI, Richard Henderson, 2022/03/10
- [PATCH v5 30/48] target/nios2: Support division error exception, Richard Henderson, 2022/03/10
- [PATCH v5 28/48] target/nios2: Implement CR_STATUS.RSIE, Richard Henderson, 2022/03/10
- [PATCH v5 33/48] target/nios2: Drop CR_STATUS_EH from tb->flags, Richard Henderson, 2022/03/10
- [PATCH v5 32/48] target/nios2: Introduce dest_gpr, Richard Henderson, 2022/03/10
- [PATCH v5 34/48] target/nios2: Enable unaligned traps for system mode,
Richard Henderson <=
- [PATCH v5 38/48] target/nios2: Use tcg_gen_lookup_and_goto_ptr, Richard Henderson, 2022/03/10
- [PATCH v5 31/48] target/nios2: Use tcg_constant_tl, Richard Henderson, 2022/03/10
- [PATCH v5 35/48] target/nios2: Create gen_jumpr, Richard Henderson, 2022/03/10
- [PATCH v5 37/48] target/nios2: Use gen_goto_tb for DISAS_TOO_MANY, Richard Henderson, 2022/03/10
- [PATCH v5 36/48] target/nios2: Hoist set of is_jmp into gen_goto_tb, Richard Henderson, 2022/03/10
- [PATCH v5 39/48] target/nios2: Implement Misaligned destination exception, Richard Henderson, 2022/03/10
- [PATCH v5 41/48] target/nios2: Introduce shadow register sets, Richard Henderson, 2022/03/10
- [PATCH v5 46/48] hw/nios2: Introduce Nios2MachineState, Richard Henderson, 2022/03/10