Reorganized directory structure
[riscv-isa-sim.git] / riscv / processor.h
1 #ifndef _RISCV_PROCESSOR_H
2 #define _RISCV_PROCESSOR_H
3
4 #include <cstring>
5 #include "decode.h"
6 #include "trap.h"
7 #include "mmu.h"
8
9 class processor_t
10 {
11 public:
12 processor_t(int _id, char* _mem, size_t _memsz);
13 void step(size_t n, bool noisy);
14
15 private:
16 // architected state
17 reg_t R[NGPR];
18 reg_t pc;
19 reg_t epc;
20 reg_t badvaddr;
21 reg_t ebase;
22 uint32_t id;
23 uint32_t sr;
24 int gprlen;
25
26 // shared memory
27 mmu_t mmu;
28
29 // counters
30 reg_t counters[32];
31
32 // functions
33 void set_sr(uint32_t val);
34 void take_trap(trap_t t);
35 void disasm(insn_t insn, reg_t pc);
36
37 friend class sim_t;
38 };
39
40 #endif