MIPS: Add FPU emulator counter for emulated delay slots.
authorDavid Daney <david.daney@cavium.com>
Wed, 3 Dec 2014 19:12:23 +0000 (11:12 -0800)
committerRalf Baechle <ralf@linux-mips.org>
Wed, 1 Apr 2015 15:21:57 +0000 (17:21 +0200)
Delay slot emulation in the FPU emulator is the only kernel user of an
executable stack, it is also very slow.  Add a counter so we can see
how many of these emulations are done.

Signed-off-by: David Daney <david.daney@cavium.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/8634/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/include/asm/fpu_emulator.h
arch/mips/math-emu/dsemul.c
arch/mips/math-emu/me-debugfs.c

index 3ee34771330718ec4c674c738f21a9dfb30af515..6370c82eb5e1a11053b4f619c810818172552f36 100644 (file)
@@ -44,6 +44,7 @@ struct mips_fpu_emulator_stats {
        unsigned long ieee754_overflow;
        unsigned long ieee754_zerodiv;
        unsigned long ieee754_invalidop;
+       unsigned long ds_emul;
 };
 
 DECLARE_PER_CPU(struct mips_fpu_emulator_stats, fpuemustats);
index 4f514f3724cb9e819276d2cf34ad8b83f722d74a..58f58185f1c485506cad5b7a2b68ba6236173b7b 100644 (file)
@@ -158,6 +158,6 @@ int do_dsemulret(struct pt_regs *xcp)
 
        /* Set EPC to return to post-branch instruction */
        xcp->cp0_epc = epc;
-
+       MIPS_FPU_EMU_INC_STATS(ds_emul);
        return 1;
 }
index becdd63e14a9365da5718b6be247de303f21f78a..f308e0f05fc5856e74524804d275bb298ac2d6a5 100644 (file)
@@ -61,6 +61,7 @@ do {                                                                  \
        FPU_STAT_CREATE(ieee754_overflow);
        FPU_STAT_CREATE(ieee754_zerodiv);
        FPU_STAT_CREATE(ieee754_invalidop);
+       FPU_STAT_CREATE(ds_emul);
 
        return 0;
 }