On 13 November 2014 10:46, Peter Maydell <peter.mayd...@linaro.org> wrote:

> On 13 November 2014 16:26, Tim Sander <t...@krieglstein.org> wrote:
> > This is the gcc inline assembly syntax from my kernel module written in
> c:
> > asm("mrc p15, 0, %0, c12, c0, 0" : "=r"(vbar) : : "cc");
> > asm("mrc p15, 0, %0, c12, c0, 1" : "=r"(mvbar) : : "cc"); <- not
> implemented?
> > asm("mrc p15, 4, %0, c12, c0, 0" : "=r"(hvbar) : : "cc");  <- not
> implemented?
> >
> > It seems as if neither mvbar nor hvbar are implemented and that vbar
> returns
> > zero !? I also have a problem with the addresses:
> > The fiq handler lies at 0xffff1240 but the vectors_page in Linux points
> to
> > 0xbfffe000? You where talking about the fact that the security extensions
> > where not implemented. I was not aware that the different vbar's where
> > already part of the security stuff?
>
> MVBAR is part of the Security extensions. HVBAR is part of the
> Virtualization extensions. In mainline QEMU we implement neither
> of those extensions, and so don't implement the associated
> registers. (Strictly speaking, VBAR is also only in the
> Security extensions, but we provide it as a workaround for
> guests that assume our CPUs should implement it.)
>

Peter beat me to it.  None of the VBAR registers should matter in your case
which coincides with the use of hivecs.

It may be worthwhile to put a kernel breakpoint in handle_fiq_as_nmi() just
to see where it goes.  If CONFIG_ARM_GIC is enabled it should take you to
your handler I suspect.  Plus, if you get there then we have likely proven
that QEMU is getting the kernel to the right place.  I set a BP in this
routine on my A9 run and appear to be hitting it correctly.

Let me know how I can help in debugging the QEMU side of things.


>
> -- PMM
>

Reply via email to