target-arm: Make SETEND respect bswap_code (BE8) setting
Make the SETEND instruction respect the setting of bswap_code, so that in BE8 mode we UNDEF for attempts to switch into little-endian mode and nop for attempts to stay in big-endian mode. (This is the inverse of the existing handling of SETEND in the more common little-endian setup, which we use since we don't implement the architecturally-mandated dynamic endianness switching.) Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
c5fad12fa0
commit
10962fd510
@ -6767,8 +6767,8 @@ static void disas_arm_insn(CPUARMState * env, DisasContext *s)
|
|||||||
if ((insn & 0x0ffffdff) == 0x01010000) {
|
if ((insn & 0x0ffffdff) == 0x01010000) {
|
||||||
ARCH(6);
|
ARCH(6);
|
||||||
/* setend */
|
/* setend */
|
||||||
if (insn & (1 << 9)) {
|
if (((insn >> 9) & 1) != s->bswap_code) {
|
||||||
/* BE8 mode not implemented. */
|
/* Dynamic endianness switching not implemented. */
|
||||||
goto illegal_op;
|
goto illegal_op;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
@ -9710,8 +9710,8 @@ static void disas_thumb_insn(CPUARMState *env, DisasContext *s)
|
|||||||
case 2:
|
case 2:
|
||||||
/* setend */
|
/* setend */
|
||||||
ARCH(6);
|
ARCH(6);
|
||||||
if (insn & (1 << 3)) {
|
if (((insn >> 3) & 1) != s->bswap_code) {
|
||||||
/* BE8 mode not implemented. */
|
/* Dynamic endianness switching not implemented. */
|
||||||
goto illegal_op;
|
goto illegal_op;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user