/* * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (c) 2014 Imagination Technologies Ltd. * Author: Markos Chandras <markos.chandras@imgtec.com> */ #ifndef __ASM_MIPS_R2_TO_R6_EMUL_H #define __ASM_MIPS_R2_TO_R6_EMUL_H struct mips_r2_emulator_stats { u64 movs; u64 hilo; u64 muls; u64 divs; u64 dsps; u64 bops; u64 traps; u64 fpus; u64 loads; u64 stores; u64 llsc; u64 dsemul; }; struct mips_r2br_emulator_stats { u64 jrs; u64 bltzl; u64 bgezl; u64 bltzll; u64 bgezll; u64 bltzall; u64 bgezall; u64 bltzal; u64 bgezal; u64 beql; u64 bnel; u64 blezl; u64 bgtzl; }; #ifdef CONFIG_DEBUG_FS #define MIPS_R2_STATS(M) \ do { \ u32 nir; \ int err; \ \ preempt_disable(); \ __this_cpu_inc(mipsr2emustats.M); \ err = __get_user(nir, (u32 __user *)regs->cp0_epc); \ if (!err) { \ if (nir == BREAK_MATH(0)) \ __this_cpu_inc(mipsr2bdemustats.M); \ } \ preempt_enable(); \ } while (0) #define MIPS_R2BR_STATS(M) \ do { \ preempt_disable(); \ __this_cpu_inc(mipsr2bremustats.M); \ preempt_enable(); \ } while (0) #else #define MIPS_R2_STATS(M) do { } while (0) #define MIPS_R2BR_STATS(M) do { } while (0) #endif /* CONFIG_DEBUG_FS */ struct r2_decoder_table { u32 mask; u32 code; int (*func)(struct pt_regs *regs, u32 inst); }; extern void do_trap_or_bp(struct pt_regs *regs, unsigned int code, int si_code, const char *str); #ifndef CONFIG_MIPSR2_TO_R6_EMULATOR static int mipsr2_emulation;
static inline int mipsr2_decoder(struct pt_regs *regs, u32 inst, unsigned long *fcr31) { return 0; }Contributors
Person | Tokens | Prop | Commits | CommitProp |
Leonid Yegoshin | 17 | 73.91% | 1 | 33.33% |
Maciej W. Rozycki | 6 | 26.09% | 2 | 66.67% |
Total | 23 | 100.00% | 3 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
Leonid Yegoshin | 229 | 93.85% | 1 | 20.00% |
Maciej W. Rozycki | 15 | 6.15% | 4 | 80.00% |
Total | 244 | 100.00% | 5 | 100.00% |