MIPS: math-emu: Mark exception handling functions as __cold.
authorRalf Baechle <ralf@linux-mips.org>
Tue, 15 Apr 2014 22:47:59 +0000 (00:47 +0200)
committerRalf Baechle <ralf@linux-mips.org>
Wed, 21 May 2014 09:12:47 +0000 (11:12 +0200)
Optimizes the code flow and shaves of half a percent of the math-emu
code size.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/math-emu/ieee754.c
arch/mips/math-emu/ieee754.h
arch/mips/math-emu/ieee754dp.c
arch/mips/math-emu/ieee754dp.h
arch/mips/math-emu/ieee754sp.c
arch/mips/math-emu/ieee754sp.h
arch/mips/math-emu/ieee754xcpt.c

index 0015cf1989dad3f87e823a0f6b2d1261c123c7ff..e7c314c9f46a85cc4138f313be5c769e8b483d92 100644 (file)
@@ -28,6 +28,7 @@
  * ########################################################################
  */
 
+#include <linux/compiler.h>
 
 #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;
 
index fe61d16cf6448110b2b9299270a03661ee939891..967831e3206f553dfe43022f51e998521ed9ede3 100644 (file)
@@ -24,6 +24,7 @@
 #ifndef __ARCH_MIPS_MATH_EMU_IEEE754_H
 #define __ARCH_MIPS_MATH_EMU_IEEE754_H
 
+#include <linux/compiler.h>
 #include <asm/byteorder.h>
 #include <linux/types.h>
 #include <linux/sched.h>
@@ -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)
index 068e56be8de91227c3ec8c65ca2d5c785e3c2360..df59d16bd4fdd3cb79f4270444cf866bb8adf840 100644 (file)
@@ -23,6 +23,7 @@
  * ########################################################################
  */
 
+#include <linux/compiler.h>
 
 #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;
 
index f139c724c59afd8e5cf769fd750c456116f27edf..ce2af5b04b48d8103561fb6f8604bc4cecb3eb67 100644 (file)
@@ -24,6 +24,7 @@
  * ########################################################################
  */
 
+#include <linux/compiler.h>
 
 #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);
 
index 15d1e36cfe64a26c62b10a78133cd9a8415ff9ae..dd3ecd62e4694af92d5db511ae63720b841732c7 100644 (file)
@@ -23,6 +23,7 @@
  * ########################################################################
  */
 
+#include <linux/compiler.h>
 
 #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;
 
index 754fd54649b51787eed7756cc496fed150c9d180..e3933bed0be4d5b2f37430253a0c798d9523e4a3 100644 (file)
@@ -24,6 +24,7 @@
  * ########################################################################
  */
 
+#include <linux/compiler.h>
 
 #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);
 
index 967167116ae8110bf7c6fd281e71d8a89a4888b9..005bbb1847818c6f0fd1510991290ea2ef0970df 100644 (file)
@@ -28,6 +28,7 @@
  *  Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved.
  *************************************************************************/
 
+#include <linux/compiler.h>
 #include <linux/kernel.h>
 #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]);