From f13cb93028c41475c6652729a321acd6f149741d Mon Sep 17 00:00:00 2001 From: Tat-Chee Wan (USM) Date: Mon, 28 Mar 2011 10:48:44 +0800 Subject: split out internal constants from debug_stub.h --- Debugger/debug_comm.S | 1 + Debugger/debug_internals.h | 270 +++++++++++++++++++++++++++++++++++++++++++++ Debugger/debug_stub.S | 3 +- Debugger/debug_stub.h | 263 ++----------------------------------------- Debugger/undef_handler.S | 1 + 5 files changed, 281 insertions(+), 257 deletions(-) create mode 100644 Debugger/debug_internals.h diff --git a/Debugger/debug_comm.S b/Debugger/debug_comm.S index 4d41e24..6635618 100644 --- a/Debugger/debug_comm.S +++ b/Debugger/debug_comm.S @@ -19,6 +19,7 @@ #define __ASSEMBLY__ #include "debug_macros.h" #include "debug_stub.h" +#include "debug_internals.h" #include "debug_comm.h" .bss diff --git a/Debugger/debug_internals.h b/Debugger/debug_internals.h new file mode 100644 index 0000000..a5121d7 --- /dev/null +++ b/Debugger/debug_internals.h @@ -0,0 +1,270 @@ +/** @file debug_internals.h + * @brief Shared C/ASM header file for debugger internal constants + * + */ + +/* Copyright (C) 2007-2011 the NxOS developers + * + * Module Developed by: TC Wan + * + * See AUTHORS for a full list of the developers. + * + * See COPYING for redistribution license + * + */ + +#ifndef __DEBUG_INTERNALS_H__ +#define __DEBUG_INTERNALS_H__ + +#include "_c_arm_macros.h" + + +/** @addtogroup debugger */ +/*@{*/ + + +/* Declarations go here. */ +/** @name Debug Message Constants. + * + * Debug Message Values + */ +/*@{*/ + +/* + * USB Buffer Sizes: Ctrl Intr Iso Bulk + * Full Speed Device 64 64 1023 64 + * High Speed Device 64 1024 1024 512 + */ + +#define USB_BUFSIZE 64 /* USB Buffer size for AT91SAM7S */ + +#define USB_NXT_TELEGRAMTYPE_OFFSET 0 /* NXT Direct Command/Response Header */ +#define USB_NXT_SEGNUM_OFFSET 1 +#define USB_NXT_TELEGRAMSIZE_OFFSET 2 + +#define USB_NXT_TELEGRAMTYPE 0x8d /* GDB debugger specific, no Response required */ + +#define USB_GDBMSG_START 3 /* Offset into USB Telegram buffer */ + +#define MSG_NUMSEGMENTS 3 /* For packet transfers */ +#define MSG_SEGMENTSIZE (USB_BUFSIZE - USB_GDBMSG_START) /* 61 bytes per segment */ +#define MSGBUF_SIZE (MSG_SEGMENTSIZE*MSG_NUMSEGMENTS) /* Debug Message Buffer Size, 61 x 3 = 183 chars = ~80 bytes of actual data */ +#define MSGBUF_CHKSUMOFFSET 3 /* to be subtracted from message length */ +#define MSGBUF_IN_OVERHEADLEN 5 /* For calculating max message data length (exclude ASCIIZ char) */ +#define MSGBUF_OUT_OVERHEADLEN 5 /* For calculating max message data length (exclude ASCIIZ char) */ + +#define MSGBUF_CTRLC 0x03 /* For Out of Band Signaling: not implemented yet */ +#define MSGBUF_STARTCHAR '$' +#define MSGBUF_ACKCHAR '+' +#define MSGBUF_NAKCHAR '-' +#define MSGBUF_ERRCHAR 'E' +#define MSGBUF_SIGCHAR 'S' +#define MSGBUF_SETCHAR '=' +#define MSGBUF_CHKSUMCHAR '#' +#define MSGBUF_SEPCHAR ',' +#define MSGBUF_ARGCHAR ':' +#define MSGBUF_MSGERROR -1 +/*@}*/ + +/** @name Debug Command Lookup Constants. + * + * Debug Command Lookup + */ +/*@{*/ + +#define CMDINDEX_OUTOFRANGE -1 +/*@}*/ + +/** @name Debug Register Command Constants. + * + * Debug Register Command + */ +/*@{*/ +#define CMD_REG_NUMREGS 17 +#define CMD_REG_GETONE_MINPARAMLEN 1 +#define CMD_REG_GETONE_MAXPARAMLEN 2 +#define CMD_REG_GETALL_PARAMLEN 0 +#define CMD_REG_REGPARAMLEN 8 /* 32-bit ASCII Hex Value */ +#define CMD_REG_SETONE_MINPARAMLEN (2 + CMD_REG_REGPARAMLEN) +#define CMD_REG_SETONE_MAXPARAMLEN (3 + CMD_REG_REGPARAMLEN) +#define CMD_REG_SETALL_PARAMLEN (CMD_REG_NUMREGS*CMD_REG_REGPARAMLEN) +/*@}*/ + +/** @name Debug Memory Command Constants. + * + * Debug Memory Command + * FIXME: These limits are not enforced by the GDB client, it truncates addresses and lengths to remove leading '0's + * The PARAMLEN constants would probably be removed + */ +/*@{*/ +#define CMD_NUMITEMS_PARAMLEN 4 /* 16-bit ASCII Hex Value */ +#define CMD_MEM_READ_PARAMLEN (CMD_REG_REGPARAMLEN + CMD_NUMITEMS_PARAMLEN + 1) /* Address length is equivalent to reg param len */ +#define CMD_MEM_WRITE_MINPARAMLEN (CMD_REG_REGPARAMLEN + CMD_NUMITEMS_PARAMLEN + 2) /* Address length is equivalent to reg param len */ +#define CMD_MEM_SEPCHAR_OFFSET CMD_REG_REGPARAMLEN /* Address length is equivalent to reg param len */ +#define CMD_MEM_MAXOUTBUFLEN (MSGBUF_SIZE - MSGBUF_OUT_OVERHEADLEN) +#define CMD_MEM_MAXREADBYTES (CMD_MEM_MAXOUTBUFLEN/2) +#define CMD_MEM_MAXINBUFLEN (MSGBUF_SIZE - MSGBUF_IN_OVERHEADLEN) +#define CMD_MEM_MAXWRITEBYTES ((CMD_MEM_MAXINBUFLEN - CMD_MEM_WRITE_MINPARAMLEN)/2) +/*@}*/ + +/** @name Debug Continue and Step Command Constants. + * + * Debug Continue and Step Command + */ +/*@{*/ +#define CMD_CONTINUE_MINPARAMLEN 0 +#define CMD_STEP_MINPARAMLEN 0 +/*@}*/ + + + +/** @name Debug Breakpoint Command Constants. + * + * Debug Breakpoint Command + */ +/*@{*/ + +#define CMD_BKPT_INSERT_MINPARAMLEN 5 +#define CMD_BKPT_REMOVE_MINPARAMLEN 5 + + +#define CMD_BKPT_TYPE_BREAK_MEMORY 0 +#define CMD_BKPT_TYPE_BREAK_HARD 1 /* Not supported */ +#define CMD_BKPT_TYPE_WATCH_WRITE 2 /* Not supported (yet) */ +#define CMD_BKPT_TYPE_WATCH_READ 3 /* Not supported (yet) */ +#define CMD_BKPT_TYPE_WATCH_ACCESS 4 /* Not supported (yet) */ + +#define CMD_BKPT_KIND_THUMB 2 +#define CMD_BKPT_KIND_THUMB2 3 /* Not supported */ +#define CMD_BKPT_KIND_ARM 4 + +#define CMD_BKPT_NOTFOUND -1 + +/*@}*/ + +/** @name Debug Stack Constants. + * + * Debug Stack Manipulation Values + */ +/*@{*/ +#define DBGSTACK_NEXTINSTR_INDEX 0 /* Next Instruction Address is at index 0 from bottom of Debug Stack */ +#define DBGSTACK_USERCPSR_INDEX 1 /* User CPSR (SPSR_UNDEF) is at index 1 from bottom of Debug Stack */ +#define DBGSTACK_USERREG_INDEX 2 /* R0 starts at index 2 from bottom of Debug Stack */ +#define DBGSTACK_USERSP_INDEX (DBGSTACK_USERREG_INDEX + REG_SP) /* SP is R13 */ +#define DBGSTACK_USERLR_INDEX (DBGSTACK_USERREG_INDEX + REG_LR) /* LR is R14 */ +#define DBGSTACK_USERPC_INDEX (DBGSTACK_USERREG_INDEX + REG_PC) /* PC is R15 */ +/*@}*/ + +/** @name Bitmask Definitions. + * + * Various Bitmasks used for data manipulation. + */ +/*@{*/ +#define BKPT_STATE_THUMB_FLAG 0x01 /* Flag Thumb Breakpoint */ +#define ASCII_LOWER2UPPER_MASK 0x20 /* ASCII Conversion bitmask */ +#define NIBBLE0 0x0000000F /* Nibble 0 word(3:0) */ +#define NIBBLE1 0x000000F0 /* Nibble 1 word(7:4) */ +#define NIBBLE2 0x00000F00 /* Nibble 2 word(11:8) */ +#define NIBBLE3 0x0000F000 /* Nibble 3 word(15:12) */ +#define NIBBLE4 0x000F0000 /* Nibble 4 word(19:16) */ +#define NIBBLE5 0x00F00000 /* Nibble 5 word(23:20) */ +#define NIBBLE6 0x0F000000 /* Nibble 6 word(27:24) */ +#define NIBBLE7 0xF0000000 /* Nibble 7 word(31:28) */ +#define BYTE0 0x000000FF /* Byte 0 word(7:0) */ +#define BYTE1 0x0000FF00 /* Byte 1 word(15:8) */ +#define BYTE2 0x00FF0000 /* Byte 2 word(23:16) */ +#define BYTE3 0xFF000000 /* Byte 3 word(31:24) */ +#define HLFWRD0 0x0000FFFF /* Halfword 0 word(15:0) */ +#define HLFWRD1 0xFFFF0000 /* Halfword 0 word(31:16) */ +/*@}*/ + +/** @name CPSR Bit Definitions. + * + * Various Bit definitions for accessing the CPSR register. + */ +/*@{*/ +#define CPSR_THUMB 0x00000020 +#define CPSR_FIQ 0x00000040 +#define CPSR_IRQ 0x00000080 +#define CPSR_MODE 0x0000001F + +/* ARM Exception Modes */ +#define MODE_USR 0x10 /* User mode */ +#define MODE_FIQ 0x11 /* FIQ mode */ +#define MODE_IRQ 0x12 /* IRQ mode */ +#define MODE_SVC 0x13 /* Supervisor mode */ +#define MODE_ABT 0x17 /* Abort mode */ +#define MODE_UND 0x1B /* Undefined mode */ +#define MODE_SYS 0x1F /* System mode */ + +/*@}*/ + +/** Debugger State Enums + * + * Debugger State. + * The enums must be consecutive, starting from 0 + */ +ENUM_BEGIN +ENUM_VALASSIGN(DBG_RESET, 0) /**< Initial State. */ +ENUM_VAL(DBG_INIT) /**< Debugger Initialized. */ +ENUM_VAL(DBG_CONFIGURED) /**< Debugger has been configured by GDB Server */ +ENUM_END(dbg_state_t) + +/** Breakpoint Type Enums + * + * Breakpoint Type. + * The enums must be consecutive, starting from 0 + */ +ENUM_BEGIN +ENUM_VALASSIGN(DBG_AUTO_BKPT,0) /**< Auto Thumb Breakpoint (Instruction resume after breakpoint). */ +ENUM_VAL(DBG_MANUAL_BKPT_ARM) /**< Manual ARM Breakpoint. */ +ENUM_VAL(DBG_NORMAL_BKPT_ARM) /**< Normal ARM Breakpoint (Single Step, Normal). */ +ENUM_VAL(DBG_MANUAL_BKPT_THUMB) /**< Manual Thumb Breakpoint. */ +ENUM_VAL(DBG_NORMAL_BKPT_THUMB) /**< Normal Thumb Breakpoint (Single Step, Normal). */ +ENUM_END(bkpt_type_t) + +/** Debugger Message Error Enums + * + * Debugger Error Message Enums. + * The enums must be consecutive, starting from 1 + */ +/* FIXME: Need to validate against the ecos-generic-stub.c Error enums */ +ENUM_BEGIN +ENUM_VALASSIGN(MSG_ERRIMPL, 0) /**< Stub (not implemented) Error. */ +ENUM_VAL(MSG_ERRINLENGTH) /**< Message Write Length Error. */ +ENUM_VAL(MSG_ERROUTLENGTH) /**< Message Read Length Error. */ +ENUM_VAL(MSG_ERRFORMAT) /**< Message Format Error. */ +ENUM_VAL(MSG_UNKNOWNCMD) /**< Unrecognized Command Error. */ +ENUM_VAL(MSG_UNKNOWNPARAM) /**< Unrecognized Parameter Error. */ +ENUM_VAL(MSG_UNKNOWNBRKPT) /**< Unrecognized Breakpoint Error. */ +ENUM_END(dbg_msg_errno) + +/** Register Enums + * + * Register Enums. + * Refer to eCOS's arm_stub.h for enum values + */ +ENUM_BEGIN +ENUM_VALASSIGN(REG_R0, 0) /**< User Reg R0 */ +ENUM_VAL(REG_R1) /**< User Reg R1 */ +ENUM_VAL(REG_R2) /**< User Reg R2 */ +ENUM_VAL(REG_R3) /**< User Reg R3 */ +ENUM_VAL(REG_R4) /**< User Reg R4 */ +ENUM_VAL(REG_R5) /**< User Reg R5 */ +ENUM_VAL(REG_R6) /**< User Reg R6 */ +ENUM_VAL(REG_R7) /**< User Reg R7 */ +ENUM_VAL(REG_R8) /**< User Reg R8 */ +ENUM_VAL(REG_R9) /**< User Reg R9 */ +ENUM_VAL(REG_R10) /**< User Reg R10 */ +ENUM_VAL(REG_R11) /**< User Reg R11 */ +ENUM_VAL(REG_R12) /**< User Reg R12 */ +ENUM_VAL(REG_SP) /**< Previous Mode SP (R13) */ +ENUM_VAL(REG_LR) /**< Previous Mode LR (R14) */ +ENUM_VAL(REG_PC) /**< Program Counter (R15) */ +ENUM_VALASSIGN(REG_FPSCR, 24) /**< Previous Mode FPSCR (dummy) */ +ENUM_VAL(REG_CPSR) /**< Previous Mode CPSR */ + +ENUM_END(register_enum_t) + + +#endif /* __DEBUG_INTERNALS_H__ */ diff --git a/Debugger/debug_stub.S b/Debugger/debug_stub.S index e7749de..915db5b 100644 --- a/Debugger/debug_stub.S +++ b/Debugger/debug_stub.S @@ -139,6 +139,7 @@ #define __ASSEMBLY__ #include "debug_stub.h" +#include "debug_internals.h" #include "debug_macros.h" /* Macro definitions */ @@ -1272,7 +1273,7 @@ _dbg__cmd_InsertBreakpoint: _dbg__cmd_RemoveBreakpoint: stmfd sp!, {lr} bl __dbg__cmdParamLen - teq r1, #CMD_BKPT_REMOVE_PARAMLEN /* Check for correct length */ + teq r1, #CMD_BKPT_REMOVE_MINPARAMLEN /* Check for correct length */ blo __dbg__procCmdParamError /* Unexpected input, report error */ bl _dbg__proc_brkpt_params /* R0: Breakpoint Address */ teq r0, #0 diff --git a/Debugger/debug_stub.h b/Debugger/debug_stub.h index 932d450..931aa68 100644 --- a/Debugger/debug_stub.h +++ b/Debugger/debug_stub.h @@ -18,187 +18,6 @@ #include "_c_arm_macros.h" - -/** @addtogroup debugger */ -/*@{*/ - - -/* Declarations go here. */ -/** @name Debug Message Constants. - * - * Debug Message Values - */ -/*@{*/ - -/* - * USB Buffer Sizes: Ctrl Intr Iso Bulk - * Full Speed Device 64 64 1023 64 - * High Speed Device 64 1024 1024 512 - */ - -#define USB_BUFSIZE 64 /* USB Buffer size for AT91SAM7S */ - -#define USB_NXT_TELEGRAMTYPE_OFFSET 0 /* NXT Direct Command/Response Header */ -#define USB_NXT_SEGNUM_OFFSET 1 -#define USB_NXT_TELEGRAMSIZE_OFFSET 2 - -#define USB_NXT_TELEGRAMTYPE 0x8d /* GDB debugger specific, no Response required */ - -#define USB_GDBMSG_START 3 /* Offset into USB Telegram buffer */ - -#define MSG_NUMSEGMENTS 3 /* For packet transfers */ -#define MSG_SEGMENTSIZE (USB_BUFSIZE - USB_GDBMSG_START) /* 61 bytes per segment */ -#define MSGBUF_SIZE (MSG_SEGMENTSIZE*MSG_NUMSEGMENTS) /* Debug Message Buffer Size, 61 x 3 = 183 chars = ~80 bytes of actual data */ -#define MSGBUF_CHKSUMOFFSET 3 /* to be subtracted from message length */ -#define MSGBUF_IN_OVERHEADLEN 5 /* For calculating max message data length (exclude ASCIIZ char) */ -#define MSGBUF_OUT_OVERHEADLEN 5 /* For calculating max message data length (exclude ASCIIZ char) */ - -#define MSGBUF_CTRLC 0x03 /* For Out of Band Signaling: not implemented yet */ -#define MSGBUF_STARTCHAR '$' -#define MSGBUF_ACKCHAR '+' -#define MSGBUF_NAKCHAR '-' -#define MSGBUF_ERRCHAR 'E' -#define MSGBUF_SIGCHAR 'S' -#define MSGBUF_SETCHAR '=' -#define MSGBUF_CHKSUMCHAR '#' -#define MSGBUF_SEPCHAR ',' -#define MSGBUF_ARGCHAR ':' -#define MSGBUF_MSGERROR -1 -/*@}*/ - -/** @name Debug Command Lookup Constants. - * - * Debug Command Lookup - */ -/*@{*/ - -#define CMDINDEX_OUTOFRANGE -1 -/*@}*/ - -/** @name Debug Register Command Constants. - * - * Debug Register Command - */ -/*@{*/ -#define CMD_REG_NUMREGS 17 -#define CMD_REG_GETONE_MINPARAMLEN 1 -#define CMD_REG_GETONE_MAXPARAMLEN 2 -#define CMD_REG_GETALL_PARAMLEN 0 -#define CMD_REG_REGPARAMLEN 8 /* 32-bit ASCII Hex Value */ -#define CMD_REG_SETONE_MINPARAMLEN (2 + CMD_REG_REGPARAMLEN) -#define CMD_REG_SETONE_MAXPARAMLEN (3 + CMD_REG_REGPARAMLEN) -#define CMD_REG_SETALL_PARAMLEN (CMD_REG_NUMREGS*CMD_REG_REGPARAMLEN) -/*@}*/ - -/** @name Debug Memory Command Constants. - * - * Debug Memory Command - * FIXME: These limits are not enforced by the GDB client, it truncates addresses and lengths to remove leading '0's - * The PARAMLEN constants would probably be removed - */ -/*@{*/ -#define CMD_NUMITEMS_PARAMLEN 4 /* 16-bit ASCII Hex Value */ -#define CMD_MEM_READ_PARAMLEN (CMD_REG_REGPARAMLEN + CMD_NUMITEMS_PARAMLEN + 1) /* Address length is equivalent to reg param len */ -#define CMD_MEM_WRITE_MINPARAMLEN (CMD_REG_REGPARAMLEN + CMD_NUMITEMS_PARAMLEN + 2) /* Address length is equivalent to reg param len */ -#define CMD_MEM_SEPCHAR_OFFSET CMD_REG_REGPARAMLEN /* Address length is equivalent to reg param len */ -#define CMD_MEM_MAXOUTBUFLEN (MSGBUF_SIZE - MSGBUF_OUT_OVERHEADLEN) -#define CMD_MEM_MAXREADBYTES (CMD_MEM_MAXOUTBUFLEN/2) -#define CMD_MEM_MAXINBUFLEN (MSGBUF_SIZE - MSGBUF_IN_OVERHEADLEN) -#define CMD_MEM_MAXWRITEBYTES ((CMD_MEM_MAXINBUFLEN - CMD_MEM_WRITE_MINPARAMLEN)/2) -/*@}*/ - -/** @name Debug Continue and Step Command Constants. - * - * Debug Continue and Step Command - */ -/*@{*/ -#define CMD_CONTINUE_MINPARAMLEN 0 -#define CMD_STEP_MINPARAMLEN 0 -/*@}*/ - - - -/** @name Debug Breakpoint Command Constants. - * - * Debug Breakpoint Command - */ -/*@{*/ - -#define CMD_BKPT_INSERT_MINPARAMLEN 5 -#define CMD_BKPT_REMOVE_MINPARAMLEN 5 - - -#define CMD_BKPT_TYPE_BREAK_MEMORY 0 -#define CMD_BKPT_TYPE_BREAK_HARD 1 /* Not supported */ -#define CMD_BKPT_TYPE_WATCH_WRITE 2 /* Not supported (yet) */ -#define CMD_BKPT_TYPE_WATCH_READ 3 /* Not supported (yet) */ -#define CMD_BKPT_TYPE_WATCH_ACCESS 4 /* Not supported (yet) */ - -#define CMD_BKPT_KIND_THUMB 2 -#define CMD_BKPT_KIND_THUMB2 3 /* Not supported */ -#define CMD_BKPT_KIND_ARM 4 - -#define CMD_BKPT_NOTFOUND -1 - -/*@}*/ - -/** @name Debug Stack Constants. - * - * Debug Stack Manipulation Values - */ -/*@{*/ -#define DBGSTACK_NEXTINSTR_INDEX 0 /* Next Instruction Address is at index 0 from bottom of Debug Stack */ -#define DBGSTACK_USERCPSR_INDEX 1 /* User CPSR (SPSR_UNDEF) is at index 1 from bottom of Debug Stack */ -#define DBGSTACK_USERREG_INDEX 2 /* R0 starts at index 2 from bottom of Debug Stack */ -#define DBGSTACK_USERSP_INDEX (DBGSTACK_USERREG_INDEX + REG_SP) /* SP is R13 */ -#define DBGSTACK_USERLR_INDEX (DBGSTACK_USERREG_INDEX + REG_LR) /* LR is R14 */ -#define DBGSTACK_USERPC_INDEX (DBGSTACK_USERREG_INDEX + REG_PC) /* PC is R15 */ -/*@}*/ - -/** @name Bitmask Definitions. - * - * Various Bitmasks used for data manipulation. - */ -/*@{*/ -#define BKPT_STATE_THUMB_FLAG 0x01 /* Flag Thumb Breakpoint */ -#define ASCII_LOWER2UPPER_MASK 0x20 /* ASCII Conversion bitmask */ -#define NIBBLE0 0x0000000F /* Nibble 0 word(3:0) */ -#define NIBBLE1 0x000000F0 /* Nibble 1 word(7:4) */ -#define NIBBLE2 0x00000F00 /* Nibble 2 word(11:8) */ -#define NIBBLE3 0x0000F000 /* Nibble 3 word(15:12) */ -#define NIBBLE4 0x000F0000 /* Nibble 4 word(19:16) */ -#define NIBBLE5 0x00F00000 /* Nibble 5 word(23:20) */ -#define NIBBLE6 0x0F000000 /* Nibble 6 word(27:24) */ -#define NIBBLE7 0xF0000000 /* Nibble 7 word(31:28) */ -#define BYTE0 0x000000FF /* Byte 0 word(7:0) */ -#define BYTE1 0x0000FF00 /* Byte 1 word(15:8) */ -#define BYTE2 0x00FF0000 /* Byte 2 word(23:16) */ -#define BYTE3 0xFF000000 /* Byte 3 word(31:24) */ -#define HLFWRD0 0x0000FFFF /* Halfword 0 word(15:0) */ -#define HLFWRD1 0xFFFF0000 /* Halfword 0 word(31:16) */ -/*@}*/ - -/** @name CPSR Bit Definitions. - * - * Various Bit definitions for accessing the CPSR register. - */ -/*@{*/ -#define CPSR_THUMB 0x00000020 -#define CPSR_FIQ 0x00000040 -#define CPSR_IRQ 0x00000080 -#define CPSR_MODE 0x0000001F - -/* ARM Exception Modes */ -#define MODE_USR 0x10 /* User mode */ -#define MODE_FIQ 0x11 /* FIQ mode */ -#define MODE_IRQ 0x12 /* IRQ mode */ -#define MODE_SVC 0x13 /* Supervisor mode */ -#define MODE_ABT 0x17 /* Abort mode */ -#define MODE_UND 0x1B /* Undefined mode */ -#define MODE_SYS 0x1F /* System mode */ - -/*@}*/ - /** @name BKPT suppport constants * * ARM and Thumb Breakpoint Instructions. @@ -214,84 +33,16 @@ #define BKPT32_INSTR 0xE1200070 /* ARM BKPT instruction, will work in ARMv5T and above */ #endif -#define BKPT32_ENUM_MASK 0x000FFF0F /* ARM BKPT Enum Mask */ -#define BKPT32_AUTO_BKPT 0x00080000 /* ARM BKPT Auto-Step Flag (for CONT support) */ -#define BKPT32_MANUAL_BKPT 0x0007FF0F /* Manually inserted ARM Breakpoint */ +#define BKPT32_ENUM_MASK 0x000FFF0F /* ARM BKPT Enum Mask */ +#define BKPT32_AUTO_BKPT 0x00080000 /* ARM BKPT Auto-Step Flag (for CONT support) */ +#define BKPT32_MANUAL_BKPT 0x0007FF0F /* Manually inserted ARM Breakpoint */ -#define BKPT16_INSTR 0xBE00 /* Thumb BKPT instruction */ -#define BKPT16_ENUM_MASK 0x00FF /* Thumb BKPT Enum Mask */ -#define BKPT16_AUTO_BKPT 0x0080 /* Thumb BKPT Auto-Step Flag (for CONT support) */ -#define BKPT16_MANUAL_BKPT 0x007F /* Manually inserted Thumb Breakpoint */ +#define BKPT16_INSTR 0xBE00 /* Thumb BKPT instruction */ +#define BKPT16_ENUM_MASK 0x00FF /* Thumb BKPT Enum Mask */ +#define BKPT16_AUTO_BKPT 0x0080 /* Thumb BKPT Auto-Step Flag (for CONT support) */ +#define BKPT16_MANUAL_BKPT 0x007F /* Manually inserted Thumb Breakpoint */ /*@}*/ -/** Debugger State Enums - * - * Debugger State. - * The enums must be consecutive, starting from 0 - */ -ENUM_BEGIN -ENUM_VALASSIGN(DBG_RESET, 0) /**< Initial State. */ -ENUM_VAL(DBG_INIT) /**< Debugger Initialized. */ -ENUM_VAL(DBG_CONFIGURED) /**< Debugger has been configured by GDB Server */ -ENUM_END(dbg_state_t) - -/** Breakpoint Type Enums - * - * Breakpoint Type. - * The enums must be consecutive, starting from 0 - */ -ENUM_BEGIN -ENUM_VALASSIGN(DBG_AUTO_BKPT,0) /**< Auto Thumb Breakpoint (Instruction resume after breakpoint). */ -ENUM_VAL(DBG_MANUAL_BKPT_ARM) /**< Manual ARM Breakpoint. */ -ENUM_VAL(DBG_NORMAL_BKPT_ARM) /**< Normal ARM Breakpoint (Single Step, Normal). */ -ENUM_VAL(DBG_MANUAL_BKPT_THUMB) /**< Manual Thumb Breakpoint. */ -ENUM_VAL(DBG_NORMAL_BKPT_THUMB) /**< Normal Thumb Breakpoint (Single Step, Normal). */ -ENUM_END(bkpt_type_t) - -/** Debugger Message Error Enums - * - * Debugger Error Message Enums. - * The enums must be consecutive, starting from 1 - */ -/* FIXME: Need to validate against the ecos-generic-stub.c Error enums */ -ENUM_BEGIN -ENUM_VALASSIGN(MSG_ERRIMPL, 0) /**< Stub (not implemented) Error. */ -ENUM_VAL(MSG_ERRINLENGTH) /**< Message Write Length Error. */ -ENUM_VAL(MSG_ERROUTLENGTH) /**< Message Read Length Error. */ -ENUM_VAL(MSG_ERRFORMAT) /**< Message Format Error. */ -ENUM_VAL(MSG_UNKNOWNCMD) /**< Unrecognized Command Error. */ -ENUM_VAL(MSG_UNKNOWNPARAM) /**< Unrecognized Parameter Error. */ -ENUM_VAL(MSG_UNKNOWNBRKPT) /**< Unrecognized Breakpoint Error. */ -ENUM_END(dbg_msg_errno) - -/** Register Enums - * - * Register Enums. - * Refer to eCOS's arm_stub.h for enum values - */ -ENUM_BEGIN -ENUM_VALASSIGN(REG_R0, 0) /**< User Reg R0 */ -ENUM_VAL(REG_R1) /**< User Reg R1 */ -ENUM_VAL(REG_R2) /**< User Reg R2 */ -ENUM_VAL(REG_R3) /**< User Reg R3 */ -ENUM_VAL(REG_R4) /**< User Reg R4 */ -ENUM_VAL(REG_R5) /**< User Reg R5 */ -ENUM_VAL(REG_R6) /**< User Reg R6 */ -ENUM_VAL(REG_R7) /**< User Reg R7 */ -ENUM_VAL(REG_R8) /**< User Reg R8 */ -ENUM_VAL(REG_R9) /**< User Reg R9 */ -ENUM_VAL(REG_R10) /**< User Reg R10 */ -ENUM_VAL(REG_R11) /**< User Reg R11 */ -ENUM_VAL(REG_R12) /**< User Reg R12 */ -ENUM_VAL(REG_SP) /**< Previous Mode SP (R13) */ -ENUM_VAL(REG_LR) /**< Previous Mode LR (R14) */ -ENUM_VAL(REG_PC) /**< Program Counter (R15) */ -ENUM_VALASSIGN(REG_FPSCR, 24) /**< Previous Mode FPSCR (dummy) */ -ENUM_VAL(REG_CPSR) /**< Previous Mode CPSR */ - -ENUM_END(register_enum_t) - - #ifndef __ASSEMBLY__ /* Define C stuff */ diff --git a/Debugger/undef_handler.S b/Debugger/undef_handler.S index 5562738..b980a5d 100644 --- a/Debugger/undef_handler.S +++ b/Debugger/undef_handler.S @@ -10,6 +10,7 @@ */ #define __ASSEMBLY__ #include "debug_stub.h" +#include "debug_internals.h" .text -- cgit v1.2.3