Okay, after some research, I think I figured out how to get at the needed
register unsigned long fptr __asm__("$15"); /* get frame pointer? */
register unsigned long sptr __asm__("$30"); /* get stack pointer? */
Now, my understanding of the problem is that I need to go back two frames on
the stack to get the PC of interest, and three for the RA of interest. How do I
do this? I haven't had much luck yet trying to figure out how to navigate the
kernel stack. I see the pt_regs structure, but I'm not exactly sure how to
figure the frame size, since that can vary with each frame.
On 13-Dec-1999 Matt Robinson wrote:
> The problem is from panic(), you don't have the registers, so you
> need to grab them. That way the 'lcrash' code has a point to start
> with as far as the failing process is concerned. Hence the "if (regs)"
Brian Hall <brianw.hall@xxxxxxxxxx>