1 /*
2 * Copyright 2007, François Revol, revol@free.fr.
3 * Distributed under the terms of the MIT License.
4 *
5 * Copyright 2005, Axel Dörfler, axeld@pinc-softare.de
6 * Distributed under the terms of the MIT License.
7 */
8
9
10 #include <debugger.h>
11 #include <int.h>
12 #include <thread.h>
13 #include <arch/user_debugger.h>
14
15
16 #warning M68K: WRITEME
17 void
arch_clear_team_debug_info(struct arch_team_debug_info * info)18 arch_clear_team_debug_info(struct arch_team_debug_info *info)
19 {
20 }
21
22
23 void
arch_destroy_team_debug_info(struct arch_team_debug_info * info)24 arch_destroy_team_debug_info(struct arch_team_debug_info *info)
25 {
26 arch_clear_team_debug_info(info);
27 }
28
29
30 void
arch_clear_thread_debug_info(struct arch_thread_debug_info * info)31 arch_clear_thread_debug_info(struct arch_thread_debug_info *info)
32 {
33 }
34
35
36 void
arch_destroy_thread_debug_info(struct arch_thread_debug_info * info)37 arch_destroy_thread_debug_info(struct arch_thread_debug_info *info)
38 {
39 arch_clear_thread_debug_info(info);
40 }
41
42
43 void
arch_update_thread_single_step()44 arch_update_thread_single_step()
45 {
46 if (struct iframe* frame = m68k_get_user_iframe()) {
47 Thread* thread = thread_get_current_thread();
48
49 // set/clear T1 in SR depending on if single stepping is desired
50 // T1 T0
51 // 0 0 no tracing
52 // 0 1 trace on flow
53 // 1 0 single step
54 // 1 1 undef
55 // note 060 and 020(?) only have T1 bit,
56 // but this should be compatible as well.
57 if (thread->debug_info.flags & B_THREAD_DEBUG_SINGLE_STEP) {
58 frame->cpu.sr &= ~(M68K_SR_T_MASK);
59 frame->cpu.sr |= (1 << M68K_SR_T1);
60 } else {
61 frame->cpu.sr &= ~(M68K_SR_T_MASK);
62 }
63 }
64 }
65
66
67 void
arch_set_debug_cpu_state(const debug_cpu_state * cpuState)68 arch_set_debug_cpu_state(const debug_cpu_state *cpuState)
69 {
70 }
71
72
73 void
arch_get_debug_cpu_state(debug_cpu_state * cpuState)74 arch_get_debug_cpu_state(debug_cpu_state *cpuState)
75 {
76 }
77
78
79 status_t
arch_get_thread_debug_cpu_state(Thread * thread,debug_cpu_state * cpuState)80 arch_get_thread_debug_cpu_state(Thread* thread, debug_cpu_state* cpuState)
81 {
82 return B_UNSUPPORTED;
83 }
84
85
86 status_t
arch_set_breakpoint(void * address)87 arch_set_breakpoint(void *address)
88 {
89 return B_ERROR;
90 }
91
92
93 status_t
arch_clear_breakpoint(void * address)94 arch_clear_breakpoint(void *address)
95 {
96 return B_ERROR;
97 }
98
99
100 status_t
arch_set_watchpoint(void * address,uint32 type,int32 length)101 arch_set_watchpoint(void *address, uint32 type, int32 length)
102 {
103 return B_ERROR;
104 }
105
106
107 status_t
arch_clear_watchpoint(void * address)108 arch_clear_watchpoint(void *address)
109 {
110 return B_ERROR;
111 }
112
113 bool
arch_has_breakpoints(struct arch_team_debug_info * info)114 arch_has_breakpoints(struct arch_team_debug_info *info)
115 {
116 return false;
117 }
118