All of lore.kernel.org
 help / color / mirror / Atom feed
* Conflicting addr value between v6 and v7 for do_PrefetchAbort()
@ 2013-08-22  2:55 Corey Minyard
  0 siblings, 0 replies; only message in thread
From: Corey Minyard @ 2013-08-22  2:55 UTC (permalink / raw)
  To: linux-arm-kernel

I was messing around in this code, talking with someone else about it, 
and I discovered that the addr parameter do do_PrefetchAbort() is 
different on v6 and v7.  For v7 we have:

ENTRY(v7_pabort)
     mrc    p15, 0, r0, c6, c0, 2        @ get IFAR
     mrc    p15, 0, r1, c5, c0, 1        @ get IFSR
     b    do_PrefetchAbort
ENDPROC(v7_pabort)

And for v6:

ENTRY(v6_pabort)
     mov    r0, r4
     mrc    p15, 0, r1, c5, c0, 1        @ get IFSR
     b    do_PrefetchAbort
ENDPROC(v6_pabort)

For v7 that's the address that was accessed to cause the fault.  For v6 
that appears to be the address of the instruction that caused the 
fault.  Am I right here?  Which of these is correct?

I see 
http://lists.infradead.org/pipermail/linux-arm-kernel/2009-September/001051.html 
which adds this and
http://lists.infradead.org/pipermail/linux-arm-kernel/2011-June/055019.html 
which sets it to r4 for the v6.  But you get different values in addr 
depending on whether it is v6 or v7.

Thanks,

-corey

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2013-08-22  2:55 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-08-22  2:55 Conflicting addr value between v6 and v7 for do_PrefetchAbort() Corey Minyard

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.