mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
target/arm: Move alias setting for wildcards
Move this test from add_cpreg_to_hashtable to define_one_arm_cp_reg_with_opaque, where we can also simplify it based on the loop variables. 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> [PMM: adjusted placement of comma in a comment] Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
committed by
Peter Maydell
parent
dde8637d28
commit
afe6ed3cfb
+12
-10
@@ -7448,20 +7448,12 @@ static void add_cpreg_to_hashtable(ARMCPU *cpu, ARMCPRegInfo *r,
|
||||
}
|
||||
|
||||
/*
|
||||
* By convention, for wildcarded registers only the first
|
||||
* entry is used for migration; the others are marked as
|
||||
* ALIAS so we don't try to transfer the register
|
||||
* multiple times. Special registers (ie NOP/WFI) are
|
||||
* never migratable and not even raw-accessible.
|
||||
* Special registers (ie NOP/WFI) are never migratable and
|
||||
* are not even raw-accessible.
|
||||
*/
|
||||
if (r->type & ARM_CP_SPECIAL_MASK) {
|
||||
r->type |= ARM_CP_NO_RAW;
|
||||
}
|
||||
if (((r->crm == CP_ANY) && crm != 0) ||
|
||||
((r->opc1 == CP_ANY) && opc1 != 0) ||
|
||||
((r->opc2 == CP_ANY) && opc2 != 0)) {
|
||||
r->type |= ARM_CP_ALIAS | ARM_CP_NO_GDB;
|
||||
}
|
||||
|
||||
/*
|
||||
* Update fields to match the instantiation, overwiting wildcards
|
||||
@@ -7765,6 +7757,16 @@ void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCPRegInfo *r)
|
||||
ARMCPRegInfo *r2 = alloc_cpreg(r, NULL);
|
||||
ARMCPRegInfo *r3;
|
||||
|
||||
/*
|
||||
* By convention, for wildcarded registers only the first
|
||||
* entry is used for migration; the others are marked as
|
||||
* ALIAS so we don't try to transfer the register
|
||||
* multiple times.
|
||||
*/
|
||||
if (crm != crmmin || opc1 != opc1min || opc2 != opc2min) {
|
||||
r2->type |= ARM_CP_ALIAS | ARM_CP_NO_GDB;
|
||||
}
|
||||
|
||||
switch (r->state) {
|
||||
case ARM_CP_STATE_AA32:
|
||||
add_cpreg_to_hashtable_aa32(cpu, r2, cp, crm, opc1, opc2);
|
||||
|
||||
Reference in New Issue
Block a user