1/* This file is part of the program psim. 2 3 Copyright (C) 1994-1995, Andrew Cagney <cagney@highland.com.au> 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation; either version 2 of the License, or 8 (at your option) any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program; if not, write to the Free Software 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 19 */ 20 21 22#ifndef _MON_H_ 23#define _MON_H_ 24 25#include "basics.h" 26#include "itable.h" 27 28/* monitor/logger: counts what the simulation is up to */ 29 30typedef unsigned long count_type; 31 32/* Interfact to model to return model specific information */ 33typedef struct _model_print model_print; 34struct _model_print { 35 model_print *next; 36 const char *name; 37 const char *suffix_singular; 38 const char *suffix_plural; 39 count_type count; 40}; 41 42/* Additional events to monitor */ 43typedef enum _mon_events { 44 mon_event_icache_miss, 45 nr_mon_events 46} mon_events; 47 48typedef struct _mon mon; 49typedef struct _cpu_mon cpu_mon; 50 51INLINE_MON\ 52(mon *) mon_create 53(void); 54 55INLINE_MON\ 56(cpu_mon *) mon_cpu 57(mon *monitor, 58 int cpu_nr); 59 60INLINE_MON\ 61(void) mon_init 62(mon *monitor, 63 int nr_cpus); 64 65INLINE_MON\ 66(void) mon_issue 67(itable_index index, 68 cpu *processor, 69 unsigned_word cia); 70 71/* NOTE - there is no mon_iload - it is made reduntant by mon_issue() 72 and besides when the cpu's have their own cache, the information is 73 wrong */ 74 75INLINE_MON\ 76(void) mon_read 77(unsigned_word ea, 78 unsigned_word ra, 79 unsigned nr_bytes, 80 cpu *processor, 81 unsigned_word cia); 82 83INLINE_MON\ 84(void) mon_write 85(unsigned_word ea, 86 unsigned_word ra, 87 unsigned nr_bytes, 88 cpu *processor, 89 unsigned_word cia); 90 91INLINE_MON\ 92(void) mon_event 93(mon_events event, 94 cpu *processor, 95 unsigned_word cia); 96 97INLINE_MON\ 98(unsigned) mon_get_number_of_insns 99(mon *monitor, 100 int cpu_nr); 101 102INLINE_MON\ 103(void) mon_print_info 104(psim *system, 105 mon *monitor, 106 int verbose); 107 108#endif 109