On 27 October 2014 06:57, Peter Maydell <peter.mayd...@linaro.org> wrote:

> On 26 October 2014 22:30, Peter Maydell <peter.mayd...@linaro.org> wrote:
> > In fact, since all of the "exception is not taken" cases are for
> > "we are in secure EL3 and the exception is not being routed to
> > secure EL3" you could just make all those entries read "1" and
> > rely on the "target_el < current_el" check. That does slightly
> > harm readability though.
>
> Thinking further about this I actually prefer it -- it completely
> separates routing from masking. So you should make those entries
> read '1' and then just use -1 for "not possible" (and assert
> that the table lookup never gives you -1).
>
> > I looked through the tables for the AArch32 routing, and I can't
> > see anywhere where they're different from the AArch64 routing
> > handling. [...] Did I miss something?
>
> I did! If EL3 is AArch32 and the SCR.FIQ etc bits are clear then
> the FIQ/IRQ in the secure world target EL3, not EL1 (since the
> latter doesn't exist). We can handle that by using the AArch64 table
> anyway and just having a bit at the end that says "if we're secure
> and target_el is 1 then set it to 3", or if you prefer with a second
> table.
>
>
Right, this is what I was saying about either needing another column or or
table.  If we are going with the table approach I think we should go all
the way and not add a "conditional".  Besides, the tables are small
anyway.  I extended the existing able to take 32/64 bit identifier.

The changes discussed above will be made in v8.


> -- PMM
>

Reply via email to