[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [PATCH 24/77] ppc: Move exception generation code out of
From: |
Benjamin Herrenschmidt |
Subject: |
Re: [Qemu-ppc] [PATCH 24/77] ppc: Move exception generation code out of line |
Date: |
Tue, 24 Nov 2015 11:59:33 +1100 |
On Fri, 2015-11-20 at 18:53 +1100, David Gibson wrote:
> On Wed, Nov 11, 2015 at 11:27:37AM +1100, Benjamin Herrenschmidt
> wrote:
> > There's no point inlining this, if you hit the exception case you
> > exit anyway,
>
> That doesn't quite seem relevant - IIUC this is affecting inlining in
> the code generation path, rather than the code execution path.
Well, the generation path is also slightly performance sensitive. My
point was making the error path inline wasn't buying us anything.
> > and not inlining saves about 100K of code size (and cache
> > footprint).
>
> That sounds like a win, though.
Yup.
.../...
> > -static inline void gen_exception_err(DisasContext *ctx, uint32_t
> > excp, uint32_t error)
> > +static void __attribute__((noinline))
> > +gen_exception_err(DisasContext *ctx, uint32_t excp, uint32_t
> > error)
>
> I thought we generally avoided bare gcc attributes in qemu, but I
> don't see a helper macro for it and I do see it used in a few other
> places, so I guess its ok.
That was my guess too...
> > {
> > TCGv_i32 t0, t1;
> > if (ctx->exception == POWERPC_EXCP_NONE) {
> > @@ -293,7 +294,8 @@ static inline void
> > gen_exception_err(DisasContext *ctx, uint32_t excp, uint32_t
> > ctx->exception = (excp);
> > }
> >
> > -static inline void gen_exception(DisasContext *ctx, uint32_t excp)
> > +static void __attribute__((noinline))
> > +gen_exception(DisasContext *ctx, uint32_t excp)
> > {
> > TCGv_i32 t0;
> > if (ctx->exception == POWERPC_EXCP_NONE) {
> > @@ -305,7 +307,8 @@ static inline void gen_exception(DisasContext
> > *ctx, uint32_t excp)
> > ctx->exception = (excp);
> > }
> >
> > -static inline void gen_debug_exception(DisasContext *ctx)
> > +static void __attribute__((noinline))
> > +gen_debug_exception(DisasContext *ctx)
> > {
> > TCGv_i32 t0;
> >
>
- Re: [Qemu-ppc] [PATCH 10/77] ppc: Fix hreg_store_msr() so that non-HV mode cannot alter MSR:HV, (continued)
- [Qemu-ppc] [PATCH 15/77] ppc: Fix sign extension issue in mtmsr(d) emulation, Benjamin Herrenschmidt, 2015/11/10
- [Qemu-ppc] [PATCH 22/77] ppc: Add real mode CI load/store instructions for P7 and P8, Benjamin Herrenschmidt, 2015/11/10
- [Qemu-ppc] [PATCH 37/77] ppc/xics: Split ICS into base class and "simple" implementation, Benjamin Herrenschmidt, 2015/11/10
- [Qemu-ppc] [PATCH 24/77] ppc: Move exception generation code out of line, Benjamin Herrenschmidt, 2015/11/10
- [Qemu-ppc] [PATCH 16/77] ppc: Get out of emulation on SMT "OR" ops, Benjamin Herrenschmidt, 2015/11/10
- [Qemu-ppc] [PATCH 48/77] ppc/pnv: Add model for Power8 PHB3 PCIe Host bridge, Benjamin Herrenschmidt, 2015/11/10