linux-mips
[Top] [All Lists]

Re: Problem with gp

To: Ralf Baechle <ralf@oss.sgi.com>
Subject: Re: Problem with gp
From: Ryan Martindale <ryan@qsicorp.com>
Date: Wed, 31 Jul 2002 17:04:38 -0700
Cc: linux-mips@oss.sgi.com
References: <3D482FF3.11F8CA0B@qsicorp.com> <20020731210423.E4892@dea.linux-mips.net>
Sender: owner-linux-mips@oss.sgi.com
Ralf Baechle wrote:
> 
> On Wed, Jul 31, 2002 at 11:44:03AM -0700, Ryan Martindale wrote:
> 
> > I seem to be having troubles getting the CVS snapshot up and running.
> > I've debugged it, and it seems that the problem stems from the fact that
> > $28 (gp) is modified in the SAVE_SOME macro to point to somewhere on the
> > stack (not sure why this occurs). Anyways, when I get my first system
> > timetick interrupt, the update_process_times function fails to get the a
> > valid task structure pointer and wipes out. Why are we adjusting gp
> > here, since it is explicitly expected to hold only current_thread_info?
> 
> Are you using 2.5 by chance?  2.5.x is currently pretty unstable as I'm
> porting all the major changes in the upstream sources to MIPS.  I recommend
> to stick with 2.4 for now.
> 
>   Ralf

Check this patch for the current CVS, please. It seems to solve some of
my problems. The related problem mentionned above was because I adjusted
the KERNEL_STACK_SIZE temporarily to twice its given size. Maybe a
comment that you shouldn't adjust that size in stackframe.h is
appropriate?

Yes, I am using the latest from the CVS tree (2.5).  Is everybody
developing with 2.4. Also how quickly are the 2.5 changes going to be
merged into the tree (I understand it is progressing already)?

Index: arch/mips/kernel/process.c
===================================================================
RCS file: /cvs/linux/arch/mips/kernel/process.c,v
retrieving revision 1.41
diff -r1.41 process.c
78c78
<       childksp = (unsigned long)p + KERNEL_STACK_SIZE - 32;
---
>       childksp = (unsigned long)ti + KERNEL_STACK_SIZE - 32;
100c100
<               childregs->regs[28] = (unsigned long) p;
---
>               childregs->regs[28] = (unsigned long) ti;


Ryan


<Prev in Thread] Current Thread [Next in Thread>