Retrieving PC from (traversing) the stack on Alpha

Brian Hall (brianw.hall@compaq.com)
Sat, 18 Dec 1999 14:51:51 -0700 (MST)


Okay, after some research, I think I figured out how to get at the needed
Alpha registers:

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)"
> stuff.

--
Brian Hall <brianw.hall@compaq.com>
Linux Consultant

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/