From cae55066cb1ce3f8572ddddbd3ec3c54b973a89c Mon Sep 17 00:00:00 2001 From: Ralf Baechle Date: Wed, 16 Apr 2014 00:47:59 +0200 Subject: [PATCH] MIPS: math-emu: Mark exception handling functions as __cold. Optimizes the code flow and shaves of half a percent of the math-emu code size. Signed-off-by: Ralf Baechle --- arch/mips/math-emu/ieee754.c | 5 +++-- arch/mips/math-emu/ieee754.h | 3 ++- arch/mips/math-emu/ieee754dp.c | 5 +++-- arch/mips/math-emu/ieee754dp.h | 9 +++++---- arch/mips/math-emu/ieee754sp.c | 5 +++-- arch/mips/math-emu/ieee754sp.h | 9 +++++---- arch/mips/math-emu/ieee754xcpt.c | 3 ++- 7 files changed, 23 insertions(+), 16 deletions(-) diff --git a/arch/mips/math-emu/ieee754.c b/arch/mips/math-emu/ieee754.c index 0015cf1..e7c314c 100644 --- a/arch/mips/math-emu/ieee754.c +++ b/arch/mips/math-emu/ieee754.c @@ -28,6 +28,7 @@ * ######################################################################## */ +#include #include "ieee754int.h" #include "ieee754sp.h" @@ -96,7 +97,7 @@ const struct ieee754sp_konst __ieee754sp_spcvals[] = { }; -int ieee754si_xcpt(int r, const char *op, ...) +int __cold ieee754si_xcpt(int r, const char *op, ...) { struct ieee754xctx ax; @@ -111,7 +112,7 @@ int ieee754si_xcpt(int r, const char *op, ...) return ax.rv.si; } -s64 ieee754di_xcpt(s64 r, const char *op, ...) +s64 __cold ieee754di_xcpt(s64 r, const char *op, ...) { struct ieee754xctx ax; diff --git a/arch/mips/math-emu/ieee754.h b/arch/mips/math-emu/ieee754.h index fe61d16..967831e 100644 --- a/arch/mips/math-emu/ieee754.h +++ b/arch/mips/math-emu/ieee754.h @@ -24,6 +24,7 @@ #ifndef __ARCH_MIPS_MATH_EMU_IEEE754_H #define __ARCH_MIPS_MATH_EMU_IEEE754_H +#include #include #include #include @@ -421,7 +422,7 @@ struct ieee754xctx { #define IEEE754_RT_SI 3 #define IEEE754_RT_DI 4 -extern void ieee754_xcpt(struct ieee754xctx *xcp); +extern void __cold ieee754_xcpt(struct ieee754xctx *xcp); /* compat */ #define ieee754dp_fix(x) ieee754dp_tint(x) diff --git a/arch/mips/math-emu/ieee754dp.c b/arch/mips/math-emu/ieee754dp.c index 068e56b..df59d16b 100644 --- a/arch/mips/math-emu/ieee754dp.c +++ b/arch/mips/math-emu/ieee754dp.c @@ -23,6 +23,7 @@ * ######################################################################## */ +#include #include "ieee754dp.h" @@ -45,7 +46,7 @@ int ieee754dp_issnan(ieee754dp x) } -ieee754dp ieee754dp_xcpt(ieee754dp r, const char *op, ...) +ieee754dp __cold ieee754dp_xcpt(ieee754dp r, const char *op, ...) { struct ieee754xctx ax; if (!TSTX()) @@ -60,7 +61,7 @@ ieee754dp ieee754dp_xcpt(ieee754dp r, const char *op, ...) return ax.rv.dp; } -ieee754dp ieee754dp_nanxcpt(ieee754dp r, const char *op, ...) +ieee754dp __cold ieee754dp_nanxcpt(ieee754dp r, const char *op, ...) { struct ieee754xctx ax; diff --git a/arch/mips/math-emu/ieee754dp.h b/arch/mips/math-emu/ieee754dp.h index f139c72..ce2af5b 100644 --- a/arch/mips/math-emu/ieee754dp.h +++ b/arch/mips/math-emu/ieee754dp.h @@ -24,6 +24,7 @@ * ######################################################################## */ +#include #include "ieee754int.h" @@ -62,10 +63,10 @@ static inline ieee754dp builddp(int s, int bx, u64 m) extern int ieee754dp_isnan(ieee754dp); extern int ieee754dp_issnan(ieee754dp); -extern int ieee754si_xcpt(int, const char *, ...); -extern s64 ieee754di_xcpt(s64, const char *, ...); -extern ieee754dp ieee754dp_xcpt(ieee754dp, const char *, ...); -extern ieee754dp ieee754dp_nanxcpt(ieee754dp, const char *, ...); +extern int __cold ieee754si_xcpt(int, const char *, ...); +extern s64 __cold ieee754di_xcpt(s64, const char *, ...); +extern ieee754dp __cold ieee754dp_xcpt(ieee754dp, const char *, ...); +extern ieee754dp __cold ieee754dp_nanxcpt(ieee754dp, const char *, ...); extern ieee754dp ieee754dp_bestnan(ieee754dp, ieee754dp); extern ieee754dp ieee754dp_format(int, int, u64); diff --git a/arch/mips/math-emu/ieee754sp.c b/arch/mips/math-emu/ieee754sp.c index 15d1e36..dd3ecd6 100644 --- a/arch/mips/math-emu/ieee754sp.c +++ b/arch/mips/math-emu/ieee754sp.c @@ -23,6 +23,7 @@ * ######################################################################## */ +#include #include "ieee754sp.h" @@ -45,7 +46,7 @@ int ieee754sp_issnan(ieee754sp x) } -ieee754sp ieee754sp_xcpt(ieee754sp r, const char *op, ...) +ieee754sp __cold ieee754sp_xcpt(ieee754sp r, const char *op, ...) { struct ieee754xctx ax; @@ -61,7 +62,7 @@ ieee754sp ieee754sp_xcpt(ieee754sp r, const char *op, ...) return ax.rv.sp; } -ieee754sp ieee754sp_nanxcpt(ieee754sp r, const char *op, ...) +ieee754sp __cold ieee754sp_nanxcpt(ieee754sp r, const char *op, ...) { struct ieee754xctx ax; diff --git a/arch/mips/math-emu/ieee754sp.h b/arch/mips/math-emu/ieee754sp.h index 754fd54..e3933be 100644 --- a/arch/mips/math-emu/ieee754sp.h +++ b/arch/mips/math-emu/ieee754sp.h @@ -24,6 +24,7 @@ * ######################################################################## */ +#include #include "ieee754int.h" @@ -68,10 +69,10 @@ static inline ieee754sp buildsp(int s, int bx, unsigned m) extern int ieee754sp_isnan(ieee754sp); extern int ieee754sp_issnan(ieee754sp); -extern int ieee754si_xcpt(int, const char *, ...); -extern s64 ieee754di_xcpt(s64, const char *, ...); -extern ieee754sp ieee754sp_xcpt(ieee754sp, const char *, ...); -extern ieee754sp ieee754sp_nanxcpt(ieee754sp, const char *, ...); +extern int __cold ieee754si_xcpt(int, const char *, ...); +extern s64 __cold ieee754di_xcpt(s64, const char *, ...); +extern ieee754sp __cold ieee754sp_xcpt(ieee754sp, const char *, ...); +extern ieee754sp __cold ieee754sp_nanxcpt(ieee754sp, const char *, ...); extern ieee754sp ieee754sp_bestnan(ieee754sp, ieee754sp); extern ieee754sp ieee754sp_format(int, int, unsigned); diff --git a/arch/mips/math-emu/ieee754xcpt.c b/arch/mips/math-emu/ieee754xcpt.c index 96716711..005bbb1 100644 --- a/arch/mips/math-emu/ieee754xcpt.c +++ b/arch/mips/math-emu/ieee754xcpt.c @@ -28,6 +28,7 @@ * Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved. *************************************************************************/ +#include #include #include "ieee754.h" @@ -40,7 +41,7 @@ static const char *const rtnames[] = { "sp", "dp", "xp", "si", "di" }; -void ieee754_xcpt(struct ieee754xctx *xcp) +void __cold ieee754_xcpt(struct ieee754xctx *xcp) { printk(KERN_DEBUG "floating point exception in \"%s\", type=%s\n", xcp->op, rtnames[xcp->rt]); -- 2.7.4