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. -- PMM