Browse Source

do not use dynamically sized stack arrays, not compatible with embedded OS's

git-svn-id: svn://svn.berlios.de/openocd/trunk@2691 b42882b7-edfa-0310-969c-e2dbd0fdcd60
tags/v0.3.0-rc0
oharboe 15 years ago
parent
commit
0dcfbec7fb
1 changed files with 24 additions and 10 deletions
  1. +24
    -10
      src/target/arm11_dbgtap.c

+ 24
- 10
src/target/arm11_dbgtap.c View File

@@ -576,7 +576,15 @@ int arm11_run_instr_data_to_core_noack(arm11_common_t * arm11, uint32_t opcode,
arm11_setup_field(arm11, 1, NULL, NULL /*&Ready*/, chain5_fields + 1);
arm11_setup_field(arm11, 1, NULL, NULL, chain5_fields + 2);

uint8_t Readies[count + 1];
uint8_t *Readies;
int bytes = sizeof(*Readies)*(count + 1);
Readies = (uint8_t *) malloc(bytes);
if (Readies == NULL)
{
LOG_ERROR("Out of memory allocating %d bytes", bytes);
return ERROR_FAIL;
}

uint8_t * ReadyPos = Readies;

while (count--)
@@ -603,22 +611,28 @@ int arm11_run_instr_data_to_core_noack(arm11_common_t * arm11, uint32_t opcode,

arm11_add_dr_scan_vc(asizeof(chain5_fields), chain5_fields, TAP_DRPAUSE);

CHECK_RETVAL(jtag_execute_queue());
int retval = jtag_execute_queue();
if (retval == ERROR_OK)
{

size_t error_count = 0;
size_t error_count = 0;

for (size_t i = 0; i < asizeof(Readies); i++)
{
if (Readies[i] != 1)
for (size_t i = 0; i < asizeof(Readies); i++)
{
error_count++;
if (Readies[i] != 1)
{
error_count++;
}
}

if (error_count)
LOG_ERROR("Transfer errors " ZU, error_count);

}

if (error_count)
LOG_ERROR("Transfer errors " ZU, error_count);
free(Readies);

return ERROR_OK;
return retval;
}




Loading…
Cancel
Save