// -*- c++ -*-
//
// cpu.h:
//
#ifndef	CPU_H
#define	CPU_H

#include "sim.h"
#include "mips.h"
#include "memory.h"

class cpu {
    mips    *machdep;		// machine dependent routines
    memory  *mem;		// main memory
    cache   *icache;		// Inst cache
    cache   *dcache;		// Data cache

    sim_time	cycle_time;	// elapsed cycles

public:
    cpu();
    ~cpu();

    void connect_memory(memory *mem);
    void connect_icache(cache *icache);
    void connect_dcache(cache *dcache);

    void execute(sim_addr init_pc, sim_addr init_sp);
};

#endif
// end of cpu.h