📄 main.c
字号:
#include "gdbcpu32.h"
#include "gdbints.h"
#include "gdb.h"
#include "cfg.h"
int main(void);
void unhandled_interrupt_handler(void);
void ISR_PREFIX(unhandled_interrupt_handler)(void);
ISR_ASSEMBLY_WRAPPER(unhandled_interrupt_handler);
void unhandled_interrupt_handler(void)
{
for (;;)
{
;
}
}
#define UNHANDLED_INTERRUPT_HANDLER ISR_PREFIX(unhandled_interrupt_handler)
typedef void (*PFV)(void); /* pointer to function returning void */
const PFV vector_table[] /*__attribute__((section(".vect")))*/ =
{
UNHANDLED_INTERRUPT_HANDLER, /* 0 initial stack pointer */
UNHANDLED_INTERRUPT_HANDLER, /* 1 initial program counter */
UNHANDLED_INTERRUPT_HANDLER, /* 2 access fault */
UNHANDLED_INTERRUPT_HANDLER, /* 3 address error */
UNHANDLED_INTERRUPT_HANDLER, /* 4 illegal instruction */
UNHANDLED_INTERRUPT_HANDLER, /* 5 integer divide by zero */
UNHANDLED_INTERRUPT_HANDLER, /* 6 CHK, CHK2 instructin */
UNHANDLED_INTERRUPT_HANDLER, /* 7 FTRAPcc, TRAPcc, TRAPV Instructions */
UNHANDLED_INTERRUPT_HANDLER, /* 8 Privelege Violation */
gdb_interrupt_handler, /* 9 Trace */
UNHANDLED_INTERRUPT_HANDLER, /* 10 Line 1010 emulator */
UNHANDLED_INTERRUPT_HANDLER, /* 11 Line 1111 emulator */
UNHANDLED_INTERRUPT_HANDLER, /* 12 unassigned, reserved */
UNHANDLED_INTERRUPT_HANDLER, /* 13 coprocessor protocol violation */
UNHANDLED_INTERRUPT_HANDLER, /* 14 Format error */
UNHANDLED_INTERRUPT_HANDLER, /* 15 uninitialized interrupt */
UNHANDLED_INTERRUPT_HANDLER, /* 16 unassigned, reserved */
UNHANDLED_INTERRUPT_HANDLER, /* 17 unassigned, reserved */
UNHANDLED_INTERRUPT_HANDLER, /* 18 unassigned, reserved */
UNHANDLED_INTERRUPT_HANDLER, /* 19 unassigned, reserved */
UNHANDLED_INTERRUPT_HANDLER, /* 20 unassigned, reserved */
UNHANDLED_INTERRUPT_HANDLER, /* 21 unassigned, reserved */
UNHANDLED_INTERRUPT_HANDLER, /* 22 unassigned, reserved */
UNHANDLED_INTERRUPT_HANDLER, /* 23 unassigned, reserved */
UNHANDLED_INTERRUPT_HANDLER, /* 24 spurious interrupt */
UNHANDLED_INTERRUPT_HANDLER, /* 25 Level 1 interrupt autovector */
UNHANDLED_INTERRUPT_HANDLER, /* 26 Level 2 interrupt autovector */
UNHANDLED_INTERRUPT_HANDLER, /* 27 Level 3 interrupt autovector */
UNHANDLED_INTERRUPT_HANDLER, /* 28 Level 4 interrupt autovector */
UNHANDLED_INTERRUPT_HANDLER, /* 29 Level 5 interrupt autovector */
UNHANDLED_INTERRUPT_HANDLER, /* 30 Level 6 interrupt autovector */
UNHANDLED_INTERRUPT_HANDLER, /* 31 Level 7 interrupt autovector */
gdb_interrupt_handler, /* 32 Trap 0 instruction vector */
gdb_interrupt_handler, /* 33 Trap 1 instruction vector */
UNHANDLED_INTERRUPT_HANDLER, /* 34 Trap 2 instruction vector */
UNHANDLED_INTERRUPT_HANDLER, /* 35 Trap 3 instruction vector */
UNHANDLED_INTERRUPT_HANDLER, /* 36 Trap 4 instruction vector */
UNHANDLED_INTERRUPT_HANDLER, /* 37 Trap 5 instruction vector */
UNHANDLED_INTERRUPT_HANDLER, /* 38 Trap 6 instruction vector */
UNHANDLED_INTERRUPT_HANDLER, /* 39 Trap 7 instruction vector */
UNHANDLED_INTERRUPT_HANDLER, /* 40 Trap 8 instruction vector */
UNHANDLED_INTERRUPT_HANDLER, /* 41 Trap 9 instruction vector */
UNHANDLED_INTERRUPT_HANDLER, /* 42 Trap 10 instruction vector */
UNHANDLED_INTERRUPT_HANDLER, /* 43 Trap 11 instruction vector */
UNHANDLED_INTERRUPT_HANDLER, /* 44 Trap 12 instruction vector */
UNHANDLED_INTERRUPT_HANDLER, /* 45 Trap 13 instruction vector */
UNHANDLED_INTERRUPT_HANDLER, /* 46 Trap 14 instruction vector */
UNHANDLED_INTERRUPT_HANDLER, /* 47 Trap 15 instruction vector */
UNHANDLED_INTERRUPT_HANDLER, /* 48 FP Branch of Set on Unordered */
UNHANDLED_INTERRUPT_HANDLER, /* 49 FP Inexact Result */
UNHANDLED_INTERRUPT_HANDLER, /* 50 FP Divide by Zero */
UNHANDLED_INTERRUPT_HANDLER, /* 51 FP Underflow */
UNHANDLED_INTERRUPT_HANDLER, /* 52 FP Operand Error */
UNHANDLED_INTERRUPT_HANDLER, /* 53 FP Overflow */
UNHANDLED_INTERRUPT_HANDLER, /* 54 Signaling NaN */
UNHANDLED_INTERRUPT_HANDLER, /* 55 FP unimplemented data type */
UNHANDLED_INTERRUPT_HANDLER, /* 56 MMU configuration error */
UNHANDLED_INTERRUPT_HANDLER, /* 57 MMU ilegal operation error */
UNHANDLED_INTERRUPT_HANDLER, /* 58 MMU access level violation error */
UNHANDLED_INTERRUPT_HANDLER, /* 59 unassigned, reserved */
UNHANDLED_INTERRUPT_HANDLER, /* 60 unassigned, reserved */
UNHANDLED_INTERRUPT_HANDLER, /* 61 unassigned, reserved */
UNHANDLED_INTERRUPT_HANDLER, /* 62 unassigned, reserved */
UNHANDLED_INTERRUPT_HANDLER, /* 63 unassigned, reserved */
UNHANDLED_INTERRUPT_HANDLER, /* 64 */
UNHANDLED_INTERRUPT_HANDLER, /* 65 */
UNHANDLED_INTERRUPT_HANDLER, /* 66 */
UNHANDLED_INTERRUPT_HANDLER, /* 67 */
UNHANDLED_INTERRUPT_HANDLER, /* 68 */
UNHANDLED_INTERRUPT_HANDLER, /* 69 */
UNHANDLED_INTERRUPT_HANDLER, /* 70 */
UNHANDLED_INTERRUPT_HANDLER, /* 71 */
UNHANDLED_INTERRUPT_HANDLER, /* 72 */
UNHANDLED_INTERRUPT_HANDLER, /* 73 */
UNHANDLED_INTERRUPT_HANDLER, /* 74 */
UNHANDLED_INTERRUPT_HANDLER, /* 75 */
UNHANDLED_INTERRUPT_HANDLER, /* 76 */
UNHANDLED_INTERRUPT_HANDLER, /* 77 */
UNHANDLED_INTERRUPT_HANDLER, /* 78 */
UNHANDLED_INTERRUPT_HANDLER, /* 79 */
/* TPU interrupt handlers below */
UNHANDLED_INTERRUPT_HANDLER, /* 80 */
UNHANDLED_INTERRUPT_HANDLER, /* 81 */
UNHANDLED_INTERRUPT_HANDLER, /* 82 */
UNHANDLED_INTERRUPT_HANDLER, /* 83 */
UNHANDLED_INTERRUPT_HANDLER, /* 84 */
UNHANDLED_INTERRUPT_HANDLER, /* 85 */
UNHANDLED_INTERRUPT_HANDLER, /* 86 */
UNHANDLED_INTERRUPT_HANDLER, /* 87 */
UNHANDLED_INTERRUPT_HANDLER, /* 88 */
UNHANDLED_INTERRUPT_HANDLER, /* 89 */
UNHANDLED_INTERRUPT_HANDLER, /* 90 */
UNHANDLED_INTERRUPT_HANDLER, /* 91 */
UNHANDLED_INTERRUPT_HANDLER, /* 92 */
UNHANDLED_INTERRUPT_HANDLER, /* 93 */
UNHANDLED_INTERRUPT_HANDLER, /* 94 */
UNHANDLED_INTERRUPT_HANDLER, /* 95 */
/* TPU interrupt handlers above */
UNHANDLED_INTERRUPT_HANDLER, /* 96 */
UNHANDLED_INTERRUPT_HANDLER, /* 97 */
UNHANDLED_INTERRUPT_HANDLER, /* 98 */
UNHANDLED_INTERRUPT_HANDLER, /* 99 */
UNHANDLED_INTERRUPT_HANDLER, /* 100 */
UNHANDLED_INTERRUPT_HANDLER, /* 101 */
UNHANDLED_INTERRUPT_HANDLER, /* 102 */
UNHANDLED_INTERRUPT_HANDLER, /* 103 */
UNHANDLED_INTERRUPT_HANDLER, /* 104 */
UNHANDLED_INTERRUPT_HANDLER, /* 105 */
UNHANDLED_INTERRUPT_HANDLER, /* 106 */
UNHANDLED_INTERRUPT_HANDLER, /* 107 */
UNHANDLED_INTERRUPT_HANDLER, /* 108 */
UNHANDLED_INTERRUPT_HANDLER, /* 109 */
UNHANDLED_INTERRUPT_HANDLER, /* 110 */
UNHANDLED_INTERRUPT_HANDLER, /* 111 */
UNHANDLED_INTERRUPT_HANDLER, /* 112 */
UNHANDLED_INTERRUPT_HANDLER, /* 113 */
UNHANDLED_INTERRUPT_HANDLER, /* 114 */
UNHANDLED_INTERRUPT_HANDLER, /* 115 */
UNHANDLED_INTERRUPT_HANDLER, /* 116 */
UNHANDLED_INTERRUPT_HANDLER, /* 117 */
UNHANDLED_INTERRUPT_HANDLER, /* 118 */
UNHANDLED_INTERRUPT_HANDLER, /* 119 */
UNHANDLED_INTERRUPT_HANDLER, /* 120 */
UNHANDLED_INTERRUPT_HANDLER, /* 121 */
UNHANDLED_INTERRUPT_HANDLER, /* 122 */
UNHANDLED_INTERRUPT_HANDLER, /* 123 */
UNHANDLED_INTERRUPT_HANDLER, /* 124 */
UNHANDLED_INTERRUPT_HANDLER, /* 125 */
UNHANDLED_INTERRUPT_HANDLER, /* 126 */
UNHANDLED_INTERRUPT_HANDLER, /* 127 */
UNHANDLED_INTERRUPT_HANDLER, /* 128 */
UNHANDLED_INTERRUPT_HANDLER, /* 129 */
UNHANDLED_INTERRUPT_HANDLER, /* 130 */
UNHANDLED_INTERRUPT_HANDLER, /* 131 */
UNHANDLED_INTERRUPT_HANDLER, /* 132 */
UNHANDLED_INTERRUPT_HANDLER, /* 133 */
UNHANDLED_INTERRUPT_HANDLER, /* 134 */
UNHANDLED_INTERRUPT_HANDLER, /* 135 */
UNHANDLED_INTERRUPT_HANDLER, /* 136 */
UNHANDLED_INTERRUPT_HANDLER, /* 137 */
UNHANDLED_INTERRUPT_HANDLER, /* 138 */
UNHANDLED_INTERRUPT_HANDLER, /* 139 */
UNHANDLED_INTERRUPT_HANDLER, /* 140 */
UNHANDLED_INTERRUPT_HANDLER, /* 141 */
UNHANDLED_INTERRUPT_HANDLER, /* 142 */
UNHANDLED_INTERRUPT_HANDLER, /* 143 */
UNHANDLED_INTERRUPT_HANDLER, /* 144 */
UNHANDLED_INTERRUPT_HANDLER, /* 145 */
UNHANDLED_INTERRUPT_HANDLER, /* 146 */
UNHANDLED_INTERRUPT_HANDLER, /* 147 */
UNHANDLED_INTERRUPT_HANDLER, /* 148 */
UNHANDLED_INTERRUPT_HANDLER, /* 149 */
UNHANDLED_INTERRUPT_HANDLER, /* 150 */
UNHANDLED_INTERRUPT_HANDLER, /* 151 */
UNHANDLED_INTERRUPT_HANDLER, /* 152 */
UNHANDLED_INTERRUPT_HANDLER, /* 153 */
UNHANDLED_INTERRUPT_HANDLER, /* 154 */
UNHANDLED_INTERRUPT_HANDLER, /* 155 */
UNHANDLED_INTERRUPT_HANDLER, /* 156 */
UNHANDLED_INTERRUPT_HANDLER, /* 157 */
UNHANDLED_INTERRUPT_HANDLER, /* 158 */
UNHANDLED_INTERRUPT_HANDLER, /* 159 */
UNHANDLED_INTERRUPT_HANDLER, /* 160 */
UNHANDLED_INTERRUPT_HANDLER, /* 161 */
UNHANDLED_INTERRUPT_HANDLER, /* 162 */
UNHANDLED_INTERRUPT_HANDLER, /* 163 */
UNHANDLED_INTERRUPT_HANDLER, /* 164 */
UNHANDLED_INTERRUPT_HANDLER, /* 165 */
UNHANDLED_INTERRUPT_HANDLER, /* 166 */
UNHANDLED_INTERRUPT_HANDLER, /* 167 */
UNHANDLED_INTERRUPT_HANDLER, /* 168 */
UNHANDLED_INTERRUPT_HANDLER, /* 169 */
UNHANDLED_INTERRUPT_HANDLER, /* 170 */
UNHANDLED_INTERRUPT_HANDLER, /* 171 */
UNHANDLED_INTERRUPT_HANDLER, /* 172 */
UNHANDLED_INTERRUPT_HANDLER, /* 173 */
UNHANDLED_INTERRUPT_HANDLER, /* 174 */
UNHANDLED_INTERRUPT_HANDLER, /* 175 */
UNHANDLED_INTERRUPT_HANDLER, /* 176 */
UNHANDLED_INTERRUPT_HANDLER, /* 177 */
UNHANDLED_INTERRUPT_HANDLER, /* 178 */
UNHANDLED_INTERRUPT_HANDLER, /* 179 */
UNHANDLED_INTERRUPT_HANDLER, /* 180 */
UNHANDLED_INTERRUPT_HANDLER, /* 181 */
UNHANDLED_INTERRUPT_HANDLER, /* 182 */
UNHANDLED_INTERRUPT_HANDLER, /* 183 */
UNHANDLED_INTERRUPT_HANDLER, /* 184 */
UNHANDLED_INTERRUPT_HANDLER, /* 185 */
UNHANDLED_INTERRUPT_HANDLER, /* 186 */
UNHANDLED_INTERRUPT_HANDLER, /* 187 */
UNHANDLED_INTERRUPT_HANDLER, /* 188 */
UNHANDLED_INTERRUPT_HANDLER, /* 189 */
UNHANDLED_INTERRUPT_HANDLER, /* 190 */
UNHANDLED_INTERRUPT_HANDLER, /* 191 */
UNHANDLED_INTERRUPT_HANDLER, /* 192 */
UNHANDLED_INTERRUPT_HANDLER, /* 193 */
UNHANDLED_INTERRUPT_HANDLER, /* 194 */
UNHANDLED_INTERRUPT_HANDLER, /* 195 */
UNHANDLED_INTERRUPT_HANDLER, /* 196 */
UNHANDLED_INTERRUPT_HANDLER, /* 197 */
UNHANDLED_INTERRUPT_HANDLER, /* 198 */
UNHANDLED_INTERRUPT_HANDLER, /* 199 */
UNHANDLED_INTERRUPT_HANDLER, /* 200 */
UNHANDLED_INTERRUPT_HANDLER, /* 201 */
UNHANDLED_INTERRUPT_HANDLER, /* 202 */
UNHANDLED_INTERRUPT_HANDLER, /* 203 */
UNHANDLED_INTERRUPT_HANDLER, /* 204 */
UNHANDLED_INTERRUPT_HANDLER, /* 205 */
UNHANDLED_INTERRUPT_HANDLER, /* 206 */
UNHANDLED_INTERRUPT_HANDLER, /* 207 */
UNHANDLED_INTERRUPT_HANDLER, /* 208 */
UNHANDLED_INTERRUPT_HANDLER, /* 209 */
UNHANDLED_INTERRUPT_HANDLER, /* 210 */
UNHANDLED_INTERRUPT_HANDLER, /* 211 */
UNHANDLED_INTERRUPT_HANDLER, /* 212 */
UNHANDLED_INTERRUPT_HANDLER, /* 213 */
UNHANDLED_INTERRUPT_HANDLER, /* 214 */
UNHANDLED_INTERRUPT_HANDLER, /* 215 */
UNHANDLED_INTERRUPT_HANDLER, /* 216 */
UNHANDLED_INTERRUPT_HANDLER, /* 217 */
UNHANDLED_INTERRUPT_HANDLER, /* 218 */
UNHANDLED_INTERRUPT_HANDLER, /* 219 */
UNHANDLED_INTERRUPT_HANDLER, /* 220 */
UNHANDLED_INTERRUPT_HANDLER, /* 221 */
UNHANDLED_INTERRUPT_HANDLER, /* 222 */
UNHANDLED_INTERRUPT_HANDLER, /* 223 */
UNHANDLED_INTERRUPT_HANDLER, /* 224 */
UNHANDLED_INTERRUPT_HANDLER, /* 225 */
UNHANDLED_INTERRUPT_HANDLER, /* 226 */
UNHANDLED_INTERRUPT_HANDLER, /* 227 */
UNHANDLED_INTERRUPT_HANDLER, /* 228 */
UNHANDLED_INTERRUPT_HANDLER, /* 229 */
UNHANDLED_INTERRUPT_HANDLER, /* 230 */
UNHANDLED_INTERRUPT_HANDLER, /* 231 */
UNHANDLED_INTERRUPT_HANDLER, /* 232 */
UNHANDLED_INTERRUPT_HANDLER, /* 233 */
UNHANDLED_INTERRUPT_HANDLER, /* 234 */
UNHANDLED_INTERRUPT_HANDLER, /* 235 */
UNHANDLED_INTERRUPT_HANDLER, /* 236 */
UNHANDLED_INTERRUPT_HANDLER, /* 237 */
UNHANDLED_INTERRUPT_HANDLER, /* 238 */
UNHANDLED_INTERRUPT_HANDLER, /* 239 */
UNHANDLED_INTERRUPT_HANDLER, /* 240 */
UNHANDLED_INTERRUPT_HANDLER, /* 241 */
UNHANDLED_INTERRUPT_HANDLER, /* 242 */
UNHANDLED_INTERRUPT_HANDLER, /* 243 */
UNHANDLED_INTERRUPT_HANDLER, /* 244 */
UNHANDLED_INTERRUPT_HANDLER, /* 245 */
UNHANDLED_INTERRUPT_HANDLER, /* 246 */
UNHANDLED_INTERRUPT_HANDLER, /* 24i7 */
UNHANDLED_INTERRUPT_HANDLER, /* 248 */
UNHANDLED_INTERRUPT_HANDLER, /* 249 */
UNHANDLED_INTERRUPT_HANDLER, /* 250 */
UNHANDLED_INTERRUPT_HANDLER, /* 251 */
UNHANDLED_INTERRUPT_HANDLER, /* 252 */
UNHANDLED_INTERRUPT_HANDLER, /* 253 */
UNHANDLED_INTERRUPT_HANDLER, /* 254 */
UNHANDLED_INTERRUPT_HANDLER, /* 255 */
};
void FinishHardwareInit(void)
{
int i;
init_gdb_serio(BAUD_RATE);
// gdb_cout("Hello, world!\n");
for (i=0;i<256;i++)
{
exceptionHandler(i,vector_table[i]); /* Write all vectors to *VBR (zero) */
}
}
int main(void)
{
FinishHardwareInit();
while (1)
{
/* simple startup code that just forces us
to give control to the debugging stub */
COMPILED_IN_BREAKPOINT; /* Causes control to be passed to GDB stub */
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -