nkeynes@387 | 1 | /**
|
nkeynes@561 | 2 | * $Id$
|
nkeynes@387 | 3 | *
|
nkeynes@387 | 4 | * Support module for collecting instruction stats
|
nkeynes@387 | 5 | *
|
nkeynes@387 | 6 | * Copyright (c) 2005 Nathan Keynes.
|
nkeynes@387 | 7 | *
|
nkeynes@387 | 8 | * This program is free software; you can redistribute it and/or modify
|
nkeynes@387 | 9 | * it under the terms of the GNU General Public License as published by
|
nkeynes@387 | 10 | * the Free Software Foundation; either version 2 of the License, or
|
nkeynes@387 | 11 | * (at your option) any later version.
|
nkeynes@387 | 12 | *
|
nkeynes@387 | 13 | * This program is distributed in the hope that it will be useful,
|
nkeynes@387 | 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
nkeynes@387 | 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
nkeynes@387 | 16 | * GNU General Public License for more details.
|
nkeynes@387 | 17 | */
|
nkeynes@387 | 18 |
|
nkeynes@671 | 19 | #ifndef lxdream_sh4stat_H
|
nkeynes@671 | 20 | #define lxdream_sh4stat_H
|
nkeynes@671 | 21 |
|
nkeynes@671 | 22 | #include <stdio.h>
|
nkeynes@671 | 23 | #include <stdint.h>
|
nkeynes@671 | 24 |
|
nkeynes@671 | 25 | typedef enum {
|
nkeynes@387 | 26 | I_UNKNOWN,
|
nkeynes@387 | 27 | I_ADD, I_ADDI, I_ADDC, I_ADDV,
|
nkeynes@387 | 28 | I_AND, I_ANDI, I_ANDB,
|
nkeynes@387 | 29 | I_BF, I_BFS, I_BRA, I_BRAF, I_BSR, I_BSRF, I_BT, I_BTS,
|
nkeynes@387 | 30 | I_CLRMAC, I_CLRS, I_CLRT,
|
nkeynes@387 | 31 | I_CMPEQ, I_CMPEQI, I_CMPGE, I_CMPGT, I_CMPHI, I_CMPHS, I_CMPPL, I_CMPPZ, I_CMPSTR,
|
nkeynes@387 | 32 | I_DIV0S, I_DIV0U, I_DIV1,
|
nkeynes@387 | 33 | I_DMULS, I_DMULU, I_DT,
|
nkeynes@387 | 34 | I_EXTSB, I_EXTSW, I_EXTUB, I_EXTUW, I_FABS,
|
nkeynes@387 | 35 | I_FADD, I_FCMPEQ, I_FCMPGT, I_FCNVDS, I_FCNVSD, I_FDIV, I_FIPR, I_FLDS,
|
nkeynes@387 | 36 | I_FLDI0, I_FLDI1, I_FLOAT, I_FMAC, I_FMOV1, I_FMOV2, I_FMOV3, I_FMOV4,
|
nkeynes@387 | 37 | I_FMOV5, I_FMOV6, I_FMOV7, I_FMUL, I_FNEG, I_FRCHG, I_FSCA, I_FSCHG,
|
nkeynes@387 | 38 | I_FSQRT, I_FSRRA, I_FSTS, I_FSUB, I_FTRC, I_FTRV,
|
nkeynes@387 | 39 | I_JMP, I_JSR,
|
nkeynes@387 | 40 | I_LDCSR, I_LDC, I_LDCSRM, I_LDCM, I_LDS, I_LDSM, I_LDTLB,
|
nkeynes@387 | 41 | I_MACL, I_MACW,
|
nkeynes@387 | 42 | I_MOV, I_MOVI, I_MOVB, I_MOVL, I_MOVLPC, I_MOVW, I_MOVA, I_MOVCA, I_MOVT,
|
nkeynes@387 | 43 | I_MULL, I_MULSW, I_MULUW,
|
nkeynes@387 | 44 | I_NEG, I_NEGC, I_NOP, I_NOT,
|
nkeynes@387 | 45 | I_OCBI, I_OCBP, I_OCBWB,
|
nkeynes@387 | 46 | I_OR, I_ORI, I_ORB,
|
nkeynes@387 | 47 | I_PREF,
|
nkeynes@387 | 48 | I_ROTCL, I_ROTCR, I_ROTL, I_ROTR,
|
nkeynes@387 | 49 | I_RTE, I_RTS,
|
nkeynes@387 | 50 | I_SETS, I_SETT,
|
nkeynes@387 | 51 | I_SHAD, I_SHAL, I_SHAR, I_SHLD, I_SHLL, I_SHLR,
|
nkeynes@387 | 52 | I_SLEEP,
|
nkeynes@387 | 53 | I_STCSR, I_STC, I_STCSRM, I_STCM, I_STS, I_STSM,
|
nkeynes@387 | 54 | I_SUB, I_SUBC, I_SUBV,
|
nkeynes@387 | 55 | I_SWAPB, I_SWAPW, I_TASB,
|
nkeynes@387 | 56 | I_TRAPA,
|
nkeynes@387 | 57 | I_TST, I_TSTI, I_TSTB,
|
nkeynes@387 | 58 | I_XOR, I_XORI, I_XORB,
|
nkeynes@387 | 59 | I_XTRCT,
|
nkeynes@671 | 60 | I_UNDEF } sh4_inst_id;
|
nkeynes@387 | 61 |
|
nkeynes@387 | 62 | #define SH4_INSTRUCTION_COUNT I_UNDEF
|
nkeynes@422 | 63 |
|
nkeynes@422 | 64 | void sh4_stats_reset( void );
|
nkeynes@422 | 65 | void sh4_stats_print( FILE *out );
|
nkeynes@671 | 66 | void sh4_stats_add( sh4_inst_id id );
|
nkeynes@671 | 67 | void sh4_stats_add_by_pc( uint32_t pc );
|
nkeynes@671 | 68 |
|
nkeynes@671 | 69 |
|
nkeynes@671 | 70 | #endif /* !lxdream_sh4stat_H */
|