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 3 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, see <http://www.gnu.org/licenses/>. 17 18 */ 19 20 21#ifndef _MON_H_ 22#define _MON_H_ 23 24#include "basics.h" 25#include "itable.h" 26 27/* monitor/logger: counts what the simulation is up to */ 28 29typedef unsigned long count_type; 30 31/* Interfact to model to return model specific information */ 32typedef struct _model_print model_print; 33struct _model_print { 34 model_print *next; 35 const char *name; 36 const char *suffix_singular; 37 const char *suffix_plural; 38 count_type count; 39}; 40 41/* Additional events to monitor */ 42typedef enum _mon_events { 43 mon_event_icache_miss, 44 nr_mon_events 45} mon_events; 46 47typedef struct _mon mon; 48typedef struct _cpu_mon cpu_mon; 49 50INLINE_MON\ 51(mon *) mon_create 52(void); 53 54INLINE_MON\ 55(cpu_mon *) mon_cpu 56(mon *monitor, 57 int cpu_nr); 58 59INLINE_MON\ 60(void) mon_init 61(mon *monitor, 62 int nr_cpus); 63 64INLINE_MON\ 65(void) mon_issue 66(itable_index index, 67 cpu *processor, 68 unsigned_word cia); 69 70/* NOTE - there is no mon_iload - it is made reduntant by mon_issue() 71 and besides when the cpu's have their own cache, the information is 72 wrong */ 73 74INLINE_MON\ 75(void) mon_read 76(unsigned_word ea, 77 unsigned_word ra, 78 unsigned nr_bytes, 79 cpu *processor, 80 unsigned_word cia); 81 82INLINE_MON\ 83(void) mon_write 84(unsigned_word ea, 85 unsigned_word ra, 86 unsigned nr_bytes, 87 cpu *processor, 88 unsigned_word cia); 89 90INLINE_MON\ 91(void) mon_event 92(mon_events event, 93 cpu *processor, 94 unsigned_word cia); 95 96INLINE_MON\ 97(unsigned) mon_get_number_of_insns 98(mon *monitor, 99 int cpu_nr); 100 101INLINE_MON\ 102(void) mon_print_info 103(psim *system, 104 mon *monitor, 105 int verbose); 106 107#endif 108