On Wed, Mar 11, 2015 at 05:49:39PM +0000, Peter Maydell wrote: > On 11 March 2015 at 17:42, Andrew Jones <drjo...@redhat.com> wrote: > > On Wed, Mar 11, 2015 at 05:02:00PM +0000, Peter Maydell wrote: > > >> > + if (is_aa64) { > >> > + switch (regime_el(env, mmu_idx)) { > >> > + case 1: > >> > + if (is_user && !user_rw) { > >> > + wxn = 0; > >> > >> I don't understand this. We ignore the WXN bit if this is > >> a user access and the page is not readable ? > > > > Yup. If the page is not readable or writeable, AP[1]=0. I almost > > submitted an errata to the ARM ARM when I saw this on the 2nd line > > of table D4-32. I thought it must be a typo. However I tested it > > on hardware, and it works this way. So at least the weirdness has > > been implemented consistently... > > Still confused. If the page isn't readable or writable > then WXN isn't going to kick in anyway because WXN only > affects writable pages. I don't see what the case is > where this bit of code will make a difference. >
Ah, that is true. Too bad I didn't read this before sending v3, as I could have removed it, if you prefer. I had it here to be explicit about the ignoring of wxn - matching the spec, but you're right, it's useless code. Should I send a v4? drew