/******************************************************************************
** FILE: xexit.c
** Function called at simulator termination.
*/
#include <sys/types.h>
#include <sys/time.h>
#include "internal.h"
#include "fastsim.h"
void
xexit()
{
xlog(1,"[%d] # CPU cycles => %lld",++nstat,xCPU_cycle);
xlog(1,"[%d] # insts retired => %lld",++nstat,xnum_insts_retired);
#ifdef STATS
xlog(2,"[%d] # branch predict => %lld",++nstat,count_branch_predict);
xlog(2,"[%d] # branch direction => %lld",++nstat,count_branch_direction);
xlog(2,"[%d] nanoseconds in cache => %lld",++nstat,time_cache);
xlog(2,"[%d] # load start => %lld",++nstat,count_cache_load_start);
xlog(2,"[%d] # load no mshr => %lld",++nstat,count_cache_no_mshr);
xlog(2,"[%d] # load continue => %lld",++nstat,count_cache_load_continue);
xlog(2,"[%d] # load hit in l1 => %lld",++nstat,count_cache_load_hit_l1);
xlog(2,"[%d] # load hit in l2 => %lld",++nstat,count_cache_load_hit_l2);
xlog(2,"[%d] # load from memory => %lld",++nstat,count_cache_load_memory);
xlog(2,"[%d] # load removed => %lld",++nstat,count_cache_load_removed);
xlog(2,"[%d] # store start => %lld",++nstat,count_cache_store_start);
xlog(2,"[%d] # speculative stores => %lld",++nstat,count_cache_store_spec);
xlog(2,"[%d] # store no wbuf => %lld",++nstat,count_cache_no_wbuf);
xlog(2,"[%d] # speculaitve store no wbuf => %lld",++nstat,count_cache_no_wbuf_spec);
xlog(2,"[%d] # store commit => %lld",++nstat,count_cache_store_commit);
xlog(2,"[%d] # store commit fail => %lld",++nstat,count_cache_store_commit_fail);
xlog(2,"[%d] # store rollback => %lld",++nstat,count_cache_store_rollback);
xlog(2,"[%d] # mem test failed => %lld",++nstat,count_cache_segfault);
xlog(2,"[%d] # cache flush => %lld",++nstat,count_cache_flush);
#endif
xstats();
exit(0);
}