This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
+ the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */
#ifndef dbg_rdi__h
#define dbg_rdi__h
* Other RDI values *
\***************************************************************************/
-#define RDISex_Little 0 /* the byte sex of the debuggee */
+#define RDISex_Little 0 /* the byte sex of the debuggee */
#define RDISex_Big 1
#define RDISex_DontCare 2
-#define RDIPoint_EQ 0 /* the different types of break/watchpoints */
+#define RDIPoint_EQ 0 /* the different types of break/watchpoints */
#define RDIPoint_GT 1
#define RDIPoint_GE 2
#define RDIPoint_LT 3
#define RDIPoint_OUT 6
#define RDIPoint_MASK 7
-#define RDIPoint_Inquiry 64 /* ORRed with point type in extended RDP */
-#define RDIPoint_Handle 128 /* messages */
+#define RDIPoint_Inquiry 64 /* ORRed with point type in extended RDP */
+#define RDIPoint_Handle 128 /* messages */
-#define RDIWatch_ByteRead 1 /* types of data accesses to watch for */
+#define RDIWatch_ByteRead 1 /* types of data accesses to watch for */
#define RDIWatch_HalfRead 2
#define RDIWatch_WordRead 4
#define RDIWatch_ByteWrite 8
#define RDIWatch_HalfWrite 16
#define RDIWatch_WordWrite 32
-#define RDIReg_R15 (1L << 15) /* mask values for CPU */
+#define RDIReg_R15 (1L << 15) /* mask values for CPU */
#define RDIReg_PC (1L << 16)
#define RDIReg_CPSR (1L << 17)
#define RDIReg_SPSR (1L << 18)
#define RDINumCPURegs 19
-#define RDINumCPRegs 10 /* current maximum */
+#define RDINumCPRegs 10 /* current maximum */
#define RDIMode_Curr 255
/* Bits set in return value from RDIInfo_Target */
#define RDITarget_LogSpeed 0x0f
-#define RDITarget_HW 0x10 /* else emulator */
+#define RDITarget_HW 0x10 /* else emulator */
#define RDITarget_AgentMaxLevel 0xe0
#define RDITarget_AgentLevelShift 5
#define RDITarget_DebuggerMinLevel 0x700
#define RDIPointCapability_Range 2
/* 4 to 128 are RDIWatch_xx{Read,Write} left-shifted by two */
#define RDIPointCapability_Mask 256
-#define RDIPointCapability_Status 512 /* Point status enquiries available */
+#define RDIPointCapability_Status 512 /* Point status enquiries available */
/* RDI_Info subcodes */
#define RDIInfo_Target 0
#define RDIInfo_Points 1
#define RDIInfo_Step 2
#define RDIInfo_MMU 3
-#define RDIInfo_DownLoad 4 /* Inquires whether configuration download
- and selection is available.
- */
-#define RDIInfo_SemiHosting 5 /* Inquires whether RDISemiHosting_* RDI_Info
- calls are available.
- */
-#define RDIInfo_CoPro 6 /* Inquires whether CoPro RDI_Info calls are
- available.
- */
+#define RDIInfo_DownLoad 4 /* Inquires whether configuration download
+ and selection is available.
+ */
+#define RDIInfo_SemiHosting 5 /* Inquires whether RDISemiHosting_* RDI_Info
+ calls are available.
+ */
+#define RDIInfo_CoPro 6 /* Inquires whether CoPro RDI_Info calls are
+ available.
+ */
#define RDIInfo_Icebreaker 7
/* The next two are only to be used if the value returned by RDIInfo_Points */
struct Dbg_ConfigBlock;
struct Dbg_HostosInterface;
struct Dbg_MCState;
-typedef int rdi_open_proc(unsigned type, struct Dbg_ConfigBlock const *config,
- struct Dbg_HostosInterface const *i,
- struct Dbg_MCState *dbg_state);
-typedef int rdi_close_proc(void);
-typedef int rdi_read_proc(ARMword source, void *dest, unsigned *nbytes);
-typedef int rdi_write_proc(const void *source, ARMword dest, unsigned *nbytes);
-typedef int rdi_CPUread_proc(unsigned mode, unsigned long mask, ARMword *state);
-typedef int rdi_CPUwrite_proc(unsigned mode, unsigned long mask, ARMword const *state);
-typedef int rdi_CPread_proc(unsigned CPnum, unsigned long mask, ARMword *state);
-typedef int rdi_CPwrite_proc(unsigned CPnum, unsigned long mask, ARMword const *state);
-typedef int rdi_setbreak_proc(ARMword address, unsigned type, ARMword bound,
- PointHandle *handle);
-typedef int rdi_clearbreak_proc(PointHandle handle);
-typedef int rdi_setwatch_proc(ARMword address, unsigned type, unsigned datatype,
- ARMword bound, PointHandle *handle);
-typedef int rdi_clearwatch_proc(PointHandle handle);
-typedef int rdi_execute_proc(PointHandle *handle);
-typedef int rdi_step_proc(unsigned ninstr, PointHandle *handle);
-typedef int rdi_info_proc(unsigned type, ARMword *arg1, ARMword *arg2);
-typedef int rdi_pointinq_proc(ARMword *address, unsigned type,
- unsigned datatype, ARMword *bound);
-
-typedef enum {
- RDI_ConfigCPU,
- RDI_ConfigSystem
-} RDI_ConfigAspect;
-
-typedef enum {
- RDI_MatchAny,
- RDI_MatchExactly,
- RDI_MatchNoEarlier
-} RDI_ConfigMatchType;
-
-typedef int rdi_addconfig_proc(unsigned long nbytes);
-typedef int rdi_loadconfigdata_proc(unsigned long nbytes, char const *data);
-typedef int rdi_selectconfig_proc(RDI_ConfigAspect aspect, char const *name,
- RDI_ConfigMatchType matchtype, unsigned versionreq,
- unsigned *versionp);
-
-typedef char *getbufferproc(void *getbarg, unsigned long *sizep);
-typedef int rdi_loadagentproc(ARMword dest, unsigned long size, getbufferproc *getb, void *getbarg);
-
-typedef struct {
- int itemmax;
- char const * const *names;
-} RDI_NameList;
-
-typedef RDI_NameList const *rdi_namelistproc(void);
-
-typedef int rdi_errmessproc(char *buf, int buflen, int errno);
-
-struct RDIProcVec {
- char rditypename[12];
-
- rdi_open_proc *open;
- rdi_close_proc *close;
- rdi_read_proc *read;
- rdi_write_proc *write;
- rdi_CPUread_proc *CPUread;
- rdi_CPUwrite_proc *CPUwrite;
- rdi_CPread_proc *CPread;
- rdi_CPwrite_proc *CPwrite;
- rdi_setbreak_proc *setbreak;
- rdi_clearbreak_proc *clearbreak;
- rdi_setwatch_proc *setwatch;
- rdi_clearwatch_proc *clearwatch;
- rdi_execute_proc *execute;
- rdi_step_proc *step;
- rdi_info_proc *info;
- /* V2 RDI */
- rdi_pointinq_proc *pointinquiry;
-
- /* These three useable only if RDIInfo_DownLoad returns no error */
- rdi_addconfig_proc *addconfig;
- rdi_loadconfigdata_proc *loadconfigdata;
- rdi_selectconfig_proc *selectconfig;
-
- rdi_namelistproc *drivernames;
- rdi_namelistproc *cpunames;
-
- rdi_errmessproc *errmess;
-
- /* Only if RDIInfo_Target returns a value with RDITarget_LoadAgent set */
- rdi_loadagentproc *loadagent;
+typedef int rdi_open_proc (unsigned type,
+ struct Dbg_ConfigBlock const *config,
+ struct Dbg_HostosInterface const *i,
+ struct Dbg_MCState *dbg_state);
+typedef int rdi_close_proc (void);
+typedef int rdi_read_proc (ARMword source, void *dest, unsigned *nbytes);
+typedef int rdi_write_proc (const void *source, ARMword dest,
+ unsigned *nbytes);
+typedef int rdi_CPUread_proc (unsigned mode, unsigned long mask,
+ ARMword * state);
+typedef int rdi_CPUwrite_proc (unsigned mode, unsigned long mask,
+ ARMword const *state);
+typedef int rdi_CPread_proc (unsigned CPnum, unsigned long mask,
+ ARMword * state);
+typedef int rdi_CPwrite_proc (unsigned CPnum, unsigned long mask,
+ ARMword const *state);
+typedef int rdi_setbreak_proc (ARMword address, unsigned type, ARMword bound,
+ PointHandle * handle);
+typedef int rdi_clearbreak_proc (PointHandle handle);
+typedef int rdi_setwatch_proc (ARMword address, unsigned type,
+ unsigned datatype, ARMword bound,
+ PointHandle * handle);
+typedef int rdi_clearwatch_proc (PointHandle handle);
+typedef int rdi_execute_proc (PointHandle * handle);
+typedef int rdi_step_proc (unsigned ninstr, PointHandle * handle);
+typedef int rdi_info_proc (unsigned type, ARMword * arg1, ARMword * arg2);
+typedef int rdi_pointinq_proc (ARMword * address, unsigned type,
+ unsigned datatype, ARMword * bound);
+
+typedef enum
+{
+ RDI_ConfigCPU,
+ RDI_ConfigSystem
+}
+RDI_ConfigAspect;
+
+typedef enum
+{
+ RDI_MatchAny,
+ RDI_MatchExactly,
+ RDI_MatchNoEarlier
+}
+RDI_ConfigMatchType;
+
+typedef int rdi_addconfig_proc (unsigned long nbytes);
+typedef int rdi_loadconfigdata_proc (unsigned long nbytes, char const *data);
+typedef int rdi_selectconfig_proc (RDI_ConfigAspect aspect, char const *name,
+ RDI_ConfigMatchType matchtype,
+ unsigned versionreq, unsigned *versionp);
+
+typedef char *getbufferproc (void *getbarg, unsigned long *sizep);
+typedef int rdi_loadagentproc (ARMword dest, unsigned long size,
+ getbufferproc * getb, void *getbarg);
+
+typedef struct
+{
+ int itemmax;
+ char const *const *names;
+}
+RDI_NameList;
+
+typedef RDI_NameList const *rdi_namelistproc (void);
+
+typedef int rdi_errmessproc (char *buf, int buflen, int errno);
+
+struct RDIProcVec
+{
+ char rditypename[12];
+
+ rdi_open_proc *open;
+ rdi_close_proc *close;
+ rdi_read_proc *read;
+ rdi_write_proc *write;
+ rdi_CPUread_proc *CPUread;
+ rdi_CPUwrite_proc *CPUwrite;
+ rdi_CPread_proc *CPread;
+ rdi_CPwrite_proc *CPwrite;
+ rdi_setbreak_proc *setbreak;
+ rdi_clearbreak_proc *clearbreak;
+ rdi_setwatch_proc *setwatch;
+ rdi_clearwatch_proc *clearwatch;
+ rdi_execute_proc *execute;
+ rdi_step_proc *step;
+ rdi_info_proc *info;
+ /* V2 RDI */
+ rdi_pointinq_proc *pointinquiry;
+
+ /* These three useable only if RDIInfo_DownLoad returns no error */
+ rdi_addconfig_proc *addconfig;
+ rdi_loadconfigdata_proc *loadconfigdata;
+ rdi_selectconfig_proc *selectconfig;
+
+ rdi_namelistproc *drivernames;
+ rdi_namelistproc *cpunames;
+
+ rdi_errmessproc *errmess;
+
+ /* Only if RDIInfo_Target returns a value with RDITarget_LoadAgent set */
+ rdi_loadagentproc *loadagent;
};
#endif
+extern unsigned int swi_mask;
-
-
-
-
+#define SWI_MASK_DEMON (1 << 0)
+#define SWI_MASK_ANGEL (1 << 1)
+#define SWI_MASK_REDBOOT (1 << 2)