On Mon, 30 May 2022 at 17:39, Richard Henderson <richard.hender...@linaro.org> wrote: > > On 5/30/22 05:44, Peter Maydell wrote: > >> G_NORETURN void raise_exception(CPUARMState *env, uint32_t excp, > >> - uint32_t syndrome, uint32_t target_el); > >> + uint32_t syndrome, uint32_t > >> cur_or_target_el); > > > > "cur_or_target_el" is odd, because it's mixing what the architecture > > sets up as two distinct things: the state the exception is > > "taken from", and the state the exception is "taken to". I was > > hoping this was just a temporary thing for the purposes of the > > refactoring and it would go away near the end of the series, but > > it doesn't seem to. > > No, sorry. Most of the time it's cur_el, except from cpregs, where we get > directed to a > specific higher el. There may be some way to split the helpers... > > I'll have another go at this reorg this week. If it still doesn't feel > cleaner, we can > drop it, and I'll make some changes to the SME patch set building on this.
I was wondering if it would work better the other way around, so that raise_exception() doesn't mess with the target_el at all, and all the "work out which EL to take the exception to" is done in target_exception_el() and similar ? -- PMM