Kernel Panic on DREAMPLUG: Alignment Fault 1
Andrew Turner
andrew at fubar.geek.nz
Sat Aug 3 07:42:46 UTC 2013
On Thu, 01 Aug 2013 10:28:41 -0600
Ian Lepore <ian at FreeBSD.org> wrote:
> On Thu, 2013-08-01 at 18:13 +0200, Mattia Rossi wrote:
> > On 01/08/13 15:28, Ian Lepore wrote:
> > > On Thu, 2013-08-01 at 10:32 +0200, Mattia Rossi wrote:
> > >> <snip>
> > >>
> > >> Anyhow, I'll try to compile with gcc, and see what happens.
> > > The host system's compiler (gcc in your case) is used to build the
> > > selected compiler from src/, then that new compiler is used to
> > > build the rest of src/ into a runnable system. You can define
> > > WITHOUT_CLANG_IS_CC and WITHOUT_EABI to use gcc, and you should
> > > probably add WITHOUT_CLANG to avoid building it since it won't be
> > > used (and it takes forever to build).
> > Kernel built with gcc:
> > [snip... same fault as with clang]
>
> Yep, I just had the same experience -- same fault, same place,
> addresses differ by a few bytes which is to be expected with a
> different compiler.
>
> I've just confirmed that gcc and WITHOUT_ARM_EABI=yes works fine, so
> the problem seems to be that we're somehow not maintaining stack
> alignment correctly for EABI on architectures prior to armv6. I have
> a feeling somewhere in the code is something conditional on ARMV6
> that really needs to include armv5te (which has the ldrd/strd
> instructions).
Can you try the patch at [1]. It should fix the stack alignment in
exceptions. I suspect gcc is working in this case because it doesn't
generate any instructions that rely on the stack alignment, where clang
does.
Andrew
[1] http://people.freebsd.org/~andrew/trapframe_align2.diff
More information about the freebsd-arm
mailing list