On Thu, Oct 25, 2018 at 7:12 AM Umesh Kalappa <umesh.kalap...@gmail.com> wrote:
>
> Hi All,
>
> For the below C code
>
>     Test.u32pt = u32PtLen;
>     Test.u32pn = u32PtCnt;
>     Test.pstpk = pstPt;
>     Test.psteo = pstEgrInfo;
>     Test.e = 1;
>     Test.pstfi = pstFi ;
>
>     return foo(&Test, AclAction);
>
>     where "Test" is the struct type .
>
>   the generated code for mips (with -fno-delayed-branch) :
>
>    Test.u32pt = u32PtLen;
>    370:    afb50084         sw      s5,132(sp)
>    Test.u32pn = u32PtCnt;
>    374:    afb60080         sw      s6,128(sp)
>    Test.pstpk = pstPt;
>    Test.psteo = pstEgrInfo;
>    Test.e = 1;
>    Test.pstfi = pstFi ;
>
>    return foo(&Test, AclAction)
>    378:    0c000000         jal     0 <FSVC_Egr_L4ACLfoo>
>    37c:    00000000         nop
>
>    with -fdelayed-branch(gcc 4.8.1) the generated code is
>
>      Test.u32pt = u32PtLen;
>       370:    afb50084         sw      s5,132(sp)
>      Test.pstpk = pstPt;
>      Test.psteo = pstEgrInfo;
>      Test.e = 1;
>      Test.pstfi = pstFi ;
>
>       return foo(&Test, AclAction)
>       378:    0c000000         jal     0 <FSVC_Egr_L4ACLfoo>
>       Test.u32pn = u32PtCnt;
>       374:    afb60080         sw      s6,128(sp)
>
>   can filler place the "sw      s6,128(sp)"  in the delay slot ,is
> that legal and if not why it so  ?

Yes it is legal as stores to the stack don't "trap" in normal cases.

Thanks,
Andrew


>
>   Thank you
>   ~Umesh

Reply via email to