Message ID | 1469745225.5978.236.camel@kernel.crashing.org |
---|---|
State | New |
Headers | show |
On Fri, Jul 29, 2016 at 08:33:45AM +1000, Benjamin Herrenschmidt wrote: > float_invalid_op_excp() and float_check_status() must be inline > due to their use of GETPC(). > > Use __attribute__((__always_inline__)) to enforce it > > Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Do you want me to fold this into the patch it fixes? > --- > target-ppc/fpu_helper.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/target-ppc/fpu_helper.c b/target-ppc/fpu_helper.c > index 65dc170..b0760f0 100644 > --- a/target-ppc/fpu_helper.c > +++ b/target-ppc/fpu_helper.c > @@ -117,8 +117,8 @@ void helper_compute_fprf(CPUPPCState *env, uint64_t arg) > } > > /* Floating-point invalid operations exception */ > -static inline uint64_t float_invalid_op_excp(CPUPPCState *env, int op, > - int set_fpcc) > +static inline __attribute__((__always_inline__)) > +uint64_t float_invalid_op_excp(CPUPPCState *env, int op, int set_fpcc) > { > CPUState *cs = CPU(ppc_env_get_cpu(env)); > uint64_t ret = 0; > @@ -519,7 +519,8 @@ static void do_float_check_status(CPUPPCState *env, uintptr_t raddr) > } > } > > -static inline void float_check_status(CPUPPCState *env) > +static inline __attribute__((__always_inline__)) > +void float_check_status(CPUPPCState *env) > { > /* GETPC() works here because this is inline */ > do_float_check_status(env, GETPC()); >
On Fri, 2016-07-29 at 12:44 +1000, David Gibson wrote: > On Fri, Jul 29, 2016 at 08:33:45AM +1000, Benjamin Herrenschmidt > wrote: > > > > float_invalid_op_excp() and float_check_status() must be inline > > due to their use of GETPC(). > > > > Use __attribute__((__always_inline__)) to enforce it > > > > Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> > > Do you want me to fold this into the patch it fixes? Feel free, sure Cheers, Ben. > > > > --- > > target-ppc/fpu_helper.c | 7 ++++--- > > 1 file changed, 4 insertions(+), 3 deletions(-) > > > > diff --git a/target-ppc/fpu_helper.c b/target-ppc/fpu_helper.c > > index 65dc170..b0760f0 100644 > > --- a/target-ppc/fpu_helper.c > > +++ b/target-ppc/fpu_helper.c > > @@ -117,8 +117,8 @@ void helper_compute_fprf(CPUPPCState *env, > > uint64_t arg) > > } > > > > /* Floating-point invalid operations exception */ > > -static inline uint64_t float_invalid_op_excp(CPUPPCState *env, int > > op, > > - int set_fpcc) > > +static inline __attribute__((__always_inline__)) > > +uint64_t float_invalid_op_excp(CPUPPCState *env, int op, int > > set_fpcc) > > { > > CPUState *cs = CPU(ppc_env_get_cpu(env)); > > uint64_t ret = 0; > > @@ -519,7 +519,8 @@ static void do_float_check_status(CPUPPCState > > *env, uintptr_t raddr) > > } > > } > > > > -static inline void float_check_status(CPUPPCState *env) > > +static inline __attribute__((__always_inline__)) > > +void float_check_status(CPUPPCState *env) > > { > > /* GETPC() works here because this is inline */ > > do_float_check_status(env, GETPC()); > > >
On Fri, Jul 29, 2016 at 02:37:07PM +1000, Benjamin Herrenschmidt wrote: > On Fri, 2016-07-29 at 12:44 +1000, David Gibson wrote: > > On Fri, Jul 29, 2016 at 08:33:45AM +1000, Benjamin Herrenschmidt > > wrote: > > > > > > float_invalid_op_excp() and float_check_status() must be inline > > > due to their use of GETPC(). > > > > > > Use __attribute__((__always_inline__)) to enforce it > > > > > > Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> > > > > Do you want me to fold this into the patch it fixes? > > Feel free, sure Ok, done.
diff --git a/target-ppc/fpu_helper.c b/target-ppc/fpu_helper.c index 65dc170..b0760f0 100644 --- a/target-ppc/fpu_helper.c +++ b/target-ppc/fpu_helper.c @@ -117,8 +117,8 @@ void helper_compute_fprf(CPUPPCState *env, uint64_t arg) } /* Floating-point invalid operations exception */ -static inline uint64_t float_invalid_op_excp(CPUPPCState *env, int op, - int set_fpcc) +static inline __attribute__((__always_inline__)) +uint64_t float_invalid_op_excp(CPUPPCState *env, int op, int set_fpcc) { CPUState *cs = CPU(ppc_env_get_cpu(env)); uint64_t ret = 0; @@ -519,7 +519,8 @@ static void do_float_check_status(CPUPPCState *env, uintptr_t raddr) } } -static inline void float_check_status(CPUPPCState *env) +static inline __attribute__((__always_inline__)) +void float_check_status(CPUPPCState *env) { /* GETPC() works here because this is inline */ do_float_check_status(env, GETPC());
float_invalid_op_excp() and float_check_status() must be inline due to their use of GETPC(). Use __attribute__((__always_inline__)) to enforce it Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> --- target-ppc/fpu_helper.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)