On Fri, Jul 24, 2015 at 04:21:01PM +0100, Peter Maydell wrote: > Some coprocessor register access functions need to be able > to report "trap to EL3 with an 'uncategorized' syndrome"; > add the necessary CPAccessResult enum and handling for it. > > I don't currently know of any registers that need to trap > to EL2 with the 'uncategorized' syndrome, but adding the > _EL2 enum as well is trivial and fills in what would > otherwise be an odd gap in the handling. > > Signed-off-by: Peter Maydell <peter.mayd...@linaro.org>
Reviewed-by: Edgar E. Iglesias <edgar.igles...@xilinx.com> > --- > target-arm/cpu.h | 3 +++ > target-arm/op_helper.c | 8 ++++++++ > 2 files changed, 11 insertions(+) > > diff --git a/target-arm/cpu.h b/target-arm/cpu.h > index 7e89152..685474e 100644 > --- a/target-arm/cpu.h > +++ b/target-arm/cpu.h > @@ -1280,6 +1280,9 @@ typedef enum CPAccessResult { > /* As CP_ACCESS_TRAP, but for traps directly to EL2 or EL3 */ > CP_ACCESS_TRAP_EL2 = 3, > CP_ACCESS_TRAP_EL3 = 4, > + /* As CP_ACCESS_UNCATEGORIZED, but for traps directly to EL2 or EL3 */ > + CP_ACCESS_TRAP_UNCATEGORIZED_EL2 = 5, > + CP_ACCESS_TRAP_UNCATEGORIZED_EL3 = 6, > } CPAccessResult; > > /* Access functions for coprocessor registers. These cannot fail and > diff --git a/target-arm/op_helper.c b/target-arm/op_helper.c > index 663c05d..1425a1d 100644 > --- a/target-arm/op_helper.c > +++ b/target-arm/op_helper.c > @@ -444,6 +444,14 @@ void HELPER(access_check_cp_reg)(CPUARMState *env, void > *rip, uint32_t syndrome) > target_el = exception_target_el(env); > syndrome = syn_uncategorized(); > break; > + case CP_ACCESS_TRAP_UNCATEGORIZED_EL2: > + target_el = 2; > + syndrome = syn_uncategorized(); > + break; > + case CP_ACCESS_TRAP_UNCATEGORIZED_EL3: > + target_el = 3; > + syndrome = syn_uncategorized(); > + break; > default: > g_assert_not_reached(); > } > -- > 1.9.1 >