xref: /haiku/headers/private/debugger/arch/CpuState.h (revision ed24eb5ff12640d052171c6a7feba37fab8a75d1)
1 /*
2  * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
3  * Copyright 2011, Rene Gollent, rene@gollent.com.
4  * Distributed under the terms of the MIT License.
5  */
6 #ifndef CPU_STATE_H
7 #define CPU_STATE_H
8 
9 #include <OS.h>
10 
11 #include <Referenceable.h>
12 #include <Variant.h>
13 
14 #include "Types.h"
15 
16 
17 class Register;
18 
19 
20 class CpuState : public BReferenceable {
21 public:
22 	virtual						~CpuState();
23 
24 	virtual	status_t			Clone(CpuState*& _clone) const = 0;
25 
26 	virtual	status_t			UpdateDebugState(void* state, size_t size)
27 									const = 0;
28 
29 	virtual	target_addr_t		InstructionPointer() const = 0;
30 	virtual	void				SetInstructionPointer(
31 									target_addr_t address) = 0;
32 
33 	virtual target_addr_t		StackFramePointer() const = 0;
34 	virtual target_addr_t		StackPointer() const = 0;
35 	virtual	bool				GetRegisterValue(const Register* reg,
36 									BVariant& _value) const = 0;
37 	virtual	bool				SetRegisterValue(const Register* reg,
38 									const BVariant& value) = 0;
39 
40 };
41 
42 
43 #endif	// CPU_STATE_H
44