1 //
2 // Copyright (c) 2010-2024 Antmicro
3 //
4 // This file is licensed under the MIT License.
5 // Full license text is available in 'licenses/MIT.txt'.
6 //
7 
8 #ifndef Cpu_H
9 #define Cpu_H
10 
11 #include <vector>
12 #include "gpio-receiver.h"
13 #include "can-halt.h"
14 #include "has-clk.h"
15 #include "peripheral.h"
16 
17 class CPU : public Peripheral, public GPIOReceiver, public CanHalt, public HasCLk
18 {
19 };
20 
21 class DebuggableCPU : public CPU
22 {
23 public:
24     class DebugProgram
25     {
26     public:
27         uint64_t address;
28         uint64_t readCount;
29         std::vector<uint64_t> memory;
30     };
31     virtual void debugRequest(bool value) = 0;
32     virtual DebugProgram getRegisterGetProgram(uint64_t id) = 0;
33     virtual DebugProgram getRegisterSetProgram(uint64_t id, uint64_t value) = 0;
34     virtual DebugProgram getEnterSingleStepModeProgram() = 0;
35     virtual DebugProgram getExitSingleStepModeProgram() = 0;
36     virtual DebugProgram getSingleStepModeProgram() = 0;
37 };
38 
39 #endif
40