On 18 July 2018 at 05:02, Richard Henderson <richard.hender...@linaro.org> wrote: > On 07/17/2018 12:40 PM, Peter Maydell wrote: >> On 17 July 2018 at 18:29, Richard Henderson >> <richard.hender...@linaro.org> wrote: >>> I don't understand why this is necessary in the v8m case. >>> >>> AP APL >>> <----B1----|----L1-B2-A-------|---L2---> >>> >>> >>> Your comment posits two regions [B1,L1] and [B2,L2], that A is not within >>> [B1,L1] but is within [B2,L2] (otherwise we would not report a hit at all). >>> Further, that [B1,L1] intersects [AP,APL] but does not intersect [B2,L2] >>> (otherwise we would report a fault for overlapping regions). >>> >>> Surely this combination of ranges implies that [B2,L2] must itself set >>> IS_SUBPAGE (otherwise the first region would not overlap the page of A, or >>> would not overlap the second region). >> >> (a) the overlap fault is only for addresses which are actually in the >> overlap (ie "you asked about address X and it hits in R1 and R2"); it >> doesn't imply that other addresses which are only in R1 fault just >> because some part of R1 overlaps with R2. > > Ah, that wasn't clear from the manual.
R_DCHP is the text rule that defines this bit of behaviour (generate fault for "an access to an address that matches in more than one region"); MPUCheck() is the pseudocode function. thanks -- PMM