10ms timeout check on cp15 read/write
git-svn-id: svn://svn.berlios.de/openocd/trunk@2470 b42882b7-edfa-0310-969c-e2dbd0fdcd60
This commit is contained in:
parent
83655bf49b
commit
e48e7000b0
|
@ -159,8 +159,9 @@ int arm926ejs_cp15_read(target_t *target, uint32_t op1, uint32_t op2, uint32_t C
|
|||
|
||||
jtag_add_dr_scan(4, fields, jtag_get_end_state());
|
||||
|
||||
/*TODO: add timeout*/
|
||||
do
|
||||
long long then = timeval_ms();
|
||||
|
||||
for (;;)
|
||||
{
|
||||
/* rescan with NOP, to wait for the access to complete */
|
||||
access = 0;
|
||||
|
@ -173,7 +174,19 @@ int arm926ejs_cp15_read(target_t *target, uint32_t op1, uint32_t op2, uint32_t C
|
|||
{
|
||||
return retval;
|
||||
}
|
||||
} while (buf_get_u32(&access, 0, 1) != 1);
|
||||
|
||||
if (buf_get_u32(&access, 0, 1) == 1)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
/* 10ms timeout */
|
||||
if ((timeval_ms()-then)>10)
|
||||
{
|
||||
LOG_ERROR("cp15 read operation timed out");
|
||||
return ERROR_FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef _DEBUG_INSTRUCTION_EXECUTION_
|
||||
LOG_DEBUG("addr: 0x%x value: %8.8x", address, *value);
|
||||
|
@ -228,8 +241,10 @@ int arm926ejs_cp15_write(target_t *target, uint32_t op1, uint32_t op2, uint32_t
|
|||
fields[3].in_value = NULL;
|
||||
|
||||
jtag_add_dr_scan(4, fields, jtag_get_end_state());
|
||||
/*TODO: add timeout*/
|
||||
do
|
||||
|
||||
long long then = timeval_ms();
|
||||
|
||||
for (;;)
|
||||
{
|
||||
/* rescan with NOP, to wait for the access to complete */
|
||||
access = 0;
|
||||
|
@ -239,7 +254,19 @@ int arm926ejs_cp15_write(target_t *target, uint32_t op1, uint32_t op2, uint32_t
|
|||
{
|
||||
return retval;
|
||||
}
|
||||
} while (buf_get_u32(&access, 0, 1) != 1);
|
||||
|
||||
if (buf_get_u32(&access, 0, 1) == 1)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
/* 10ms timeout */
|
||||
if ((timeval_ms()-then)>10)
|
||||
{
|
||||
LOG_ERROR("cp15 write operation timed out");
|
||||
return ERROR_FAIL;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef _DEBUG_INSTRUCTION_EXECUTION_
|
||||
LOG_DEBUG("addr: 0x%x value: %8.8x", address, value);
|
||||
|
|
Loading…
Reference in New Issue