1 /* 2 * This program is free software; you can distribute it and/or modify it 3 * under the terms of the GNU General Public License (Version 2) as 4 * published by the Free Software Foundation. 5 * 6 * This program is distributed in the hope it will be useful, but WITHOUT 7 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 8 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 9 * for more details. 10 * 11 * You should have received a copy of the GNU General Public License along 12 * with this program; if not, write to the Free Software Foundation, Inc., 13 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. 14 * 15 * Further private data for which no space exists in mips_fpu_struct. 16 * This should be subsumed into the mips_fpu_struct structure as 17 * defined in processor.h as soon as the absurd wired absolute assembler 18 * offsets become dynamic at compile time. 19 * 20 * Kevin D. Kissell, kevink@mips.com and Carsten Langgaard, carstenl@mips.com 21 * Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved. 22 */ 23 #ifndef _ASM_FPU_EMULATOR_H 24 #define _ASM_FPU_EMULATOR_H 25 26 #include <asm/break.h> 27 #include <asm/inst.h> 28 29 struct mips_fpu_emulator_stats { 30 unsigned int emulated; 31 unsigned int loads; 32 unsigned int stores; 33 unsigned int cp1ops; 34 unsigned int cp1xops; 35 unsigned int errors; 36 }; 37 38 extern struct mips_fpu_emulator_stats fpuemustats; 39 40 extern int mips_dsemul(struct pt_regs *regs, mips_instruction ir, 41 unsigned long cpc); 42 extern int do_dsemulret(struct pt_regs *xcp); 43 44 /* 45 * Instruction inserted following the badinst to further tag the sequence 46 */ 47 #define BD_COOKIE 0x0000bd36 /* tne $0, $0 with baggage */ 48 49 /* 50 * Break instruction with special math emu break code set 51 */ 52 #define BREAK_MATH (0x0000000d | (BRK_MEMU << 16)) 53 54 #endif /* _ASM_FPU_EMULATOR_H */ 55