qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 05/10] tcg/mips: use stack for TCG temps


From: Aurelien Jarno
Subject: Re: [Qemu-devel] [PATCH 05/10] tcg/mips: use stack for TCG temps
Date: Sat, 22 Sep 2012 20:17:31 +0200
User-agent: Mutt/1.5.21 (2010-09-15)

On Sat, Sep 22, 2012 at 06:09:13PM +0000, Blue Swirl wrote:
> On Sat, Sep 22, 2012 at 5:25 PM, Aurelien Jarno <address@hidden> wrote:
> > On Sat, Sep 22, 2012 at 02:37:35PM +0000, Blue Swirl wrote:
> >> On Fri, Sep 21, 2012 at 4:43 PM, Aurelien Jarno <address@hidden> wrote:
> >> > Use stack instead of temp_buf array in CPUState for TCG
> >> > temps.
> >> >
> >> > Signed-off-by: Aurelien Jarno <address@hidden>
> >> > ---
> >> >  tcg/mips/tcg-target.c |   10 ++++++----
> >> >  1 file changed, 6 insertions(+), 4 deletions(-)
> >> >
> >> > diff --git a/tcg/mips/tcg-target.c b/tcg/mips/tcg-target.c
> >> > index 0ea6a76..c05169f 100644
> >> > --- a/tcg/mips/tcg-target.c
> >> > +++ b/tcg/mips/tcg-target.c
> >> > @@ -1538,11 +1538,15 @@ static void tcg_target_qemu_prologue(TCGContext 
> >> > *s)
> >> >  {
> >> >      int i, frame_size;
> >> >
> >> > -    /* reserve some stack space */
> >> > +    /* reserve some stack space, also for TCG temps. */
> >> >      frame_size = ARRAY_SIZE(tcg_target_callee_save_regs) * 4
> >> > -                 + TCG_STATIC_CALL_ARGS_SIZE;
> >> > +                 + TCG_STATIC_CALL_ARGS_SIZE
> >> > +                 + CPU_TEMP_BUF_NLONGS * sizeof(long);
> >> >      frame_size = (frame_size + TCG_TARGET_STACK_ALIGN - 1) &
> >> >                   ~(TCG_TARGET_STACK_ALIGN - 1);
> >> > +    tcg_set_frame(s, TCG_REG_SP, 
> >> > ARRAY_SIZE(tcg_target_callee_save_regs) * 4
> >> > +                  + TCG_STATIC_CALL_ARGS_SIZE,
> >> > +                  CPU_TEMP_BUF_NLONGS * sizeof(long));
> >>
> >> My version used frame_size instead of duplicating a part of the
> >> calculations, wouldn't that take stack alignment also in
> >> consideration?
> >>
> >> http://lists.nongnu.org/archive/html/qemu-devel/2011-06/msg02566.html
> >
> > Oh haven't seen this patch before. Well the choice is basically between
> > adding one value and subtracting one, not sure what is the best.
> >
> > About the alignment, do we require some specific alignment for the
> > temps? As long as they are aligned wrt size, I think it's fine.
> 
> Well, since we align the frame, that could be a better reference.
> Usually stack doesn't get unaligned but why is there then the
> alignment calculation?
> 

The ABI require the stack frame to be aligned to 8-bytes. It doesn't 
require any alignment for the data you put in the local parts.

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
address@hidden                 http://www.aurel32.net



reply via email to

[Prev in Thread] Current Thread [Next in Thread]