unsigned long pc;
unsigned long sp; /* kernel stack pointer */
unsigned long psw; /* saved status register */
- unsigned long esp0; /* points to SR of stack frame */
struct {
unsigned short *addr;
unsigned char inst;
.pc = 0, \
.sp = sizeof(init_stack) + (unsigned long)init_stack, \
.psw = 0x00010000, \
- .esp0 = 0, \
.breakinfo = { \
.addr = (unsigned short *)-1, \
.inst = 0 \
void show_trace(struct task_struct *tsk, unsigned long *sp,
struct pt_regs *regs);
-#define task_pt_regs(tsk) ((struct pt_regs *)(tsk)->thread.esp0 - 1)
+#define task_pt_regs(tsk) \
+ ((struct pt_regs *)(task_stack_page(tsk) + THREAD_SIZE) - 1)
#define KSTK_EIP(tsk) (task_pt_regs(tsk)->pc)
#define KSTK_ESP(tsk) (task_pt_regs(tsk)->r[0])
{
struct ksignal ksig;
- current->thread.esp0 = (unsigned long) regs;
-
if (get_signal(&ksig)) {
/* Whee! Actually deliver the signal. */
handle_signal(&ksig, regs);
void show_trace_task(struct task_struct *tsk)
{
- show_stack(tsk,(unsigned long *)tsk->thread.esp0);
+ show_stack(tsk,(unsigned long *)tsk->thread.sp);
}
void dump_stack(void)