On Fri, Sep 26, 2014 at 12:43:40AM +0100, Peter Maydell wrote: > On 26 September 2014 00:31, Edgar E. Iglesias <edgar.igles...@gmail.com> > wrote: > > On Fri, Sep 26, 2014 at 12:17:59AM +0100, Peter Maydell wrote: > >> Oh, yes, that's the trap enable bit. In that case we shouldn't > >> be using EXCP_SMC: this isn't routing the SMC exception, it's > >> taking a Hyp trap exception, and in AArch32 the vector > >> entry point is different. (Granted, you can't get to AArch32 > >> by taking an exception from AArch64, but we should use the > >> right EXCP_ value to avoid the code looking gratuitously > >> different for the two cases.) > > > > I see. I hadn't thought much about the AArch32 case here. For > > AArch64, the pseudo code referes to this as route_to_el2. > > Mmm, but the pseudocode keeps AArch64 and AArch32 exception > paths a lot more separate than we do, and so it doesn't need > any information about the AArch32 exception when it's dealing > with a from-AArch64 exception. Our implementation routes > both paths in common, and so it's slightly clearer to always > retain the correct info for both cases (if nothing else, it's > slightly more accurate when we print out debug log about > what exceptions we're taking).
Agreed, your suggestion makes sense and will save some pain for the A32 case. Good catch, thanks. > > > Anyway, your comment makes sense to avoid diff between a32/a64 > > and I think it actually makes the AArch64 code a bit cleaner > > aswell. > > > > I'll add EXCP_HYP_TRAP. > > Thanks. > > -- PMM