target/arm: Move endianness fixup for 32-bit registers
Move the test outside of the banked register block, and repeat the AA32 test. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
415e21ac85
commit
5bd746e212
1 changed files with 12 additions and 5 deletions
|
|
@ -7438,14 +7438,21 @@ static void add_cpreg_to_hashtable(ARMCPU *cpu, ARMCPRegInfo *r,
|
|||
*/
|
||||
r->type |= ARM_CP_ALIAS;
|
||||
}
|
||||
|
||||
if (HOST_BIG_ENDIAN &&
|
||||
r->state == ARM_CP_STATE_BOTH && r->fieldoffset) {
|
||||
r->fieldoffset += sizeof(uint32_t);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* For 32-bit AArch32 regs shared with 64-bit AArch64 regs,
|
||||
* adjust the field offset for endianness. This had to be
|
||||
* delayed until banked registers were resolved.
|
||||
*/
|
||||
if (HOST_BIG_ENDIAN &&
|
||||
state == ARM_CP_STATE_AA32 &&
|
||||
r->state == ARM_CP_STATE_BOTH &&
|
||||
r->fieldoffset) {
|
||||
r->fieldoffset += sizeof(uint32_t);
|
||||
}
|
||||
|
||||
/*
|
||||
* Special registers (ie NOP/WFI) are never migratable and
|
||||
* are not even raw-accessible.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue