target/nios2: Enable unaligned traps for system mode

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>
This commit is contained in:
Richard Henderson 2022-04-21 08:17:18 -07:00
parent d2293ebb04
commit 0706ac0f86
2 changed files with 3 additions and 2 deletions

View file

@ -1 +1,2 @@
TARGET_ARCH=nios2
TARGET_ALIGNED_ONLY=y

View file

@ -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,