linux-mips
[Top] [All Lists]

Re: [loongson-PATCH-v1 22/27] Hibernation Support in mips system

To: yanh@lemote.com
Subject: Re: [loongson-PATCH-v1 22/27] Hibernation Support in mips system
From: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Date: Sat, 23 May 2009 21:30:45 +0900 (JST)
Cc: wuzhangjin@gmail.com, linux-mips@linux-mips.org, ralf@linux-mips.org, philippe@cowpig.ca, r0bertz@gentoo.org, zhangfx@lemote.com, apatard@mandriva.com, loongson-dev@googlegroups.com, gnewsense-dev@nongnu.org, hofrat@hofr.at, liujl@lemote.com, erwan@thiscow.com
In-reply-to: <1243066003.8509.60.camel@localhost.localdomain>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <817be0da759e19d781e98237cc70efeb33f10a40.1242855716.git.wuzhangjin@gmail.com> <20090522.220123.59650403.anemo@mba.ocn.ne.jp> <1243066003.8509.60.camel@localhost.localdomain>
Sender: linux-mips-bounce@linux-mips.org
On Sat, 23 May 2009 16:06:43 +0800, yanh <yanh@lemote.com> wrote:
> > > +unsigned long
> > > + saved_ra,
> > > + saved_sp,
...
> > > + saved_v0,
> > > + saved_v1;
> > 
> > Instead of enumerating them, I would prefer something like "struct
> > pt_regs saved_regs" or "unsigned long saved_regs[32]".
> This implementation is referencing the x86 platform. 
> Not all the 32 reigsters are needed to save. 
> Maybe the whole registers needed to save can still be reduced.

I did not mean save/restore all registers.  I just mean using only one
symbol (struct or array).  Though the struct or array contains some
unused members, it saves many instructions in
swsusp_arch_{suspend,resume}.

For saving N registers, (N * 2) instructions are required to save to
individual variables, but (N + 2) instructions are required to save to
array or struct.

> > > +void save_processor_state(void)
> > > +{
> > > + saved_status = read_c0_status();
> > > +}
> > 
> > No need to save/restore floating point registers?
> the floating point registers are not used by kernel, for user part, they
> are already saved while entering into kernel mode.

No, floating point registers are not saved on entering into kernel.
They are saved on context switch.  

---
Atsushi Nemoto

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