Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: [netbsd-6] src/sys/arch/powerpc

Module Name:    src
Committed By:   jdc
Date:           Thu Aug  9 06:52:14 UTC 2012

Modified Files:
        src/sys/arch/powerpc/booke [netbsd-6]: trap_subr.S
        src/sys/arch/powerpc/include [netbsd-6]: frame.h

Log Message:
Pull up revisions:
  src/sys/arch/powerpc/booke/ revision 1.9
  src/sys/arch/powerpc/booke/trap_subr.S revision 1.8
  src/sys/arch/powerpc/include/frame.h revision 1.25
(requested by matt in ticket #461).

Fix a problem where the kernel could randomly reset due to a watchdog event.
When an exception happens, the srr0 (exception PC) was being saved in the
normal location of the current callframe.  This was fine except when the
routine was in its prologue after it had saved LR but had not yet updated the
stack pointer or when the routine was in its epilogue after it has restored
the stack pointer but not yet loaded the LR.  In either case this would cause
the LR to be corrupted (either running the routine forever or by branching
to itself forever).  Now we save and restore the contents of that memory
location so the corruption can't happen.

To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.8.8.1 src/sys/arch/powerpc/booke/
cvs rdiff -u -r1.6 -r1.6.8.1 src/sys/arch/powerpc/booke/trap_subr.S
cvs rdiff -u -r1.23 -r1.23.8.1 src/sys/arch/powerpc/include/frame.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Home | Main Index | Thread Index | Old Index