* remote-udi.c (udi_insert/remove_breakpoint): Completely
rewrite, only leave out the bugs.
This commit is contained in:
parent
57d32184c3
commit
54847287d9
2 changed files with 36 additions and 44 deletions
|
@ -1,5 +1,8 @@
|
|||
Fri Apr 24 07:41:19 1992 Stu Grossman (grossman at cygnus.com)
|
||||
|
||||
* remote-udi.c (udi_insert/remove_breakpoint): Completely
|
||||
rewrite, only leave out the bugs.
|
||||
|
||||
* Makefile.in: Add 29k/UDI support. Improve depend.
|
||||
* .Sanitize, alldeps.mak, configure.in, depend: Add 29k/UDI support.
|
||||
|
||||
|
|
|
@ -125,8 +125,8 @@ typedef struct bkpt_entry_str
|
|||
UDIBreakType Type;
|
||||
unsigned int BreakId;
|
||||
} bkpt_entry_t;
|
||||
#define MAX_BKPT 40
|
||||
bkpt_entry_t bkpt_table[MAX_BKPT];
|
||||
#define BKPT_TABLE_SIZE 40
|
||||
static bkpt_entry_t bkpt_table[BKPT_TABLE_SIZE];
|
||||
extern char dfe_errmsg[]; /* error string */
|
||||
|
||||
/*********************************************************** SIGNAL SUPPORT */
|
||||
|
@ -882,35 +882,30 @@ udi_insert_breakpoint (addr, contents_cache)
|
|||
CORE_ADDR addr;
|
||||
char *contents_cache;
|
||||
{
|
||||
int cnt = 0;
|
||||
DENTER("udi_insert_breakpoint()");
|
||||
int cnt;
|
||||
UDIError err;
|
||||
|
||||
for (cnt = 0; cnt < BKPT_TABLE_SIZE; cnt++)
|
||||
if (bkpt_table[cnt].Type == 0) /* Find first free slot */
|
||||
break;
|
||||
|
||||
if(cnt >= BKPT_TABLE_SIZE)
|
||||
error("Too many breakpoints set");
|
||||
|
||||
while( cnt < MAX_BKPT) /* find BKPT slot in table */
|
||||
if( !(bkpt_table[cnt].Type) )
|
||||
break;
|
||||
else cnt++;
|
||||
if(cnt >= MAX_BKPT)
|
||||
{ error("Too many breakpoints set");
|
||||
DEXIT("udi_insert_breakpoint() failure");
|
||||
return 1; /* Failure */
|
||||
}
|
||||
bkpt_table[cnt].Addr.Offset = addr;
|
||||
bkpt_table[cnt].Addr.Space = UDI29KIRAMSpace;
|
||||
bkpt_table[cnt].PassCount = 1;
|
||||
bkpt_table[cnt].Type = UDIBreakFlagExecute;
|
||||
|
||||
if( UDISetBreakpoint(bkpt_table[cnt].Addr,
|
||||
bkpt_table[cnt].PassCount,
|
||||
bkpt_table[cnt].Type,
|
||||
&bkpt_table[cnt].BreakId) )
|
||||
{ error("UDISetBreakpoint() failed in udi_insert_breakpoint");
|
||||
bkpt_table[cnt].Type = 0;
|
||||
DEXIT("udi_insert_breakpoint() failure");
|
||||
return 1; /* Failure */
|
||||
} else
|
||||
{ DEXIT("udi_insert_breakpoint() success");
|
||||
return 0; /* Success */
|
||||
}
|
||||
err = UDISetBreakpoint(bkpt_table[cnt].Addr,
|
||||
bkpt_table[cnt].PassCount,
|
||||
bkpt_table[cnt].Type,
|
||||
&bkpt_table[cnt].BreakId);
|
||||
|
||||
if (err == 0) return 0; /* Success */
|
||||
|
||||
bkpt_table[cnt].Type = 0;
|
||||
error("UDISetBreakpoint returned error code %d\n", err);
|
||||
}
|
||||
|
||||
/**************************************************** UDI_REMOVE_BREAKPOINT */
|
||||
|
@ -919,29 +914,23 @@ udi_remove_breakpoint (addr, contents_cache)
|
|||
CORE_ADDR addr;
|
||||
char *contents_cache;
|
||||
{
|
||||
int cnt = 0;
|
||||
DENTER("udi_remove_breakpoint()");
|
||||
int cnt;
|
||||
UDIError err;
|
||||
|
||||
for (cnt = 0; cnt < BKPT_TABLE_SIZE; cnt++)
|
||||
if (bkpt_table[cnt].Addr.Offset == addr) /* Find matching breakpoint */
|
||||
break;
|
||||
|
||||
if(cnt >= BKPT_TABLE_SIZE)
|
||||
error("Can't find breakpoint in table");
|
||||
|
||||
while( cnt < MAX_BKPT) /* find BKPT slot in table */
|
||||
if(bkpt_table[cnt].Addr.Offset = addr ) break;
|
||||
else cnt++;
|
||||
if(cnt >= MAX_BKPT)
|
||||
{ error("Can't find breakpoint in table");
|
||||
DEXIT("udi_remove_breakpoint() failure");
|
||||
return 1; /* Failure */
|
||||
}
|
||||
bkpt_table[cnt].Type = 0;
|
||||
|
||||
if ( !UDIClearBreakpoint(bkpt_table[cnt].BreakId)) {
|
||||
DEXIT("udi_remove_breakpoint()");
|
||||
return 0; /* Success */
|
||||
} else {
|
||||
DEXIT("udi_remove_breakpoint()");
|
||||
error("UDIClearBreakpoint() failed in udi_remove_breakpoint");
|
||||
return 1; /* Failure */
|
||||
}
|
||||
}
|
||||
err = UDIClearBreakpoint(bkpt_table[cnt].BreakId);
|
||||
if (err == 0) return 0; /* Success */
|
||||
|
||||
error("UDIClearBreakpoint returned error code %d\n", err);
|
||||
}
|
||||
|
||||
/***************************************************************** UDI_KILL */
|
||||
static void
|
||||
|
|
Loading…
Add table
Reference in a new issue