MIPS: math-emu: Move all debug fs code to a separate file.
authorRalf Baechle <ralf@linux-mips.org>
Wed, 16 Apr 2014 00:46:11 +0000 (02:46 +0200)
committerRalf Baechle <ralf@linux-mips.org>
Wed, 21 May 2014 09:12:55 +0000 (11:12 +0200)
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/math-emu/Makefile
arch/mips/math-emu/cp1emu.c
arch/mips/math-emu/me-debugfs.c [new file with mode: 0644]

index 121a848a35945d57292c072d45c4cfe7cc0cc12f..0803970dfc1634469a54067e08dddbf30af9ecbb 100644 (file)
@@ -9,3 +9,5 @@ obj-y   := cp1emu.o ieee754m.o ieee754d.o ieee754dp.o ieee754sp.o ieee754.o \
           sp_div.o sp_mul.o sp_sub.o sp_add.o sp_fdp.o sp_cmp.o sp_logb.o \
           sp_scalb.o sp_simple.o sp_tint.o sp_fint.o sp_tlong.o sp_flong.o \
           dp_sqrt.o sp_sqrt.o kernel_linkage.o dsemul.o
+
+obj-$(CONFIG_DEBUG_FS) += me-debugfs.o
index 3ef9d99a729ed238d681eea0554305450c1adce7..c4b855e7b0e0dd4ea371a74b20052ad641c8bc5c 100644 (file)
@@ -35,6 +35,7 @@
  */
 #include <linux/sched.h>
 #include <linux/debugfs.h>
+#include <linux/percpu-defs.h>
 #include <linux/perf_event.h>
 
 #include <asm/branch.h>
@@ -66,12 +67,6 @@ static int fpux_emu(struct pt_regs *,
        struct mips_fpu_struct *, mips_instruction, void *__user *);
 #endif
 
-/* Further private data for which no space exists in mips_fpu_struct */
-
-#ifdef CONFIG_DEBUG_FS
-DEFINE_PER_CPU(struct mips_fpu_emulator_stats, fpuemustats);
-#endif
-
 /* Control registers */
 
 #define FPCREG_RID     0       /* $0  = revision id */
@@ -2158,53 +2153,3 @@ int fpu_emulator_cop1Handler(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
 
        return sig;
 }
-
-#ifdef CONFIG_DEBUG_FS
-
-static int fpuemu_stat_get(void *data, u64 *val)
-{
-       int cpu;
-       unsigned long sum = 0;
-       for_each_online_cpu(cpu) {
-               struct mips_fpu_emulator_stats *ps;
-               local_t *pv;
-               ps = &per_cpu(fpuemustats, cpu);
-               pv = (void *)ps + (unsigned long)data;
-               sum += local_read(pv);
-       }
-       *val = sum;
-       return 0;
-}
-DEFINE_SIMPLE_ATTRIBUTE(fops_fpuemu_stat, fpuemu_stat_get, NULL, "%llu\n");
-
-extern struct dentry *mips_debugfs_dir;
-static int __init debugfs_fpuemu(void)
-{
-       struct dentry *d, *dir;
-
-       if (!mips_debugfs_dir)
-               return -ENODEV;
-       dir = debugfs_create_dir("fpuemustats", mips_debugfs_dir);
-       if (!dir)
-               return -ENOMEM;
-
-#define FPU_STAT_CREATE(M)                                             \
-       do {                                                            \
-               d = debugfs_create_file(#M , S_IRUGO, dir,              \
-                       (void *)offsetof(struct mips_fpu_emulator_stats, M), \
-                       &fops_fpuemu_stat);                             \
-               if (!d)                                                 \
-                       return -ENOMEM;                                 \
-       } while (0)
-
-       FPU_STAT_CREATE(emulated);
-       FPU_STAT_CREATE(loads);
-       FPU_STAT_CREATE(stores);
-       FPU_STAT_CREATE(cp1ops);
-       FPU_STAT_CREATE(cp1xops);
-       FPU_STAT_CREATE(errors);
-
-       return 0;
-}
-__initcall(debugfs_fpuemu);
-#endif
diff --git a/arch/mips/math-emu/me-debugfs.c b/arch/mips/math-emu/me-debugfs.c
new file mode 100644 (file)
index 0000000..d895b38
--- /dev/null
@@ -0,0 +1,59 @@
+#include <linux/cpumask.h>
+#include <linux/debugfs.h>
+#include <linux/fs.h>
+#include <linux/init.h>
+#include <linux/percpu.h>
+#include <linux/types.h>
+#include <asm/fpu_emulator.h>
+#include <asm/local.h>
+
+DEFINE_PER_CPU(struct mips_fpu_emulator_stats, fpuemustats);
+
+static int fpuemu_stat_get(void *data, u64 *val)
+{
+       int cpu;
+       unsigned long sum = 0;
+
+       for_each_online_cpu(cpu) {
+               struct mips_fpu_emulator_stats *ps;
+               local_t *pv;
+
+               ps = &per_cpu(fpuemustats, cpu);
+               pv = (void *)ps + (unsigned long)data;
+               sum += local_read(pv);
+       }
+       *val = sum;
+       return 0;
+}
+DEFINE_SIMPLE_ATTRIBUTE(fops_fpuemu_stat, fpuemu_stat_get, NULL, "%llu\n");
+
+extern struct dentry *mips_debugfs_dir;
+static int __init debugfs_fpuemu(void)
+{
+       struct dentry *d, *dir;
+
+       if (!mips_debugfs_dir)
+               return -ENODEV;
+       dir = debugfs_create_dir("fpuemustats", mips_debugfs_dir);
+       if (!dir)
+               return -ENOMEM;
+
+#define FPU_STAT_CREATE(M)                                             \
+       do {                                                            \
+               d = debugfs_create_file(#M , S_IRUGO, dir,              \
+                       (void *)offsetof(struct mips_fpu_emulator_stats, M), \
+                       &fops_fpuemu_stat);                             \
+               if (!d)                                                 \
+                       return -ENOMEM;                                 \
+       } while (0)
+
+       FPU_STAT_CREATE(emulated);
+       FPU_STAT_CREATE(loads);
+       FPU_STAT_CREATE(stores);
+       FPU_STAT_CREATE(cp1ops);
+       FPU_STAT_CREATE(cp1xops);
+       FPU_STAT_CREATE(errors);
+
+       return 0;
+}
+__initcall(debugfs_fpuemu);