Message ID | 1409658764-28113-3-git-send-email-peter.maydell@linaro.org |
---|---|
State | New |
Headers | show |
On Tue, Sep 2, 2014 at 1:52 PM, Peter Maydell <peter.maydell@linaro.org> wrote: > The address_mask() and asi_address_mask() functions are only used in > TARGET_SPARC64 configs, so guard with ifdefs to avoid warnings about > unused functions in 32-bit builds. > > Since the main reason these functions were marked 'inline' was to > suppress unused-function warnings with gcc, we remove the 'inline' > as no longer necessary. I thought address_mask was inline because it's in the hot path. Wouldn't the removal hit performance? Artyom > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > --- > target-sparc/ldst_helper.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/target-sparc/ldst_helper.c b/target-sparc/ldst_helper.c > index 1a62e19..2d028a5 100644 > --- a/target-sparc/ldst_helper.c > +++ b/target-sparc/ldst_helper.c > @@ -250,7 +250,8 @@ static void replace_tlb_1bit_lru(SparcTLBEntry *tlb, > > #endif > > -static inline target_ulong address_mask(CPUSPARCState *env1, target_ulong addr) > +#if defined(TARGET_SPARC64) || defined(CONFIG_USER_ONLY) > +static target_ulong address_mask(CPUSPARCState *env1, target_ulong addr) > { > #ifdef TARGET_SPARC64 > if (AM_CHECK(env1)) { > @@ -259,6 +260,7 @@ static inline target_ulong address_mask(CPUSPARCState *env1, target_ulong addr) > #endif > return addr; > } > +#endif > > /* returns true if access using this ASI is to have address translated by MMU > otherwise access is to raw physical address */ > @@ -287,8 +289,9 @@ static inline int is_translating_asi(int asi) > #endif > } > > -static inline target_ulong asi_address_mask(CPUSPARCState *env, > - int asi, target_ulong addr) > +#ifdef TARGET_SPARC64 > +static target_ulong asi_address_mask(CPUSPARCState *env, > + int asi, target_ulong addr) > { > if (is_translating_asi(asi)) { > return address_mask(env, addr); > @@ -296,6 +299,7 @@ static inline target_ulong asi_address_mask(CPUSPARCState *env, > return addr; > } > } > +#endif > > void helper_check_align(CPUSPARCState *env, target_ulong addr, uint32_t align) > { > -- > 1.9.1 > >
On 09/03/2014 01:49 AM, Artyom Tarasenko wrote: > On Tue, Sep 2, 2014 at 1:52 PM, Peter Maydell <peter.maydell@linaro.org> wrote: >> The address_mask() and asi_address_mask() functions are only used in >> TARGET_SPARC64 configs, so guard with ifdefs to avoid warnings about >> unused functions in 32-bit builds. >> >> Since the main reason these functions were marked 'inline' was to >> suppress unused-function warnings with gcc, we remove the 'inline' >> as no longer necessary. > > I thought address_mask was inline because it's in the hot path. > Wouldn't the removal hit performance? The compiler will probably inline it itself as it sees fit. r~
diff --git a/target-sparc/ldst_helper.c b/target-sparc/ldst_helper.c index 1a62e19..2d028a5 100644 --- a/target-sparc/ldst_helper.c +++ b/target-sparc/ldst_helper.c @@ -250,7 +250,8 @@ static void replace_tlb_1bit_lru(SparcTLBEntry *tlb, #endif -static inline target_ulong address_mask(CPUSPARCState *env1, target_ulong addr) +#if defined(TARGET_SPARC64) || defined(CONFIG_USER_ONLY) +static target_ulong address_mask(CPUSPARCState *env1, target_ulong addr) { #ifdef TARGET_SPARC64 if (AM_CHECK(env1)) { @@ -259,6 +260,7 @@ static inline target_ulong address_mask(CPUSPARCState *env1, target_ulong addr) #endif return addr; } +#endif /* returns true if access using this ASI is to have address translated by MMU otherwise access is to raw physical address */ @@ -287,8 +289,9 @@ static inline int is_translating_asi(int asi) #endif } -static inline target_ulong asi_address_mask(CPUSPARCState *env, - int asi, target_ulong addr) +#ifdef TARGET_SPARC64 +static target_ulong asi_address_mask(CPUSPARCState *env, + int asi, target_ulong addr) { if (is_translating_asi(asi)) { return address_mask(env, addr); @@ -296,6 +299,7 @@ static inline target_ulong asi_address_mask(CPUSPARCState *env, return addr; } } +#endif void helper_check_align(CPUSPARCState *env, target_ulong addr, uint32_t align) {
The address_mask() and asi_address_mask() functions are only used in TARGET_SPARC64 configs, so guard with ifdefs to avoid warnings about unused functions in 32-bit builds. Since the main reason these functions were marked 'inline' was to suppress unused-function warnings with gcc, we remove the 'inline' as no longer necessary. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- target-sparc/ldst_helper.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)