On 8/17/21 5:39 AM, Richard Henderson wrote:
Hmm, you're correct that we get this wrong.
We probably didn't do these in the right priority
order before this series, though, and I dunno whether
we get the insn-abort vs swstep ordering right either...
And you're correct that we got it wrong beforehand. The reorg did not alter the
recognized ordering of the exceptions.
I'm a bit surprised that insn-abort comes higher than breakpoint.
That would be because I mis-remembered the language.
Going back to the list,
4 - software step
6 - pc alignment fault
7 - instruction abort (address translation!)
8 - breakpoint exceptions
9 - illegal execution state
10 - software breakpoint (brk)
11 - BTI exceptions
12 - el2 traps
13 - undefined exceptions
I thought "insn-abort" was #13, but it's really #7.
Well, behaviour is unchanged, since we check for address match before calling
arm_ldl_code, before and after the reorg.
So: we need to suppress breakpoints (#8) for any higher-priority condition. For #7, that
might require some extra generic work. I should have a look at the other targets that use
architectural breakpoints to see what happens for a breakpoint on an unmapped page.
I'll work something out.
r~