Subject: Run armv7 32 bit userspace on aarch64

From: [email-masked] (Will Deacon)
Date: Tue, 13 Oct 2015 15:18:00 +0100

On Mon, Oct 12, 2015 at 11:41:54AM -0700, Shi, Yang wrote:
> On 10/12/2015 10:50 AM, Will Deacon wrote:
> >On Mon, Oct 12, 2015 at 10:38:25AM -0700, Shi, Yang wrote:
> >>BTW, it may be related to unaligned address.
> >>
> >>init[1]: unhandled level 3 translation fault (11) at 0x43acfad3, esr
> >>0x92000047
> >>pgd = ffff80007b8be000
> >>[43acfad3] *pgd=00000000fb8c5003, *pud=00000000fb8c1003,
> >>*pmd=00000000fb8c2003, *pte=0000000000000000
> >>
> >>The userspace is trying to write to 0x43acfad3, the permission is
> >>readonly.
> >
> >What's the instruction making the access? If it's a store-multiple, then
> 
> My aarch64 gdb just shows hex code instead of human readable assembly code.
> 
> It is 0xe5c02000.
> 
> I just checked the ARMv7 manual, it looks like STRB instruction, so we can
> rule this out.
> 
> I just figured out it is caused by gcc 5.2 pre-link. It works if I disable
> pre-link. The pre-link issue breaks all armv7 userspace even though it is
> run on armv7 machines.

Does that mean you could supply a simple example so I can reproduce this
myself, please? (e.g. if I write a hello world program in C and run it
with a particular set of compiler options then it won't run under a
64-bit kernel but it will work under a 32-bit one).

Will