#ifndef _MON_H_
#define _MON_H_
-#ifndef INLINE_MON
-#define INLINE_MON
-#endif
-
#include "basics.h"
#include "itable.h"
/* monitor/logger: counts what the simulation is up to */
+typedef unsigned long count_type;
+
/* Interfact to model to return model specific information */
typedef struct _model_print model_print;
struct _model_print {
const char *name;
const char *suffix_singular;
const char *suffix_plural;
- unsigned count;
+ count_type count;
};
/* Additional events to monitor */
typedef struct _mon mon;
typedef struct _cpu_mon cpu_mon;
-INLINE_MON mon *mon_create
+INLINE_MON\
+(mon *) mon_create
(void);
-INLINE_MON cpu_mon *mon_cpu
+INLINE_MON\
+(cpu_mon *) mon_cpu
(mon *monitor,
int cpu_nr);
-INLINE_MON void mon_init
+INLINE_MON\
+(void) mon_init
(mon *monitor,
int nr_cpus);
-INLINE_MON void mon_issue
+INLINE_MON\
+(void) mon_issue
(itable_index index,
cpu *processor,
unsigned_word cia);
and besides when the cpu's have their own cache, the information is
wrong */
-INLINE_MON void mon_read
+INLINE_MON\
+(void) mon_read
(unsigned_word ea,
unsigned_word ra,
unsigned nr_bytes,
cpu *processor,
unsigned_word cia);
-INLINE_MON void mon_write
+INLINE_MON\
+(void) mon_write
(unsigned_word ea,
unsigned_word ra,
unsigned nr_bytes,
cpu *processor,
unsigned_word cia);
-INLINE_MON void mon_event
+INLINE_MON\
+(void) mon_event
(mon_events event,
cpu *processor,
unsigned_word cia);
-INLINE_MON void mon_print_info
+INLINE_MON\
+(unsigned) mon_get_number_of_insns
+(mon *monitor,
+ int cpu_nr);
+
+INLINE_MON\
+(void) mon_print_info
(psim *system,
mon *monitor,
int verbose);