1c085f386SAlexander von Gluck IV/*
2c085f386SAlexander von Gluck IV * Copyright 2019, Haiku, Inc. All rights reserved.
3c085f386SAlexander von Gluck IV * Distributed under the terms of the MIT License.
4c085f386SAlexander von Gluck IV *
5c085f386SAlexander von Gluck IV * Authors:
6c085f386SAlexander von Gluck IV * 		Adrien Destugues <pulkomandy@pulkomandy.tk>
7c085f386SAlexander von Gluck IV */
8c085f386SAlexander von Gluck IV
9c085f386SAlexander von Gluck IV
10c085f386SAlexander von Gluck IV#include <arch/debug.h>
11c085f386SAlexander von Gluck IV
12c085f386SAlexander von Gluck IV
13c085f386SAlexander von Gluck IVvoid
14c085f386SAlexander von Gluck IVarch_debug_stack_trace(void)
15c085f386SAlexander von Gluck IV{
16c085f386SAlexander von Gluck IV}
17c085f386SAlexander von Gluck IV
18c085f386SAlexander von Gluck IV
19c085f386SAlexander von Gluck IVbool
20c085f386SAlexander von Gluck IVarch_debug_contains_call(Thread *thread, const char *symbol,
21c085f386SAlexander von Gluck IV	addr_t start, addr_t end)
22c085f386SAlexander von Gluck IV{
23c085f386SAlexander von Gluck IV	return false;
24c085f386SAlexander von Gluck IV}
25c085f386SAlexander von Gluck IV
26c085f386SAlexander von Gluck IV
27c085f386SAlexander von Gluck IVvoid *
28c085f386SAlexander von Gluck IVarch_debug_get_caller(void)
29c085f386SAlexander von Gluck IV{
30c085f386SAlexander von Gluck IV	return NULL;
31c085f386SAlexander von Gluck IV}
32c085f386SAlexander von Gluck IV
33c085f386SAlexander von Gluck IV
34c085f386SAlexander von Gluck IVvoid
35c085f386SAlexander von Gluck IVarch_debug_save_registers(struct arch_debug_registers* registers)
36c085f386SAlexander von Gluck IV{
37c085f386SAlexander von Gluck IV}
38c085f386SAlexander von Gluck IV
39c085f386SAlexander von Gluck IV
40c085f386SAlexander von Gluck IVvoid
41c085f386SAlexander von Gluck IVarch_debug_call_with_fault_handler(cpu_ent* cpu, jmp_buf jumpBuffer,
42c085f386SAlexander von Gluck IV	void (*function)(void*), void* parameter)
43c085f386SAlexander von Gluck IV{
44c085f386SAlexander von Gluck IV}
45c085f386SAlexander von Gluck IV
46c085f386SAlexander von Gluck IV
47c085f386SAlexander von Gluck IVbool
48c085f386SAlexander von Gluck IVarch_is_debug_variable_defined(const char* variableName)
49c085f386SAlexander von Gluck IV{
50c085f386SAlexander von Gluck IV	// TODO: Implement!
51c085f386SAlexander von Gluck IV	return false;
52c085f386SAlexander von Gluck IV}
53c085f386SAlexander von Gluck IV
54c085f386SAlexander von Gluck IV
55c085f386SAlexander von Gluck IVstatus_t
56c085f386SAlexander von Gluck IVarch_set_debug_variable(const char* variableName, uint64 value)
57c085f386SAlexander von Gluck IV{
58c085f386SAlexander von Gluck IV	// TODO: Implement!
59c085f386SAlexander von Gluck IV	return B_ENTRY_NOT_FOUND;
60c085f386SAlexander von Gluck IV}
61c085f386SAlexander von Gluck IV
62c085f386SAlexander von Gluck IV
63c085f386SAlexander von Gluck IVstatus_t
64c085f386SAlexander von Gluck IVarch_get_debug_variable(const char* variableName, uint64* value)
65c085f386SAlexander von Gluck IV{
66c085f386SAlexander von Gluck IV	// TODO: Implement!
67c085f386SAlexander von Gluck IV	return B_ENTRY_NOT_FOUND;
68c085f386SAlexander von Gluck IV}
69c085f386SAlexander von Gluck IV
70c085f386SAlexander von Gluck IV
71c085f386SAlexander von Gluck IVint32
72c085f386SAlexander von Gluck IVarch_debug_get_stack_trace(addr_t* returnAddresses, int32 maxCount,
73c085f386SAlexander von Gluck IV	int32 skipIframes, int32 skipFrames, uint32 flags)
74c085f386SAlexander von Gluck IV{
75c085f386SAlexander von Gluck IV	return 0;
76c085f386SAlexander von Gluck IV}
77c085f386SAlexander von Gluck IV
78c085f386SAlexander von Gluck IV
79c085f386SAlexander von Gluck IVssize_t
80c085f386SAlexander von Gluck IVarch_debug_gdb_get_registers(char* buffer, size_t bufferSize)
81c085f386SAlexander von Gluck IV{
82c085f386SAlexander von Gluck IV	// TODO: Implement!
83c085f386SAlexander von Gluck IV	return B_NOT_SUPPORTED;
84c085f386SAlexander von Gluck IV}
85c085f386SAlexander von Gluck IV
86c085f386SAlexander von Gluck IV
87c085f386SAlexander von Gluck IVvoid*
88c085f386SAlexander von Gluck IVarch_debug_get_interrupt_pc(bool* _isSyscall)
89c085f386SAlexander von Gluck IV{
90c085f386SAlexander von Gluck IV	// TODO: Implement!
91c085f386SAlexander von Gluck IV	return NULL;
92c085f386SAlexander von Gluck IV}
93c085f386SAlexander von Gluck IV
94c085f386SAlexander von Gluck IV
95c085f386SAlexander von Gluck IVstatus_t
96c085f386SAlexander von Gluck IVarch_debug_init(kernel_args *args)
97c085f386SAlexander von Gluck IV{
98c085f386SAlexander von Gluck IV#if 0
99c085f386SAlexander von Gluck IV	add_debugger_command("where", &stack_trace, "Same as \"sc\"");
100c085f386SAlexander von Gluck IV	add_debugger_command("bt", &stack_trace, "Same as \"sc\" (as in gdb)");
101c085f386SAlexander von Gluck IV	add_debugger_command("sc", &stack_trace, "Stack crawl for current thread");
102c085f386SAlexander von Gluck IV#endif
103c085f386SAlexander von Gluck IV
104c085f386SAlexander von Gluck IV	return B_NO_ERROR;
105c085f386SAlexander von Gluck IV}
106c085f386SAlexander von Gluck IV
107