target/nios2: Implement Misaligned destination exception
commit410c6aaa3b44d5bdd1af7c1a465be7d5df2dfbf0
authorRichard Henderson <richard.henderson@linaro.org>
Thu, 21 Apr 2022 15:17:23 +0000 (21 08:17 -0700)
committerRichard Henderson <richard.henderson@linaro.org>
Tue, 26 Apr 2022 15:17:05 +0000 (26 08:17 -0700)
tree6f4a563e7065afdbc39113f9af2d109466c582fa
parent0e6f22c561a5e9e02dcfa535c4573b0344d4b2ba
target/nios2: Implement Misaligned destination exception

Indirect branches, plus eret and bret optionally raise
an exception when branching to a misaligned address.
The exception is required when an mmu is enabled, but
enable it always because the fallback behaviour is not
documented (though presumably it discards low bits).

For the purposes of the linux-user cpu loop, if EXCP_UNALIGN
(misaligned data) were to arrive, it would be treated the
same as EXCP_UNALIGND (misaligned destination).  See the
!defined(CONFIG_NIOS2_ALIGNMENT_TRAP) block in kernel/traps.c.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20220421151735.31996-53-richard.henderson@linaro.org>
linux-user/nios2/cpu_loop.c
target/nios2/op_helper.c
target/nios2/translate.c