| /* |
| * Copyright (c) 2015 Wind River Systems, Inc. |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #ifndef __MISC_DEBUG_GDB_SERVER__H_ |
| #define __MISC_DEBUG_GDB_SERVER__H_ |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /* define */ |
| |
| #define GDB_STOP_CHAR 0x3 /* GDB RSP default value */ |
| |
| #define NOT_DEBUGGING 0 |
| #define DEBUGGING 1 |
| #define STOP_RUNNING 2 |
| #define SINGLE_STEP 3 |
| |
| #ifndef _ASMLANGUAGE |
| |
| enum gdb_error_code { |
| GDB_ERROR_BP_LIST_FULL = 1, /* Reach max number of Hard&Soft BPs */ |
| GDB_ERROR_INVALID_BP, /* No such BP in breakpoints list */ |
| GDB_ERROR_HW_BP_INVALID_TYPE, /* Unsupported type/len combination */ |
| GDB_ERROR_HW_BP_DBG_REGS_FULL, /* Debug register set full */ |
| GDB_ERROR_HW_BP_NOT_SUP, /* hardware breakpoint not supported */ |
| GDB_ERROR_INVALID_MEM /* trying to access invalid memory */ |
| }; |
| |
| enum gdb_bp_type { |
| GDB_SOFT_BP, /* software breakpoint */ |
| GDB_HW_INST_BP, /* hardware instruction breakpoint */ |
| GDB_HW_DATA_WRITE_BP, /* write watchpoint */ |
| GDB_HW_DATA_READ_BP, /* read watchpoint */ |
| GDB_HW_DATA_ACCESS_BP, /* access watchpoint */ |
| GDB_UNKNOWN_BP_TYPE = -1 /* unknown breakpoint type */ |
| }; |
| |
| enum gdb_exc_mode { |
| GDB_EXC_TRACE, /* trace exception */ |
| GDB_EXC_BP, /* breakpoint exception */ |
| GDB_EXC_OTHER, /* other exceptions */ |
| }; |
| |
| enum gdb_signal { |
| GDB_SIG_NULL = -1, |
| GDB_SIG_INT = 2, |
| GDB_SIG_TRAP = 5, |
| GDB_SIG_FPE = 8, |
| GDB_SIG_SIGSEGV = 11, |
| GDB_SIG_STOP = 17 |
| }; |
| |
| extern volatile int gdb_debug_status; |
| |
| extern void gdb_system_stop_here(void *regs); |
| extern void gdb_handler(enum gdb_exc_mode mode, void *esf, int signal); |
| |
| #endif /* _ASMLANGUAGE */ |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| #endif /* __MISC_DEBUG_GDB_SERVER__H_*/ |