Remove whitespace that occurs after '('.
- Replace '([ \t]*' with '('. git-svn-id: svn://svn.berlios.de/openocd/trunk@2376 b42882b7-edfa-0310-969c-e2dbd0fdcd60
This commit is contained in:
parent
6d1d58a1fc
commit
f90d8fa45f
|
@ -93,7 +93,7 @@ struct tftpd_fileops fileops =
|
||||||
(int (*)(const char *, int))open,
|
(int (*)(const char *, int))open,
|
||||||
close,
|
close,
|
||||||
(int (*)(int, const void *, int))write,
|
(int (*)(int, const void *, int))write,
|
||||||
( int (*)(int, void *, int))read
|
(int (*)(int, void *, int))read
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -253,7 +253,7 @@ void copyfile(char *name2, char *name1);
|
||||||
void copydir(char *name, char *destdir);
|
void copydir(char *name, char *destdir);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
MTAB_ENTRY( romfs_mte1,
|
MTAB_ENTRY(romfs_mte1,
|
||||||
"/rom",
|
"/rom",
|
||||||
"romfs",
|
"romfs",
|
||||||
"",
|
"",
|
||||||
|
@ -1130,7 +1130,7 @@ static int tftpfs_fo_lseek(struct CYG_FILE_TAG *fp, off_t *apos, int whence);
|
||||||
// For simplicity we use _FILESYSTEM synchronization for all accesses since
|
// For simplicity we use _FILESYSTEM synchronization for all accesses since
|
||||||
// we should never block in any filesystem operations.
|
// we should never block in any filesystem operations.
|
||||||
#if 1
|
#if 1
|
||||||
FSTAB_ENTRY( tftpfs_fste, "tftpfs", 0,
|
FSTAB_ENTRY(tftpfs_fste, "tftpfs", 0,
|
||||||
CYG_SYNCMODE_NONE,
|
CYG_SYNCMODE_NONE,
|
||||||
tftpfs_mount,
|
tftpfs_mount,
|
||||||
tftpfs_umount,
|
tftpfs_umount,
|
||||||
|
@ -1151,7 +1151,7 @@ FSTAB_ENTRY( tftpfs_fste, "tftpfs", 0,
|
||||||
// mtab entry.
|
// mtab entry.
|
||||||
// This defines a single ROMFS loaded into ROM at the configured address
|
// This defines a single ROMFS loaded into ROM at the configured address
|
||||||
//
|
//
|
||||||
// MTAB_ENTRY( rom_mte, // structure name
|
// MTAB_ENTRY(rom_mte, // structure name
|
||||||
// "/rom", // mount point
|
// "/rom", // mount point
|
||||||
// "romfs", // FIlesystem type
|
// "romfs", // FIlesystem type
|
||||||
// "", // hardware device
|
// "", // hardware device
|
||||||
|
@ -1459,7 +1459,7 @@ static int logfs_fo_close(struct CYG_FILE_TAG *fp);
|
||||||
// This defines the entry in the filesystem table.
|
// This defines the entry in the filesystem table.
|
||||||
// For simplicity we use _FILESYSTEM synchronization for all accesses since
|
// For simplicity we use _FILESYSTEM synchronization for all accesses since
|
||||||
// we should never block in any filesystem operations.
|
// we should never block in any filesystem operations.
|
||||||
FSTAB_ENTRY( logfs_fste, "logfs", 0,
|
FSTAB_ENTRY(logfs_fste, "logfs", 0,
|
||||||
CYG_SYNCMODE_FILE_FILESYSTEM | CYG_SYNCMODE_IO_FILESYSTEM,
|
CYG_SYNCMODE_FILE_FILESYSTEM | CYG_SYNCMODE_IO_FILESYSTEM,
|
||||||
logfs_mount,
|
logfs_mount,
|
||||||
logfs_umount,
|
logfs_umount,
|
||||||
|
|
|
@ -187,7 +187,7 @@ static void at91sam7_read_clock_info(flash_bank_t *bank)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Prescaler adjust */
|
/* Prescaler adjust */
|
||||||
if ( (((mckr & PMC_MCKR_PRES) >> 2) == 7) || (tmp == 0) )
|
if ((((mckr & PMC_MCKR_PRES) >> 2) == 7) || (tmp == 0) )
|
||||||
{
|
{
|
||||||
at91sam7_info->mck_valid = 0;
|
at91sam7_info->mck_valid = 0;
|
||||||
at91sam7_info->mck_freq = 0;
|
at91sam7_info->mck_freq = 0;
|
||||||
|
@ -707,7 +707,7 @@ static int at91sam7_protect_check(struct flash_bank_s *bank)
|
||||||
at91sam7_info->num_lockbits_on = 0;
|
at91sam7_info->num_lockbits_on = 0;
|
||||||
for (lock_pos = 0; lock_pos < bank->num_sectors; lock_pos++)
|
for (lock_pos = 0; lock_pos < bank->num_sectors; lock_pos++)
|
||||||
{
|
{
|
||||||
if ( ((status >> (16 + lock_pos))&(0x0001)) == 1)
|
if (((status >> (16 + lock_pos))&(0x0001)) == 1)
|
||||||
{
|
{
|
||||||
at91sam7_info->num_lockbits_on++;
|
at91sam7_info->num_lockbits_on++;
|
||||||
bank->sectors[lock_pos].is_protected = 1;
|
bank->sectors[lock_pos].is_protected = 1;
|
||||||
|
@ -725,7 +725,7 @@ static int at91sam7_protect_check(struct flash_bank_s *bank)
|
||||||
at91sam7_info->num_nvmbits_on = 0;
|
at91sam7_info->num_nvmbits_on = 0;
|
||||||
for (gpnvm_pos = 0; gpnvm_pos < at91sam7_info->num_nvmbits; gpnvm_pos++)
|
for (gpnvm_pos = 0; gpnvm_pos < at91sam7_info->num_nvmbits; gpnvm_pos++)
|
||||||
{
|
{
|
||||||
if ( ((status >> (8 + gpnvm_pos))&(0x01)) == 1)
|
if (((status >> (8 + gpnvm_pos))&(0x01)) == 1)
|
||||||
{
|
{
|
||||||
at91sam7_info->num_nvmbits_on++;
|
at91sam7_info->num_nvmbits_on++;
|
||||||
}
|
}
|
||||||
|
@ -907,7 +907,7 @@ static int at91sam7_erase(struct flash_bank_s *bank, int first, int last)
|
||||||
buffer[pos] = 0xFF;
|
buffer[pos] = 0xFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( at91sam7_write(bank, buffer, bank->sectors[first].offset, nbytes) != ERROR_OK)
|
if (at91sam7_write(bank, buffer, bank->sectors[first].offset, nbytes) != ERROR_OK)
|
||||||
{
|
{
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
}
|
}
|
||||||
|
|
|
@ -323,7 +323,7 @@ static int avrf_probe(struct flash_bank_s *bank)
|
||||||
return ERROR_FAIL;
|
return ERROR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_INFO( "device id = 0x%08" PRIx32 "", device_id );
|
LOG_INFO("device id = 0x%08" PRIx32 "", device_id );
|
||||||
if (EXTRACT_MFG(device_id) != 0x1F)
|
if (EXTRACT_MFG(device_id) != 0x1F)
|
||||||
{
|
{
|
||||||
LOG_ERROR("0x%" PRIx32 " is invalid Manufacturer for avr, 0x%X is expected", EXTRACT_MFG(device_id), 0x1F);
|
LOG_ERROR("0x%" PRIx32 " is invalid Manufacturer for avr, 0x%X is expected", EXTRACT_MFG(device_id), 0x1F);
|
||||||
|
@ -402,7 +402,7 @@ static int avrf_info(struct flash_bank_s *bank, char *buf, int buf_size)
|
||||||
return ERROR_FAIL;
|
return ERROR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_INFO( "device id = 0x%08" PRIx32 "", device_id );
|
LOG_INFO("device id = 0x%08" PRIx32 "", device_id );
|
||||||
if (EXTRACT_MFG(device_id) != 0x1F)
|
if (EXTRACT_MFG(device_id) != 0x1F)
|
||||||
{
|
{
|
||||||
LOG_ERROR("0x%" PRIx32 " is invalid Manufacturer for avr, 0x%X is expected", EXTRACT_MFG(device_id), 0x1F);
|
LOG_ERROR("0x%" PRIx32 " is invalid Manufacturer for avr, 0x%X is expected", EXTRACT_MFG(device_id), 0x1F);
|
||||||
|
|
|
@ -1154,7 +1154,7 @@ static int cfi_intel_write_block(struct flash_bank_s *bank, uint8_t *buffer, uin
|
||||||
/* flash write code */
|
/* flash write code */
|
||||||
if (!cfi_info->write_algorithm)
|
if (!cfi_info->write_algorithm)
|
||||||
{
|
{
|
||||||
if ( target_code_size > sizeof(target_code) )
|
if (target_code_size > sizeof(target_code) )
|
||||||
{
|
{
|
||||||
LOG_WARNING("Internal error - target code buffer to small. Increase CFI_MAX_INTEL_CODESIZE and recompile.");
|
LOG_WARNING("Internal error - target code buffer to small. Increase CFI_MAX_INTEL_CODESIZE and recompile.");
|
||||||
return ERROR_TARGET_RESOURCE_NOT_AVAILABLE;
|
return ERROR_TARGET_RESOURCE_NOT_AVAILABLE;
|
||||||
|
|
|
@ -793,7 +793,7 @@ static int handle_flash_fill_command(struct command_context_s *cmd_ctx, char *cm
|
||||||
|
|
||||||
for (wrote = 0; wrote < (count*wordsize); wrote += cur_size)
|
for (wrote = 0; wrote < (count*wordsize); wrote += cur_size)
|
||||||
{
|
{
|
||||||
cur_size = MIN( (count*wordsize - wrote), sizeof(chunk) );
|
cur_size = MIN((count*wordsize - wrote), sizeof(chunk) );
|
||||||
flash_bank_t *bank;
|
flash_bank_t *bank;
|
||||||
bank = get_flash_bank_by_addr(target, address);
|
bank = get_flash_bank_by_addr(target, address);
|
||||||
if (bank == NULL)
|
if (bank == NULL)
|
||||||
|
@ -994,7 +994,7 @@ int flash_erase_address_range(target_t *target, uint32_t addr, uint32_t length)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( first == -1 || last == -1 )
|
if (first == -1 || last == -1 )
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
|
|
||||||
return flash_driver_erase(c, first, last);
|
return flash_driver_erase(c, first, last);
|
||||||
|
@ -1127,7 +1127,7 @@ int flash_write(target_t *target, image_t *image, uint32_t *written, int erase)
|
||||||
if (erase)
|
if (erase)
|
||||||
{
|
{
|
||||||
/* calculate and erase sectors */
|
/* calculate and erase sectors */
|
||||||
retval = flash_erase_address_range( target, run_address, run_size );
|
retval = flash_erase_address_range(target, run_address, run_size );
|
||||||
}
|
}
|
||||||
|
|
||||||
if (retval == ERROR_OK)
|
if (retval == ERROR_OK)
|
||||||
|
|
|
@ -114,10 +114,10 @@ non_cfi_t non_cfi_flashes[] = {
|
||||||
.num_erase_regions = 4,
|
.num_erase_regions = 4,
|
||||||
.erase_region_info =
|
.erase_region_info =
|
||||||
{
|
{
|
||||||
ERASE_REGION( 1, 16*KB),
|
ERASE_REGION(1, 16*KB),
|
||||||
ERASE_REGION( 2, 8*KB),
|
ERASE_REGION(2, 8*KB),
|
||||||
ERASE_REGION( 1, 32*KB),
|
ERASE_REGION(1, 32*KB),
|
||||||
ERASE_REGION( 7, 64*KB)
|
ERASE_REGION(7, 64*KB)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -131,10 +131,10 @@ non_cfi_t non_cfi_flashes[] = {
|
||||||
.num_erase_regions = 4,
|
.num_erase_regions = 4,
|
||||||
.erase_region_info =
|
.erase_region_info =
|
||||||
{
|
{
|
||||||
ERASE_REGION( 7, 64*KB),
|
ERASE_REGION(7, 64*KB),
|
||||||
ERASE_REGION( 1, 32*KB),
|
ERASE_REGION(1, 32*KB),
|
||||||
ERASE_REGION( 2, 8*KB),
|
ERASE_REGION(2, 8*KB),
|
||||||
ERASE_REGION( 1, 16*KB)
|
ERASE_REGION(1, 16*KB)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -236,10 +236,10 @@ non_cfi_t non_cfi_flashes[] = {
|
||||||
.num_erase_regions = 4,
|
.num_erase_regions = 4,
|
||||||
.erase_region_info =
|
.erase_region_info =
|
||||||
{
|
{
|
||||||
ERASE_REGION( 1, 16*KB),
|
ERASE_REGION(1, 16*KB),
|
||||||
ERASE_REGION( 2, 8*KB),
|
ERASE_REGION(2, 8*KB),
|
||||||
ERASE_REGION( 1, 32*KB),
|
ERASE_REGION(1, 32*KB),
|
||||||
ERASE_REGION( 7, 64*KB)
|
ERASE_REGION(7, 64*KB)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -253,10 +253,10 @@ non_cfi_t non_cfi_flashes[] = {
|
||||||
.num_erase_regions = 4,
|
.num_erase_regions = 4,
|
||||||
.erase_region_info =
|
.erase_region_info =
|
||||||
{
|
{
|
||||||
ERASE_REGION( 7, 64*KB),
|
ERASE_REGION(7, 64*KB),
|
||||||
ERASE_REGION( 1, 32*KB),
|
ERASE_REGION(1, 32*KB),
|
||||||
ERASE_REGION( 2, 8*KB),
|
ERASE_REGION(2, 8*KB),
|
||||||
ERASE_REGION( 1, 16*KB)
|
ERASE_REGION(1, 16*KB)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -270,9 +270,9 @@ non_cfi_t non_cfi_flashes[] = {
|
||||||
.num_erase_regions = 4,
|
.num_erase_regions = 4,
|
||||||
.erase_region_info =
|
.erase_region_info =
|
||||||
{
|
{
|
||||||
ERASE_REGION( 1, 16*KB),
|
ERASE_REGION(1, 16*KB),
|
||||||
ERASE_REGION( 2, 8*KB),
|
ERASE_REGION(2, 8*KB),
|
||||||
ERASE_REGION( 1, 32*KB),
|
ERASE_REGION(1, 32*KB),
|
||||||
ERASE_REGION(15, 64*KB)
|
ERASE_REGION(15, 64*KB)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -287,9 +287,9 @@ non_cfi_t non_cfi_flashes[] = {
|
||||||
.num_erase_regions = 4,
|
.num_erase_regions = 4,
|
||||||
.erase_region_info =
|
.erase_region_info =
|
||||||
{
|
{
|
||||||
ERASE_REGION( 1, 16*KB),
|
ERASE_REGION(1, 16*KB),
|
||||||
ERASE_REGION( 2, 8*KB),
|
ERASE_REGION(2, 8*KB),
|
||||||
ERASE_REGION( 1, 32*KB),
|
ERASE_REGION(1, 32*KB),
|
||||||
ERASE_REGION(15, 64*KB)
|
ERASE_REGION(15, 64*KB)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -304,9 +304,9 @@ non_cfi_t non_cfi_flashes[] = {
|
||||||
.num_erase_regions = 4,
|
.num_erase_regions = 4,
|
||||||
.erase_region_info =
|
.erase_region_info =
|
||||||
{
|
{
|
||||||
ERASE_REGION( 1, 16*KB),
|
ERASE_REGION(1, 16*KB),
|
||||||
ERASE_REGION( 2, 8*KB),
|
ERASE_REGION(2, 8*KB),
|
||||||
ERASE_REGION( 1, 32*KB),
|
ERASE_REGION(1, 32*KB),
|
||||||
ERASE_REGION(15, 64*KB)
|
ERASE_REGION(15, 64*KB)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -322,9 +322,9 @@ non_cfi_t non_cfi_flashes[] = {
|
||||||
.num_erase_regions = 4,
|
.num_erase_regions = 4,
|
||||||
.erase_region_info =
|
.erase_region_info =
|
||||||
{
|
{
|
||||||
ERASE_REGION( 1, 16*KB),
|
ERASE_REGION(1, 16*KB),
|
||||||
ERASE_REGION( 2, 8*KB),
|
ERASE_REGION(2, 8*KB),
|
||||||
ERASE_REGION( 1, 32*KB),
|
ERASE_REGION(1, 32*KB),
|
||||||
ERASE_REGION(31, 64*KB)
|
ERASE_REGION(31, 64*KB)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -340,9 +340,9 @@ non_cfi_t non_cfi_flashes[] = {
|
||||||
.erase_region_info =
|
.erase_region_info =
|
||||||
{
|
{
|
||||||
ERASE_REGION(31, 64*KB),
|
ERASE_REGION(31, 64*KB),
|
||||||
ERASE_REGION( 1, 32*KB),
|
ERASE_REGION(1, 32*KB),
|
||||||
ERASE_REGION( 2, 8*KB),
|
ERASE_REGION(2, 8*KB),
|
||||||
ERASE_REGION( 1, 16*KB)
|
ERASE_REGION(1, 16*KB)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -356,8 +356,8 @@ non_cfi_t non_cfi_flashes[] = {
|
||||||
.num_erase_regions = 3,
|
.num_erase_regions = 3,
|
||||||
.erase_region_info =
|
.erase_region_info =
|
||||||
{
|
{
|
||||||
ERASE_REGION( 8, 8*KB),
|
ERASE_REGION(8, 8*KB),
|
||||||
ERASE_REGION( 2, 32*KB),
|
ERASE_REGION(2, 32*KB),
|
||||||
ERASE_REGION(30, 64*KB)
|
ERASE_REGION(30, 64*KB)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -373,8 +373,8 @@ non_cfi_t non_cfi_flashes[] = {
|
||||||
.erase_region_info =
|
.erase_region_info =
|
||||||
{
|
{
|
||||||
ERASE_REGION(30, 64*KB),
|
ERASE_REGION(30, 64*KB),
|
||||||
ERASE_REGION( 2, 32*KB),
|
ERASE_REGION(2, 32*KB),
|
||||||
ERASE_REGION( 8, 8*KB)
|
ERASE_REGION(8, 8*KB)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -388,9 +388,9 @@ non_cfi_t non_cfi_flashes[] = {
|
||||||
.num_erase_regions = 4,
|
.num_erase_regions = 4,
|
||||||
.erase_region_info =
|
.erase_region_info =
|
||||||
{
|
{
|
||||||
ERASE_REGION( 1, 16*KB),
|
ERASE_REGION(1, 16*KB),
|
||||||
ERASE_REGION( 2, 8*KB),
|
ERASE_REGION(2, 8*KB),
|
||||||
ERASE_REGION( 1, 32*KB),
|
ERASE_REGION(1, 32*KB),
|
||||||
ERASE_REGION(15, 64*KB)
|
ERASE_REGION(15, 64*KB)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -189,7 +189,7 @@ int flash_verify(uint32 adr, unsigned int len, uint8 *src)
|
||||||
unsigned char *flash_ptr;
|
unsigned char *flash_ptr;
|
||||||
|
|
||||||
flash_ptr = (uint8 *)FLASH_AREA_ADDR + adr;
|
flash_ptr = (uint8 *)FLASH_AREA_ADDR + adr;
|
||||||
for ( ;len; len--) {
|
for (;len; len--) {
|
||||||
if (*(flash_ptr++)!=*(src++)) return FLASH_STAT_VERIFE;
|
if (*(flash_ptr++)!=*(src++)) return FLASH_STAT_VERIFE;
|
||||||
}
|
}
|
||||||
return FLASH_STAT_OK;
|
return FLASH_STAT_OK;
|
||||||
|
|
|
@ -229,9 +229,9 @@ static int pic32mx_erase(struct flash_bank_s *bank, int first, int last)
|
||||||
{
|
{
|
||||||
LOG_DEBUG("Erasing entire program flash");
|
LOG_DEBUG("Erasing entire program flash");
|
||||||
status = pic32mx_nvm_exec(bank, NVMCON_OP_PFM_ERASE, 50);
|
status = pic32mx_nvm_exec(bank, NVMCON_OP_PFM_ERASE, 50);
|
||||||
if ( status & NVMCON_NVMERR )
|
if (status & NVMCON_NVMERR )
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
if ( status & NVMCON_LVDERR )
|
if (status & NVMCON_LVDERR )
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
|
@ -245,9 +245,9 @@ static int pic32mx_erase(struct flash_bank_s *bank, int first, int last)
|
||||||
|
|
||||||
status = pic32mx_nvm_exec(bank, NVMCON_OP_PAGE_ERASE, 10);
|
status = pic32mx_nvm_exec(bank, NVMCON_OP_PAGE_ERASE, 10);
|
||||||
|
|
||||||
if ( status & NVMCON_NVMERR )
|
if (status & NVMCON_NVMERR )
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
if ( status & NVMCON_LVDERR )
|
if (status & NVMCON_LVDERR )
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
bank->sectors[i].is_erased = 1;
|
bank->sectors[i].is_erased = 1;
|
||||||
}
|
}
|
||||||
|
@ -313,7 +313,7 @@ static int pic32mx_protect(struct flash_bank_s *bank, int set, int first, int la
|
||||||
reg = (i / pic32mx_info->ppage_size) / 8;
|
reg = (i / pic32mx_info->ppage_size) / 8;
|
||||||
bit = (i / pic32mx_info->ppage_size) - (reg * 8);
|
bit = (i / pic32mx_info->ppage_size) - (reg * 8);
|
||||||
|
|
||||||
if ( set )
|
if (set )
|
||||||
prot_reg[reg] &= ~(1 << bit);
|
prot_reg[reg] &= ~(1 << bit);
|
||||||
else
|
else
|
||||||
prot_reg[reg] |= (1 << bit);
|
prot_reg[reg] |= (1 << bit);
|
||||||
|
@ -327,7 +327,7 @@ static int pic32mx_protect(struct flash_bank_s *bank, int set, int first, int la
|
||||||
reg = (i / pic32mx_info->ppage_size) / 8;
|
reg = (i / pic32mx_info->ppage_size) / 8;
|
||||||
bit = (i / pic32mx_info->ppage_size) - (reg * 8);
|
bit = (i / pic32mx_info->ppage_size) - (reg * 8);
|
||||||
|
|
||||||
if ( set )
|
if (set )
|
||||||
prot_reg[reg] &= ~(1 << bit);
|
prot_reg[reg] &= ~(1 << bit);
|
||||||
else
|
else
|
||||||
prot_reg[reg] |= (1 << bit);
|
prot_reg[reg] |= (1 << bit);
|
||||||
|
@ -434,12 +434,12 @@ static int pic32mx_write_block(struct flash_bank_s *bank, uint8_t *buffer, uint3
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
status = pic32mx_write_row(bank, address, source->address);
|
status = pic32mx_write_row(bank, address, source->address);
|
||||||
if ( status & NVMCON_NVMERR ) {
|
if (status & NVMCON_NVMERR ) {
|
||||||
LOG_ERROR("Flash write error NVMERR (status = 0x%08" PRIx32 ")", status);
|
LOG_ERROR("Flash write error NVMERR (status = 0x%08" PRIx32 ")", status);
|
||||||
retval = ERROR_FLASH_OPERATION_FAILED;
|
retval = ERROR_FLASH_OPERATION_FAILED;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if ( status & NVMCON_LVDERR ) {
|
if (status & NVMCON_LVDERR ) {
|
||||||
LOG_ERROR("Flash write error LVDERR (status = 0x%08" PRIx32 ")", status);
|
LOG_ERROR("Flash write error LVDERR (status = 0x%08" PRIx32 ")", status);
|
||||||
retval = ERROR_FLASH_OPERATION_FAILED;
|
retval = ERROR_FLASH_OPERATION_FAILED;
|
||||||
break;
|
break;
|
||||||
|
@ -458,12 +458,12 @@ static int pic32mx_write_block(struct flash_bank_s *bank, uint8_t *buffer, uint3
|
||||||
memcpy(&value, buffer, sizeof(uint32_t));
|
memcpy(&value, buffer, sizeof(uint32_t));
|
||||||
|
|
||||||
uint32_t status = pic32mx_write_word(bank, address, value);
|
uint32_t status = pic32mx_write_word(bank, address, value);
|
||||||
if ( status & NVMCON_NVMERR ) {
|
if (status & NVMCON_NVMERR ) {
|
||||||
LOG_ERROR("Flash write error NVMERR (status = 0x%08" PRIx32 ")", status);
|
LOG_ERROR("Flash write error NVMERR (status = 0x%08" PRIx32 ")", status);
|
||||||
retval = ERROR_FLASH_OPERATION_FAILED;
|
retval = ERROR_FLASH_OPERATION_FAILED;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if ( status & NVMCON_LVDERR ) {
|
if (status & NVMCON_LVDERR ) {
|
||||||
LOG_ERROR("Flash write error LVDERR (status = 0x%08" PRIx32 ")", status);
|
LOG_ERROR("Flash write error LVDERR (status = 0x%08" PRIx32 ")", status);
|
||||||
retval = ERROR_FLASH_OPERATION_FAILED;
|
retval = ERROR_FLASH_OPERATION_FAILED;
|
||||||
break;
|
break;
|
||||||
|
@ -564,9 +564,9 @@ static int pic32mx_write(struct flash_bank_s *bank, uint8_t *buffer, uint32_t of
|
||||||
memcpy(&value, buffer + bytes_written, sizeof(uint32_t));
|
memcpy(&value, buffer + bytes_written, sizeof(uint32_t));
|
||||||
|
|
||||||
status = pic32mx_write_word(bank, address, value);
|
status = pic32mx_write_word(bank, address, value);
|
||||||
if ( status & NVMCON_NVMERR )
|
if (status & NVMCON_NVMERR )
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
if ( status & NVMCON_LVDERR )
|
if (status & NVMCON_LVDERR )
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
|
|
||||||
bytes_written += 4;
|
bytes_written += 4;
|
||||||
|
@ -580,9 +580,9 @@ static int pic32mx_write(struct flash_bank_s *bank, uint8_t *buffer, uint32_t of
|
||||||
memcpy(&value, buffer + bytes_written, bytes_remaining);
|
memcpy(&value, buffer + bytes_written, bytes_remaining);
|
||||||
|
|
||||||
status = pic32mx_write_word(bank, address, value);
|
status = pic32mx_write_word(bank, address, value);
|
||||||
if ( status & NVMCON_NVMERR )
|
if (status & NVMCON_NVMERR )
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
if ( status & NVMCON_LVDERR )
|
if (status & NVMCON_LVDERR )
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -603,14 +603,14 @@ static int pic32mx_probe(struct flash_bank_s *bank)
|
||||||
pic32mx_info->probed = 0;
|
pic32mx_info->probed = 0;
|
||||||
|
|
||||||
device_id = ejtag_info->idcode;
|
device_id = ejtag_info->idcode;
|
||||||
LOG_INFO( "device id = 0x%08" PRIx32 " (manuf 0x%03x dev 0x%02x, ver 0x%03x)",
|
LOG_INFO("device id = 0x%08" PRIx32 " (manuf 0x%03x dev 0x%02x, ver 0x%03x)",
|
||||||
device_id,
|
device_id,
|
||||||
(unsigned)((device_id >> 1)&0x7ff),
|
(unsigned)((device_id >> 1)&0x7ff),
|
||||||
(unsigned)((device_id >> 12)&0xff),
|
(unsigned)((device_id >> 12)&0xff),
|
||||||
(unsigned)((device_id >> 20)&0xfff) );
|
(unsigned)((device_id >> 20)&0xfff) );
|
||||||
|
|
||||||
if (((device_id >> 1)&0x7ff) != PIC32MX_MANUF_ID) {
|
if (((device_id >> 1)&0x7ff) != PIC32MX_MANUF_ID) {
|
||||||
LOG_WARNING( "Cannot identify target as a PIC32MX family." );
|
LOG_WARNING("Cannot identify target as a PIC32MX family." );
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -626,7 +626,7 @@ static int pic32mx_probe(struct flash_bank_s *bank)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (pic32mx_devs[i].name == NULL) {
|
if (pic32mx_devs[i].name == NULL) {
|
||||||
LOG_WARNING( "Cannot identify target as a PIC32MX family." );
|
LOG_WARNING("Cannot identify target as a PIC32MX family." );
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -646,7 +646,7 @@ static int pic32mx_probe(struct flash_bank_s *bank)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
LOG_INFO( "flash size = %dkbytes", num_pages );
|
LOG_INFO("flash size = %dkbytes", num_pages );
|
||||||
|
|
||||||
/* calculate numbers of pages */
|
/* calculate numbers of pages */
|
||||||
num_pages /= (page_size / 1024);
|
num_pages /= (page_size / 1024);
|
||||||
|
@ -847,13 +847,13 @@ static int pic32mx_chip_erase(struct flash_bank_s *bank)
|
||||||
|
|
||||||
target_write_u32(target, PIC32MX_FLASH_CR, FLASH_LOCK);
|
target_write_u32(target, PIC32MX_FLASH_CR, FLASH_LOCK);
|
||||||
|
|
||||||
if ( status & FLASH_WRPRTERR )
|
if (status & FLASH_WRPRTERR )
|
||||||
{
|
{
|
||||||
LOG_ERROR("pic32mx device protected");
|
LOG_ERROR("pic32mx device protected");
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( status & FLASH_PGERR )
|
if (status & FLASH_PGERR )
|
||||||
{
|
{
|
||||||
LOG_ERROR("pic32mx device programming failed");
|
LOG_ERROR("pic32mx device programming failed");
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
|
@ -931,9 +931,9 @@ static int pic32mx_handle_pgm_word_command(struct command_context_s *cmd_ctx, ch
|
||||||
|
|
||||||
res = ERROR_OK;
|
res = ERROR_OK;
|
||||||
status = pic32mx_write_word(bank, address, value);
|
status = pic32mx_write_word(bank, address, value);
|
||||||
if ( status & NVMCON_NVMERR )
|
if (status & NVMCON_NVMERR )
|
||||||
res = ERROR_FLASH_OPERATION_FAILED;
|
res = ERROR_FLASH_OPERATION_FAILED;
|
||||||
if ( status & NVMCON_LVDERR )
|
if (status & NVMCON_LVDERR )
|
||||||
res = ERROR_FLASH_OPERATION_FAILED;
|
res = ERROR_FLASH_OPERATION_FAILED;
|
||||||
|
|
||||||
if (res == ERROR_OK)
|
if (res == ERROR_OK)
|
||||||
|
|
|
@ -182,9 +182,9 @@ static int stm32x_erase_options(struct flash_bank_s *bank)
|
||||||
|
|
||||||
status = stm32x_wait_status_busy(bank, 10);
|
status = stm32x_wait_status_busy(bank, 10);
|
||||||
|
|
||||||
if ( status & FLASH_WRPRTERR )
|
if (status & FLASH_WRPRTERR )
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
if ( status & FLASH_PGERR )
|
if (status & FLASH_PGERR )
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
|
|
||||||
/* clear readout protection and complementary option bytes
|
/* clear readout protection and complementary option bytes
|
||||||
|
@ -218,9 +218,9 @@ static int stm32x_write_options(struct flash_bank_s *bank)
|
||||||
|
|
||||||
status = stm32x_wait_status_busy(bank, 10);
|
status = stm32x_wait_status_busy(bank, 10);
|
||||||
|
|
||||||
if ( status & FLASH_WRPRTERR )
|
if (status & FLASH_WRPRTERR )
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
if ( status & FLASH_PGERR )
|
if (status & FLASH_PGERR )
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
|
|
||||||
/* write protection byte 1 */
|
/* write protection byte 1 */
|
||||||
|
@ -228,9 +228,9 @@ static int stm32x_write_options(struct flash_bank_s *bank)
|
||||||
|
|
||||||
status = stm32x_wait_status_busy(bank, 10);
|
status = stm32x_wait_status_busy(bank, 10);
|
||||||
|
|
||||||
if ( status & FLASH_WRPRTERR )
|
if (status & FLASH_WRPRTERR )
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
if ( status & FLASH_PGERR )
|
if (status & FLASH_PGERR )
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
|
|
||||||
/* write protection byte 2 */
|
/* write protection byte 2 */
|
||||||
|
@ -238,9 +238,9 @@ static int stm32x_write_options(struct flash_bank_s *bank)
|
||||||
|
|
||||||
status = stm32x_wait_status_busy(bank, 10);
|
status = stm32x_wait_status_busy(bank, 10);
|
||||||
|
|
||||||
if ( status & FLASH_WRPRTERR )
|
if (status & FLASH_WRPRTERR )
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
if ( status & FLASH_PGERR )
|
if (status & FLASH_PGERR )
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
|
|
||||||
/* write protection byte 3 */
|
/* write protection byte 3 */
|
||||||
|
@ -248,9 +248,9 @@ static int stm32x_write_options(struct flash_bank_s *bank)
|
||||||
|
|
||||||
status = stm32x_wait_status_busy(bank, 10);
|
status = stm32x_wait_status_busy(bank, 10);
|
||||||
|
|
||||||
if ( status & FLASH_WRPRTERR )
|
if (status & FLASH_WRPRTERR )
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
if ( status & FLASH_PGERR )
|
if (status & FLASH_PGERR )
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
|
|
||||||
/* write protection byte 4 */
|
/* write protection byte 4 */
|
||||||
|
@ -258,9 +258,9 @@ static int stm32x_write_options(struct flash_bank_s *bank)
|
||||||
|
|
||||||
status = stm32x_wait_status_busy(bank, 10);
|
status = stm32x_wait_status_busy(bank, 10);
|
||||||
|
|
||||||
if ( status & FLASH_WRPRTERR )
|
if (status & FLASH_WRPRTERR )
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
if ( status & FLASH_PGERR )
|
if (status & FLASH_PGERR )
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
|
|
||||||
/* write readout protection bit */
|
/* write readout protection bit */
|
||||||
|
@ -268,9 +268,9 @@ static int stm32x_write_options(struct flash_bank_s *bank)
|
||||||
|
|
||||||
status = stm32x_wait_status_busy(bank, 10);
|
status = stm32x_wait_status_busy(bank, 10);
|
||||||
|
|
||||||
if ( status & FLASH_WRPRTERR )
|
if (status & FLASH_WRPRTERR )
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
if ( status & FLASH_PGERR )
|
if (status & FLASH_PGERR )
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
|
|
||||||
target_write_u32(target, STM32_FLASH_CR, FLASH_LOCK);
|
target_write_u32(target, STM32_FLASH_CR, FLASH_LOCK);
|
||||||
|
@ -338,7 +338,7 @@ static int stm32x_protect_check(struct flash_bank_s *bank)
|
||||||
{
|
{
|
||||||
set = 1;
|
set = 1;
|
||||||
|
|
||||||
if ( protection & (1 << i))
|
if (protection & (1 << i))
|
||||||
set = 0;
|
set = 0;
|
||||||
|
|
||||||
for (s = 0; s < stm32x_info->ppage_size; s++)
|
for (s = 0; s < stm32x_info->ppage_size; s++)
|
||||||
|
@ -378,9 +378,9 @@ static int stm32x_erase(struct flash_bank_s *bank, int first, int last)
|
||||||
|
|
||||||
status = stm32x_wait_status_busy(bank, 10);
|
status = stm32x_wait_status_busy(bank, 10);
|
||||||
|
|
||||||
if ( status & FLASH_WRPRTERR )
|
if (status & FLASH_WRPRTERR )
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
if ( status & FLASH_PGERR )
|
if (status & FLASH_PGERR )
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
bank->sectors[i].is_erased = 1;
|
bank->sectors[i].is_erased = 1;
|
||||||
}
|
}
|
||||||
|
@ -445,7 +445,7 @@ static int stm32x_protect(struct flash_bank_s *bank, int set, int first, int las
|
||||||
reg = (i / stm32x_info->ppage_size) / 8;
|
reg = (i / stm32x_info->ppage_size) / 8;
|
||||||
bit = (i / stm32x_info->ppage_size) - (reg * 8);
|
bit = (i / stm32x_info->ppage_size) - (reg * 8);
|
||||||
|
|
||||||
if ( set )
|
if (set )
|
||||||
prot_reg[reg] &= ~(1 << bit);
|
prot_reg[reg] &= ~(1 << bit);
|
||||||
else
|
else
|
||||||
prot_reg[reg] |= (1 << bit);
|
prot_reg[reg] |= (1 << bit);
|
||||||
|
@ -459,7 +459,7 @@ static int stm32x_protect(struct flash_bank_s *bank, int set, int first, int las
|
||||||
reg = (i / stm32x_info->ppage_size) / 8;
|
reg = (i / stm32x_info->ppage_size) / 8;
|
||||||
bit = (i / stm32x_info->ppage_size) - (reg * 8);
|
bit = (i / stm32x_info->ppage_size) - (reg * 8);
|
||||||
|
|
||||||
if ( set )
|
if (set )
|
||||||
prot_reg[reg] &= ~(1 << bit);
|
prot_reg[reg] &= ~(1 << bit);
|
||||||
else
|
else
|
||||||
prot_reg[reg] |= (1 << bit);
|
prot_reg[reg] |= (1 << bit);
|
||||||
|
@ -658,12 +658,12 @@ static int stm32x_write(struct flash_bank_s *bank, uint8_t *buffer, uint32_t off
|
||||||
|
|
||||||
status = stm32x_wait_status_busy(bank, 5);
|
status = stm32x_wait_status_busy(bank, 5);
|
||||||
|
|
||||||
if ( status & FLASH_WRPRTERR )
|
if (status & FLASH_WRPRTERR )
|
||||||
{
|
{
|
||||||
LOG_ERROR("flash memory not erased before writing");
|
LOG_ERROR("flash memory not erased before writing");
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
}
|
}
|
||||||
if ( status & FLASH_PGERR )
|
if (status & FLASH_PGERR )
|
||||||
{
|
{
|
||||||
LOG_ERROR("flash memory write protected");
|
LOG_ERROR("flash memory write protected");
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
|
@ -684,12 +684,12 @@ static int stm32x_write(struct flash_bank_s *bank, uint8_t *buffer, uint32_t off
|
||||||
|
|
||||||
status = stm32x_wait_status_busy(bank, 5);
|
status = stm32x_wait_status_busy(bank, 5);
|
||||||
|
|
||||||
if ( status & FLASH_WRPRTERR )
|
if (status & FLASH_WRPRTERR )
|
||||||
{
|
{
|
||||||
LOG_ERROR("flash memory not erased before writing");
|
LOG_ERROR("flash memory not erased before writing");
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
}
|
}
|
||||||
if ( status & FLASH_PGERR )
|
if (status & FLASH_PGERR )
|
||||||
{
|
{
|
||||||
LOG_ERROR("flash memory write protected");
|
LOG_ERROR("flash memory write protected");
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
|
@ -720,7 +720,7 @@ static int stm32x_probe(struct flash_bank_s *bank)
|
||||||
|
|
||||||
/* read stm32 device id register */
|
/* read stm32 device id register */
|
||||||
target_read_u32(target, 0xE0042000, &device_id);
|
target_read_u32(target, 0xE0042000, &device_id);
|
||||||
LOG_INFO( "device id = 0x%08" PRIx32 "", device_id );
|
LOG_INFO("device id = 0x%08" PRIx32 "", device_id );
|
||||||
|
|
||||||
/* get flash size from target */
|
/* get flash size from target */
|
||||||
if (target_read_u16(target, 0x1FFFF7E0, &num_pages) != ERROR_OK)
|
if (target_read_u16(target, 0x1FFFF7E0, &num_pages) != ERROR_OK)
|
||||||
|
@ -740,7 +740,7 @@ static int stm32x_probe(struct flash_bank_s *bank)
|
||||||
if (num_pages == 0xffff)
|
if (num_pages == 0xffff)
|
||||||
{
|
{
|
||||||
/* number of sectors incorrect on revA */
|
/* number of sectors incorrect on revA */
|
||||||
LOG_WARNING( "STM32 flash size failed, probe inaccurate - assuming 128k flash" );
|
LOG_WARNING("STM32 flash size failed, probe inaccurate - assuming 128k flash" );
|
||||||
num_pages = 128;
|
num_pages = 128;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -755,7 +755,7 @@ static int stm32x_probe(struct flash_bank_s *bank)
|
||||||
if (num_pages == 0xffff)
|
if (num_pages == 0xffff)
|
||||||
{
|
{
|
||||||
/* number of sectors incorrect on revA */
|
/* number of sectors incorrect on revA */
|
||||||
LOG_WARNING( "STM32 flash size failed, probe inaccurate - assuming 32k flash" );
|
LOG_WARNING("STM32 flash size failed, probe inaccurate - assuming 32k flash" );
|
||||||
num_pages = 32;
|
num_pages = 32;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -770,7 +770,7 @@ static int stm32x_probe(struct flash_bank_s *bank)
|
||||||
if (num_pages == 0xffff)
|
if (num_pages == 0xffff)
|
||||||
{
|
{
|
||||||
/* number of sectors incorrect on revZ */
|
/* number of sectors incorrect on revZ */
|
||||||
LOG_WARNING( "STM32 flash size failed, probe inaccurate - assuming 512k flash" );
|
LOG_WARNING("STM32 flash size failed, probe inaccurate - assuming 512k flash" );
|
||||||
num_pages = 512;
|
num_pages = 512;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -785,17 +785,17 @@ static int stm32x_probe(struct flash_bank_s *bank)
|
||||||
if (num_pages == 0xffff)
|
if (num_pages == 0xffff)
|
||||||
{
|
{
|
||||||
/* number of sectors incorrect on revZ */
|
/* number of sectors incorrect on revZ */
|
||||||
LOG_WARNING( "STM32 flash size failed, probe inaccurate - assuming 256k flash" );
|
LOG_WARNING("STM32 flash size failed, probe inaccurate - assuming 256k flash" );
|
||||||
num_pages = 256;
|
num_pages = 256;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LOG_WARNING( "Cannot identify target as a STM32 family." );
|
LOG_WARNING("Cannot identify target as a STM32 family." );
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_INFO( "flash size = %dkbytes", num_pages );
|
LOG_INFO("flash size = %dkbytes", num_pages );
|
||||||
|
|
||||||
/* calculate numbers of pages */
|
/* calculate numbers of pages */
|
||||||
num_pages /= (page_size / 1024);
|
num_pages /= (page_size / 1024);
|
||||||
|
@ -1188,13 +1188,13 @@ static int stm32x_mass_erase(struct flash_bank_s *bank)
|
||||||
|
|
||||||
target_write_u32(target, STM32_FLASH_CR, FLASH_LOCK);
|
target_write_u32(target, STM32_FLASH_CR, FLASH_LOCK);
|
||||||
|
|
||||||
if ( status & FLASH_WRPRTERR )
|
if (status & FLASH_WRPRTERR )
|
||||||
{
|
{
|
||||||
LOG_ERROR("stm32x device protected");
|
LOG_ERROR("stm32x device protected");
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( status & FLASH_PGERR )
|
if (status & FLASH_PGERR )
|
||||||
{
|
{
|
||||||
LOG_ERROR("stm32x device programming failed");
|
LOG_ERROR("stm32x device programming failed");
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
|
|
|
@ -305,7 +305,7 @@ static int str9x_erase(struct flash_bank_s *bank, int first, int last)
|
||||||
{
|
{
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
if ( status & 0x80 )
|
if (status & 0x80 )
|
||||||
break;
|
break;
|
||||||
alive_sleep(1);
|
alive_sleep(1);
|
||||||
}
|
}
|
||||||
|
@ -327,7 +327,7 @@ static int str9x_erase(struct flash_bank_s *bank, int first, int last)
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( status & 0x22 )
|
if (status & 0x22 )
|
||||||
{
|
{
|
||||||
LOG_ERROR("error erasing flash bank, status: 0x%x", status);
|
LOG_ERROR("error erasing flash bank, status: 0x%x", status);
|
||||||
return ERROR_FLASH_OPERATION_FAILED;
|
return ERROR_FLASH_OPERATION_FAILED;
|
||||||
|
@ -365,7 +365,7 @@ static int str9x_protect(struct flash_bank_s *bank,
|
||||||
adr = bank->base + bank->sectors[i].offset;
|
adr = bank->base + bank->sectors[i].offset;
|
||||||
|
|
||||||
target_write_u16(target, adr, 0x60);
|
target_write_u16(target, adr, 0x60);
|
||||||
if ( set )
|
if (set )
|
||||||
target_write_u16(target, adr, 0x01);
|
target_write_u16(target, adr, 0x01);
|
||||||
else
|
else
|
||||||
target_write_u16(target, adr, 0xD0);
|
target_write_u16(target, adr, 0xD0);
|
||||||
|
@ -578,7 +578,7 @@ static int str9x_write(struct flash_bank_s *bank,
|
||||||
for (timeout = 0; timeout < 1000; timeout++)
|
for (timeout = 0; timeout < 1000; timeout++)
|
||||||
{
|
{
|
||||||
target_read_u8(target, bank_adr, &status);
|
target_read_u8(target, bank_adr, &status);
|
||||||
if ( status & 0x80 )
|
if (status & 0x80 )
|
||||||
break;
|
break;
|
||||||
alive_sleep(1);
|
alive_sleep(1);
|
||||||
}
|
}
|
||||||
|
@ -627,7 +627,7 @@ static int str9x_write(struct flash_bank_s *bank,
|
||||||
for (timeout = 0; timeout < 1000; timeout++)
|
for (timeout = 0; timeout < 1000; timeout++)
|
||||||
{
|
{
|
||||||
target_read_u8(target, bank_adr, &status);
|
target_read_u8(target, bank_adr, &status);
|
||||||
if ( status & 0x80 )
|
if (status & 0x80 )
|
||||||
break;
|
break;
|
||||||
alive_sleep(1);
|
alive_sleep(1);
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,7 +101,7 @@ static int str9xpec_register_commands(struct command_context_s *cmd_ctx)
|
||||||
|
|
||||||
int str9xpec_set_instr(jtag_tap_t *tap, uint32_t new_instr, tap_state_t end_state)
|
int str9xpec_set_instr(jtag_tap_t *tap, uint32_t new_instr, tap_state_t end_state)
|
||||||
{
|
{
|
||||||
if ( tap == NULL ){
|
if (tap == NULL ){
|
||||||
return ERROR_TARGET_INVALID;
|
return ERROR_TARGET_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -325,7 +325,7 @@ static int str9xpec_flash_bank_command(struct command_context_s *cmd_ctx, char *
|
||||||
arm7_9 = armv4_5->arch_info;
|
arm7_9 = armv4_5->arch_info;
|
||||||
jtag_info = &arm7_9->jtag_info;
|
jtag_info = &arm7_9->jtag_info;
|
||||||
|
|
||||||
str9xpec_info->tap = jtag_tap_by_position( jtag_info->tap->abs_chain_position - 1);
|
str9xpec_info->tap = jtag_tap_by_position(jtag_info->tap->abs_chain_position - 1);
|
||||||
str9xpec_info->isc_enable = 0;
|
str9xpec_info->isc_enable = 0;
|
||||||
|
|
||||||
str9xpec_build_block_list(bank);
|
str9xpec_build_block_list(bank);
|
||||||
|
@ -349,7 +349,7 @@ static int str9xpec_blank_check(struct flash_bank_s *bank, int first, int last)
|
||||||
tap = str9xpec_info->tap;
|
tap = str9xpec_info->tap;
|
||||||
|
|
||||||
if (!str9xpec_info->isc_enable) {
|
if (!str9xpec_info->isc_enable) {
|
||||||
str9xpec_isc_enable( bank );
|
str9xpec_isc_enable(bank );
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!str9xpec_info->isc_enable) {
|
if (!str9xpec_info->isc_enable) {
|
||||||
|
@ -438,7 +438,7 @@ static int str9xpec_erase_area(struct flash_bank_s *bank, int first, int last)
|
||||||
tap = str9xpec_info->tap;
|
tap = str9xpec_info->tap;
|
||||||
|
|
||||||
if (!str9xpec_info->isc_enable) {
|
if (!str9xpec_info->isc_enable) {
|
||||||
str9xpec_isc_enable( bank );
|
str9xpec_isc_enable(bank );
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!str9xpec_info->isc_enable) {
|
if (!str9xpec_info->isc_enable) {
|
||||||
|
@ -518,7 +518,7 @@ static int str9xpec_lock_device(struct flash_bank_s *bank)
|
||||||
tap = str9xpec_info->tap;
|
tap = str9xpec_info->tap;
|
||||||
|
|
||||||
if (!str9xpec_info->isc_enable) {
|
if (!str9xpec_info->isc_enable) {
|
||||||
str9xpec_isc_enable( bank );
|
str9xpec_isc_enable(bank );
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!str9xpec_info->isc_enable) {
|
if (!str9xpec_info->isc_enable) {
|
||||||
|
@ -575,7 +575,7 @@ static int str9xpec_protect(struct flash_bank_s *bank, int set, int first, int l
|
||||||
/* last bank: 0xFF signals a full device protect */
|
/* last bank: 0xFF signals a full device protect */
|
||||||
if (last == 0xFF)
|
if (last == 0xFF)
|
||||||
{
|
{
|
||||||
if ( set )
|
if (set )
|
||||||
{
|
{
|
||||||
status = str9xpec_lock_device(bank);
|
status = str9xpec_lock_device(bank);
|
||||||
}
|
}
|
||||||
|
@ -589,7 +589,7 @@ static int str9xpec_protect(struct flash_bank_s *bank, int set, int first, int l
|
||||||
{
|
{
|
||||||
for (i = first; i <= last; i++)
|
for (i = first; i <= last; i++)
|
||||||
{
|
{
|
||||||
if ( set )
|
if (set )
|
||||||
buf_set_u32(str9xpec_info->options, str9xpec_info->sector_bits[i], 1, 1);
|
buf_set_u32(str9xpec_info->options, str9xpec_info->sector_bits[i], 1, 1);
|
||||||
else
|
else
|
||||||
buf_set_u32(str9xpec_info->options, str9xpec_info->sector_bits[i], 1, 0);
|
buf_set_u32(str9xpec_info->options, str9xpec_info->sector_bits[i], 1, 0);
|
||||||
|
@ -919,13 +919,13 @@ static int str9xpec_write_options(struct flash_bank_s *bank)
|
||||||
tap = str9xpec_info->tap;
|
tap = str9xpec_info->tap;
|
||||||
|
|
||||||
/* erase config options first */
|
/* erase config options first */
|
||||||
status = str9xpec_erase_area( bank, 0xFE, 0xFE );
|
status = str9xpec_erase_area(bank, 0xFE, 0xFE );
|
||||||
|
|
||||||
if ((status & ISC_STATUS_ERROR) != STR9XPEC_ISC_SUCCESS)
|
if ((status & ISC_STATUS_ERROR) != STR9XPEC_ISC_SUCCESS)
|
||||||
return status;
|
return status;
|
||||||
|
|
||||||
if (!str9xpec_info->isc_enable) {
|
if (!str9xpec_info->isc_enable) {
|
||||||
str9xpec_isc_enable( bank );
|
str9xpec_isc_enable(bank );
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!str9xpec_info->isc_enable) {
|
if (!str9xpec_info->isc_enable) {
|
||||||
|
|
|
@ -348,8 +348,8 @@ int unregister_command(command_context_t *context, char *name)
|
||||||
|
|
||||||
void command_output_text(command_context_t *context, const char *data)
|
void command_output_text(command_context_t *context, const char *data)
|
||||||
{
|
{
|
||||||
if ( context && context->output_handler && data ){
|
if (context && context->output_handler && data ){
|
||||||
context->output_handler( context, data );
|
context->output_handler(context, data );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -704,7 +704,7 @@ command_context_t* command_init()
|
||||||
Jim_RegisterCoreCommands(interp);
|
Jim_RegisterCoreCommands(interp);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined( _MSC_VER )
|
#if defined(_MSC_VER )
|
||||||
/* WinXX - is generic, the forward
|
/* WinXX - is generic, the forward
|
||||||
* looking problem is this:
|
* looking problem is this:
|
||||||
*
|
*
|
||||||
|
@ -713,18 +713,18 @@ command_context_t* command_init()
|
||||||
* "winxx" is generic.
|
* "winxx" is generic.
|
||||||
*/
|
*/
|
||||||
HostOs = "winxx";
|
HostOs = "winxx";
|
||||||
#elif defined( __LINUX__)
|
#elif defined(__LINUX__)
|
||||||
HostOs = "linux";
|
HostOs = "linux";
|
||||||
#elif defined( __DARWIN__ )
|
#elif defined(__DARWIN__ )
|
||||||
HostOs = "darwin";
|
HostOs = "darwin";
|
||||||
#elif defined( __CYGWIN__ )
|
#elif defined(__CYGWIN__ )
|
||||||
HostOs = "cygwin";
|
HostOs = "cygwin";
|
||||||
#elif defined( __MINGW32__ )
|
#elif defined(__MINGW32__ )
|
||||||
HostOs = "mingw32";
|
HostOs = "mingw32";
|
||||||
#else
|
#else
|
||||||
HostOs = "other";
|
HostOs = "other";
|
||||||
#endif
|
#endif
|
||||||
Jim_SetGlobalVariableStr( interp, "ocd_HOSTOS", Jim_NewStringObj( interp, HostOs , strlen(HostOs)) );
|
Jim_SetGlobalVariableStr(interp, "ocd_HOSTOS", Jim_NewStringObj(interp, HostOs , strlen(HostOs)) );
|
||||||
|
|
||||||
Jim_CreateCommand(interp, "ocd_find", jim_find, NULL, NULL);
|
Jim_CreateCommand(interp, "ocd_find", jim_find, NULL, NULL);
|
||||||
Jim_CreateCommand(interp, "echo", jim_echo, NULL, NULL);
|
Jim_CreateCommand(interp, "echo", jim_echo, NULL, NULL);
|
||||||
|
|
|
@ -182,7 +182,7 @@ int fileio_read_u32(fileio_t *fileio, uint32_t *data)
|
||||||
|
|
||||||
static inline int fileio_local_fgets(fileio_t *fileio, uint32_t size, char *buffer)
|
static inline int fileio_local_fgets(fileio_t *fileio, uint32_t size, char *buffer)
|
||||||
{
|
{
|
||||||
if ( fgets(buffer, size, fileio->file) == NULL)
|
if (fgets(buffer, size, fileio->file) == NULL)
|
||||||
return ERROR_FILEIO_OPERATION_FAILED;
|
return ERROR_FILEIO_OPERATION_FAILED;
|
||||||
|
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
|
|
|
@ -325,34 +325,34 @@ void copyfile(char *name2, char *name1)
|
||||||
|
|
||||||
fd1 = open(name1, O_WRONLY | O_CREAT, 0664);
|
fd1 = open(name1, O_WRONLY | O_CREAT, 0664);
|
||||||
if (fd1 < 0)
|
if (fd1 < 0)
|
||||||
SHOW_RESULT( open, fd1 );
|
SHOW_RESULT(open, fd1 );
|
||||||
|
|
||||||
fd2 = open(name2, O_RDONLY);
|
fd2 = open(name2, O_RDONLY);
|
||||||
if (fd2 < 0)
|
if (fd2 < 0)
|
||||||
SHOW_RESULT( open, fd2 );
|
SHOW_RESULT(open, fd2 );
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
done = read(fd2, buf, IOSIZE );
|
done = read(fd2, buf, IOSIZE );
|
||||||
if (done < 0)
|
if (done < 0)
|
||||||
{
|
{
|
||||||
SHOW_RESULT( read, done );
|
SHOW_RESULT(read, done );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( done == 0 ) break;
|
if (done == 0 ) break;
|
||||||
|
|
||||||
wrote = write(fd1, buf, done);
|
wrote = write(fd1, buf, done);
|
||||||
if ( wrote != done ) SHOW_RESULT( write, wrote );
|
if (wrote != done ) SHOW_RESULT(write, wrote );
|
||||||
|
|
||||||
if ( wrote != done ) break;
|
if (wrote != done ) break;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = close(fd1);
|
err = close(fd1);
|
||||||
if ( err < 0 ) SHOW_RESULT( close, err );
|
if (err < 0 ) SHOW_RESULT(close, err );
|
||||||
|
|
||||||
err = close(fd2);
|
err = close(fd2);
|
||||||
if ( err < 0 ) SHOW_RESULT( close, err );
|
if (err < 0 ) SHOW_RESULT(close, err );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -372,7 +372,7 @@ void copydir(char *name, char *destdir)
|
||||||
}
|
}
|
||||||
|
|
||||||
dirp = opendir(name);
|
dirp = opendir(name);
|
||||||
if ( dirp == NULL ) SHOW_RESULT( opendir, -1 );
|
if (dirp == NULL ) SHOW_RESULT(opendir, -1 );
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
|
@ -421,7 +421,7 @@ void copydir(char *name, char *destdir)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = closedir(dirp);
|
err = closedir(dirp);
|
||||||
if ( err < 0 ) SHOW_RESULT( stat, err );
|
if (err < 0 ) SHOW_RESULT(stat, err );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -298,7 +298,7 @@ int Jim_ProcessEvents(Jim_Interp *interp, int flags)
|
||||||
JimGetTime(&now_sec, &now_ms);
|
JimGetTime(&now_sec, &now_ms);
|
||||||
tvp = &tv;
|
tvp = &tv;
|
||||||
dt = 1000 * (shortest->when_sec - now_sec);
|
dt = 1000 * (shortest->when_sec - now_sec);
|
||||||
dt += ( shortest->when_ms - now_ms);
|
dt += (shortest->when_ms - now_ms);
|
||||||
if (dt < 0) {
|
if (dt < 0) {
|
||||||
dt = 1;
|
dt = 1;
|
||||||
}
|
}
|
||||||
|
@ -498,7 +498,7 @@ static int JimELAfterCommand(Jim_Interp *interp, int argc,
|
||||||
int tlen ;
|
int tlen ;
|
||||||
jim_wide remain = 0;
|
jim_wide remain = 0;
|
||||||
const char *tok = Jim_GetString(argv[2], &tlen);
|
const char *tok = Jim_GetString(argv[2], &tlen);
|
||||||
if ( sscanf(tok,"after#%lld",&id) == 1) {
|
if (sscanf(tok,"after#%lld",&id) == 1) {
|
||||||
remain = Jim_DeleteTimeHandler(interp, id);
|
remain = Jim_DeleteTimeHandler(interp, id);
|
||||||
if (remain > -2) {
|
if (remain > -2) {
|
||||||
Jim_SetResult(interp, Jim_NewIntObj(interp, remain));
|
Jim_SetResult(interp, Jim_NewIntObj(interp, remain));
|
||||||
|
|
366
src/helper/jim.c
366
src/helper/jim.c
|
@ -117,25 +117,25 @@ static Jim_HashTableType *getJimVariablesHashTableType(void);
|
||||||
* ---------------------------------------------------------------------------*/
|
* ---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
jim_vasprintf( const char *fmt, va_list ap )
|
jim_vasprintf(const char *fmt, va_list ap )
|
||||||
{
|
{
|
||||||
#ifndef HAVE_VASPRINTF
|
#ifndef HAVE_VASPRINTF
|
||||||
/* yucky way */
|
/* yucky way */
|
||||||
static char buf[2048];
|
static char buf[2048];
|
||||||
vsnprintf( buf, sizeof(buf), fmt, ap );
|
vsnprintf(buf, sizeof(buf), fmt, ap );
|
||||||
/* garentee termination */
|
/* garentee termination */
|
||||||
buf[sizeof(buf)-1] = 0;
|
buf[sizeof(buf)-1] = 0;
|
||||||
#else
|
#else
|
||||||
char *buf;
|
char *buf;
|
||||||
int result;
|
int result;
|
||||||
result = vasprintf( &buf, fmt, ap );
|
result = vasprintf(&buf, fmt, ap );
|
||||||
if (result < 0) exit(-1);
|
if (result < 0) exit(-1);
|
||||||
#endif
|
#endif
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
jim_vasprintf_done( void *buf )
|
jim_vasprintf_done(void *buf )
|
||||||
{
|
{
|
||||||
#ifndef HAVE_VASPRINTF
|
#ifndef HAVE_VASPRINTF
|
||||||
(void)(buf);
|
(void)(buf);
|
||||||
|
@ -438,7 +438,7 @@ int Jim_StringToIndex(const char *str, int *intPtr)
|
||||||
char *endptr;
|
char *endptr;
|
||||||
|
|
||||||
*intPtr = strtol(str, &endptr, 10);
|
*intPtr = strtol(str, &endptr, 10);
|
||||||
if ( (str[0] == '\0') || (str == endptr) )
|
if ((str[0] == '\0') || (str == endptr) )
|
||||||
return JIM_ERR;
|
return JIM_ERR;
|
||||||
if (endptr[0] != '\0') {
|
if (endptr[0] != '\0') {
|
||||||
while (*endptr) {
|
while (*endptr) {
|
||||||
|
@ -544,10 +544,10 @@ void Jim_Panic(Jim_Interp *interp, const char *fmt, ...)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* This may actually crash... we do it last */
|
/* This may actually crash... we do it last */
|
||||||
if ( interp && interp->cookie_stderr ){
|
if (interp && interp->cookie_stderr ){
|
||||||
Jim_fprintf( interp, interp->cookie_stderr, JIM_NL "JIM INTERPRETER PANIC: ");
|
Jim_fprintf(interp, interp->cookie_stderr, JIM_NL "JIM INTERPRETER PANIC: ");
|
||||||
Jim_vfprintf( interp, interp->cookie_stderr, fmt, ap );
|
Jim_vfprintf(interp, interp->cookie_stderr, fmt, ap );
|
||||||
Jim_fprintf( interp, interp->cookie_stderr, JIM_NL JIM_NL );
|
Jim_fprintf(interp, interp->cookie_stderr, JIM_NL JIM_NL );
|
||||||
}
|
}
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
@ -2055,17 +2055,17 @@ void Jim_AppendString(Jim_Interp *interp, Jim_Obj *objPtr, const char *str,
|
||||||
StringAppendString(objPtr, str, len);
|
StringAppendString(objPtr, str, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Jim_AppendString_sprintf( Jim_Interp *interp, Jim_Obj *objPtr, const char *fmt, ... )
|
void Jim_AppendString_sprintf(Jim_Interp *interp, Jim_Obj *objPtr, const char *fmt, ... )
|
||||||
{
|
{
|
||||||
char *buf;
|
char *buf;
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
va_start( ap, fmt );
|
va_start(ap, fmt );
|
||||||
buf = jim_vasprintf( fmt, ap );
|
buf = jim_vasprintf(fmt, ap );
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
|
|
||||||
if ( buf ){
|
if (buf ){
|
||||||
Jim_AppendString( interp, objPtr, buf, -1 );
|
Jim_AppendString(interp, objPtr, buf, -1 );
|
||||||
jim_vasprintf_done(buf);
|
jim_vasprintf_done(buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2283,10 +2283,10 @@ static Jim_Obj *Jim_FormatString_Inner(Jim_Interp *interp, Jim_Obj *fmtObjPtr,
|
||||||
haveprec = 0;
|
haveprec = 0;
|
||||||
prec = -1; /* not found yet */
|
prec = -1; /* not found yet */
|
||||||
next_fmt:
|
next_fmt:
|
||||||
if ( fmtLen <= 0 ){
|
if (fmtLen <= 0 ){
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
switch ( *fmt ){
|
switch (*fmt ){
|
||||||
/* terminals */
|
/* terminals */
|
||||||
case 'b': /* binary - not all printfs() do this */
|
case 'b': /* binary - not all printfs() do this */
|
||||||
case 's': /* string */
|
case 's': /* string */
|
||||||
|
@ -2341,11 +2341,11 @@ static Jim_Obj *Jim_FormatString_Inner(Jim_Interp *interp, Jim_Obj *fmtObjPtr,
|
||||||
case '8':
|
case '8':
|
||||||
case '9':
|
case '9':
|
||||||
accum = 0;
|
accum = 0;
|
||||||
while ( isdigit(*fmt) && (fmtLen > 0) ){
|
while (isdigit(*fmt) && (fmtLen > 0) ){
|
||||||
accum = (accum * 10) + (*fmt - '0');
|
accum = (accum * 10) + (*fmt - '0');
|
||||||
fmt++; fmtLen--;
|
fmt++; fmtLen--;
|
||||||
}
|
}
|
||||||
if ( inprec ){
|
if (inprec ){
|
||||||
haveprec = 1;
|
haveprec = 1;
|
||||||
prec = accum;
|
prec = accum;
|
||||||
} else {
|
} else {
|
||||||
|
@ -2356,24 +2356,24 @@ static Jim_Obj *Jim_FormatString_Inner(Jim_Interp *interp, Jim_Obj *fmtObjPtr,
|
||||||
/* suck up the next item as an integer */
|
/* suck up the next item as an integer */
|
||||||
fmt++; fmtLen--;
|
fmt++; fmtLen--;
|
||||||
objc--;
|
objc--;
|
||||||
if ( objc <= 0 ){
|
if (objc <= 0 ){
|
||||||
goto not_enough_args;
|
goto not_enough_args;
|
||||||
}
|
}
|
||||||
if ( Jim_GetWide(interp,objv[0],&wideValue )== JIM_ERR ){
|
if (Jim_GetWide(interp,objv[0],&wideValue )== JIM_ERR ){
|
||||||
Jim_FreeNewObj(interp, resObjPtr );
|
Jim_FreeNewObj(interp, resObjPtr );
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if ( inprec ){
|
if (inprec ){
|
||||||
haveprec = 1;
|
haveprec = 1;
|
||||||
prec = wideValue;
|
prec = wideValue;
|
||||||
if ( prec < 0 ){
|
if (prec < 0 ){
|
||||||
/* man 3 printf says */
|
/* man 3 printf says */
|
||||||
/* if prec is negative, it is zero */
|
/* if prec is negative, it is zero */
|
||||||
prec = 0;
|
prec = 0;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
width = wideValue;
|
width = wideValue;
|
||||||
if ( width < 0 ){
|
if (width < 0 ){
|
||||||
ljust = 1;
|
ljust = 1;
|
||||||
width = -width;
|
width = -width;
|
||||||
}
|
}
|
||||||
|
@ -2402,33 +2402,33 @@ static Jim_Obj *Jim_FormatString_Inner(Jim_Interp *interp, Jim_Obj *fmtObjPtr,
|
||||||
*/
|
*/
|
||||||
cp = fmt_str;
|
cp = fmt_str;
|
||||||
*cp++ = '%';
|
*cp++ = '%';
|
||||||
if ( altfm ){
|
if (altfm ){
|
||||||
*cp++ = '#';
|
*cp++ = '#';
|
||||||
}
|
}
|
||||||
if ( forceplus ){
|
if (forceplus ){
|
||||||
*cp++ = '+';
|
*cp++ = '+';
|
||||||
} else if ( spad ){
|
} else if (spad ){
|
||||||
/* PLUS overrides */
|
/* PLUS overrides */
|
||||||
*cp++ = ' ';
|
*cp++ = ' ';
|
||||||
}
|
}
|
||||||
if ( ljust ){
|
if (ljust ){
|
||||||
*cp++ = '-';
|
*cp++ = '-';
|
||||||
}
|
}
|
||||||
if ( zpad ){
|
if (zpad ){
|
||||||
*cp++ = '0';
|
*cp++ = '0';
|
||||||
}
|
}
|
||||||
if ( width > 0 ){
|
if (width > 0 ){
|
||||||
sprintf( cp, "%d", width );
|
sprintf(cp, "%d", width );
|
||||||
/* skip ahead */
|
/* skip ahead */
|
||||||
cp = strchr(cp,0);
|
cp = strchr(cp,0);
|
||||||
}
|
}
|
||||||
/* did we find a period? */
|
/* did we find a period? */
|
||||||
if ( inprec ){
|
if (inprec ){
|
||||||
/* then add it */
|
/* then add it */
|
||||||
*cp++ = '.';
|
*cp++ = '.';
|
||||||
/* did something occur after the period? */
|
/* did something occur after the period? */
|
||||||
if ( haveprec ){
|
if (haveprec ){
|
||||||
sprintf( cp, "%d", prec );
|
sprintf(cp, "%d", prec );
|
||||||
}
|
}
|
||||||
cp = strchr(cp,0);
|
cp = strchr(cp,0);
|
||||||
}
|
}
|
||||||
|
@ -2441,7 +2441,7 @@ static Jim_Obj *Jim_FormatString_Inner(Jim_Interp *interp, Jim_Obj *fmtObjPtr,
|
||||||
*cp++ = 's';
|
*cp++ = 's';
|
||||||
*cp = 0;
|
*cp = 0;
|
||||||
/* BUG: we do not handled embeded NULLs */
|
/* BUG: we do not handled embeded NULLs */
|
||||||
snprintf( sprintf_buf, JIM_MAX_FMT, fmt_str, Jim_GetString( objv[0], NULL ));
|
snprintf(sprintf_buf, JIM_MAX_FMT, fmt_str, Jim_GetString(objv[0], NULL ));
|
||||||
break;
|
break;
|
||||||
case 'c':
|
case 'c':
|
||||||
*cp++ = 'c';
|
*cp++ = 'c';
|
||||||
|
@ -2451,7 +2451,7 @@ static Jim_Obj *Jim_FormatString_Inner(Jim_Interp *interp, Jim_Obj *fmtObjPtr,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
c = (char) wideValue;
|
c = (char) wideValue;
|
||||||
snprintf( sprintf_buf, JIM_MAX_FMT, fmt_str, c );
|
snprintf(sprintf_buf, JIM_MAX_FMT, fmt_str, c );
|
||||||
break;
|
break;
|
||||||
case 'f':
|
case 'f':
|
||||||
case 'F':
|
case 'F':
|
||||||
|
@ -2461,11 +2461,11 @@ static Jim_Obj *Jim_FormatString_Inner(Jim_Interp *interp, Jim_Obj *fmtObjPtr,
|
||||||
case 'E':
|
case 'E':
|
||||||
*cp++ = *fmt;
|
*cp++ = *fmt;
|
||||||
*cp = 0;
|
*cp = 0;
|
||||||
if ( Jim_GetDouble( interp, objv[0], &doubleValue ) == JIM_ERR ){
|
if (Jim_GetDouble(interp, objv[0], &doubleValue ) == JIM_ERR ){
|
||||||
Jim_FreeNewObj( interp, resObjPtr );
|
Jim_FreeNewObj(interp, resObjPtr );
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
snprintf( sprintf_buf, JIM_MAX_FMT, fmt_str, doubleValue );
|
snprintf(sprintf_buf, JIM_MAX_FMT, fmt_str, doubleValue );
|
||||||
break;
|
break;
|
||||||
case 'b':
|
case 'b':
|
||||||
case 'd':
|
case 'd':
|
||||||
|
@ -2475,7 +2475,7 @@ static Jim_Obj *Jim_FormatString_Inner(Jim_Interp *interp, Jim_Obj *fmtObjPtr,
|
||||||
case 'x':
|
case 'x':
|
||||||
case 'X':
|
case 'X':
|
||||||
/* jim widevaluse are 64bit */
|
/* jim widevaluse are 64bit */
|
||||||
if ( sizeof(jim_wide) == sizeof(long long) ){
|
if (sizeof(jim_wide) == sizeof(long long) ){
|
||||||
*cp++ = 'l';
|
*cp++ = 'l';
|
||||||
*cp++ = 'l';
|
*cp++ = 'l';
|
||||||
} else {
|
} else {
|
||||||
|
@ -2509,7 +2509,7 @@ static Jim_Obj *Jim_FormatString_Inner(Jim_Interp *interp, Jim_Obj *fmtObjPtr,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
sprintf_buf[ JIM_MAX_FMT - 1] = 0;
|
sprintf_buf[ JIM_MAX_FMT - 1] = 0;
|
||||||
Jim_AppendString( interp, resObjPtr, sprintf_buf, strlen(sprintf_buf) );
|
Jim_AppendString(interp, resObjPtr, sprintf_buf, strlen(sprintf_buf) );
|
||||||
/* next obj */
|
/* next obj */
|
||||||
objv++;
|
objv++;
|
||||||
fmt++;
|
fmt++;
|
||||||
|
@ -2626,13 +2626,13 @@ int Jim_GetNvp(Jim_Interp *interp,
|
||||||
Jim_Nvp *n;
|
Jim_Nvp *n;
|
||||||
int e;
|
int e;
|
||||||
|
|
||||||
e = Jim_Nvp_name2value_obj( interp, nvp_table, objPtr, &n );
|
e = Jim_Nvp_name2value_obj(interp, nvp_table, objPtr, &n );
|
||||||
if ( e == JIM_ERR ){
|
if (e == JIM_ERR ){
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Success? found? */
|
/* Success? found? */
|
||||||
if ( n->name ){
|
if (n->name ){
|
||||||
/* remove const */
|
/* remove const */
|
||||||
*result = (Jim_Nvp *)n;
|
*result = (Jim_Nvp *)n;
|
||||||
return JIM_OK;
|
return JIM_OK;
|
||||||
|
@ -4424,11 +4424,11 @@ Jim_Interp *Jim_CreateInterp(void)
|
||||||
i->cookie_stdin = stdin;
|
i->cookie_stdin = stdin;
|
||||||
i->cookie_stdout = stdout;
|
i->cookie_stdout = stdout;
|
||||||
i->cookie_stderr = stderr;
|
i->cookie_stderr = stderr;
|
||||||
i->cb_fwrite = ((size_t (*)( const void *, size_t, size_t, void *))(fwrite));
|
i->cb_fwrite = ((size_t (*)(const void *, size_t, size_t, void *))(fwrite));
|
||||||
i->cb_fread = ((size_t (*)( void *, size_t, size_t, void *))(fread));
|
i->cb_fread = ((size_t (*)(void *, size_t, size_t, void *))(fread));
|
||||||
i->cb_vfprintf = ((int (*)( void *, const char *fmt, va_list ))(vfprintf));
|
i->cb_vfprintf = ((int (*)(void *, const char *fmt, va_list ))(vfprintf));
|
||||||
i->cb_fflush = ((int (*)( void *))(fflush));
|
i->cb_fflush = ((int (*)(void *))(fflush));
|
||||||
i->cb_fgets = ((char * (*)( char *, int, void *))(fgets));
|
i->cb_fgets = ((char * (*)(char *, int, void *))(fgets));
|
||||||
|
|
||||||
/* Note that we can create objects only after the
|
/* Note that we can create objects only after the
|
||||||
* interpreter liveList and freeList pointers are
|
* interpreter liveList and freeList pointers are
|
||||||
|
@ -4498,23 +4498,23 @@ void Jim_FreeInterp(Jim_Interp *i)
|
||||||
if (i->liveList != NULL) {
|
if (i->liveList != NULL) {
|
||||||
Jim_Obj *objPtr = i->liveList;
|
Jim_Obj *objPtr = i->liveList;
|
||||||
|
|
||||||
Jim_fprintf( i, i->cookie_stdout,JIM_NL "-------------------------------------" JIM_NL);
|
Jim_fprintf(i, i->cookie_stdout,JIM_NL "-------------------------------------" JIM_NL);
|
||||||
Jim_fprintf( i, i->cookie_stdout,"Objects still in the free list:" JIM_NL);
|
Jim_fprintf(i, i->cookie_stdout,"Objects still in the free list:" JIM_NL);
|
||||||
while (objPtr) {
|
while (objPtr) {
|
||||||
const char *type = objPtr->typePtr ?
|
const char *type = objPtr->typePtr ?
|
||||||
objPtr->typePtr->name : "";
|
objPtr->typePtr->name : "";
|
||||||
Jim_fprintf( i, i->cookie_stdout,"%p \"%-10s\": '%.20s' (refCount: %d)" JIM_NL,
|
Jim_fprintf(i, i->cookie_stdout,"%p \"%-10s\": '%.20s' (refCount: %d)" JIM_NL,
|
||||||
objPtr, type,
|
objPtr, type,
|
||||||
objPtr->bytes ? objPtr->bytes
|
objPtr->bytes ? objPtr->bytes
|
||||||
: "(null)", objPtr->refCount);
|
: "(null)", objPtr->refCount);
|
||||||
if (objPtr->typePtr == &sourceObjType) {
|
if (objPtr->typePtr == &sourceObjType) {
|
||||||
Jim_fprintf( i, i->cookie_stdout, "FILE %s LINE %d" JIM_NL,
|
Jim_fprintf(i, i->cookie_stdout, "FILE %s LINE %d" JIM_NL,
|
||||||
objPtr->internalRep.sourceValue.fileName,
|
objPtr->internalRep.sourceValue.fileName,
|
||||||
objPtr->internalRep.sourceValue.lineNumber);
|
objPtr->internalRep.sourceValue.lineNumber);
|
||||||
}
|
}
|
||||||
objPtr = objPtr->nextObjPtr;
|
objPtr = objPtr->nextObjPtr;
|
||||||
}
|
}
|
||||||
Jim_fprintf( i, i->cookie_stdout, "-------------------------------------" JIM_NL JIM_NL);
|
Jim_fprintf(i, i->cookie_stdout, "-------------------------------------" JIM_NL JIM_NL);
|
||||||
Jim_Panic(i,"Live list non empty freeing the interpreter! Leak?");
|
Jim_Panic(i,"Live list non empty freeing the interpreter! Leak?");
|
||||||
}
|
}
|
||||||
/* Free all the freed objects. */
|
/* Free all the freed objects. */
|
||||||
|
@ -6352,7 +6352,7 @@ int JimParseExprNumber(struct JimParserCtx *pc)
|
||||||
if (*pc->p == '-') {
|
if (*pc->p == '-') {
|
||||||
pc->p++; pc->len--;
|
pc->p++; pc->len--;
|
||||||
}
|
}
|
||||||
while ( isdigit((int)*pc->p)
|
while (isdigit((int)*pc->p)
|
||||||
|| (allowhex && isxdigit((int)*pc->p) )
|
|| (allowhex && isxdigit((int)*pc->p) )
|
||||||
|| (allowdot && *pc->p == '.')
|
|| (allowdot && *pc->p == '.')
|
||||||
|| (pc->p-pc->tstart == 1 && *pc->tstart == '0' &&
|
|| (pc->p-pc->tstart == 1 && *pc->tstart == '0' &&
|
||||||
|
@ -8684,7 +8684,7 @@ int Jim_EvalObj(Jim_Interp *interp, Jim_Obj *scriptObjPtr)
|
||||||
Jim_Obj **eargv = NULL;
|
Jim_Obj **eargv = NULL;
|
||||||
|
|
||||||
for (j = 0; j < argc; j++) {
|
for (j = 0; j < argc; j++) {
|
||||||
Jim_ExpandArgument( interp, &eargv, &eargc,
|
Jim_ExpandArgument(interp, &eargv, &eargc,
|
||||||
ecs[j] < 0, argv[j]);
|
ecs[j] < 0, argv[j]);
|
||||||
}
|
}
|
||||||
if (argv != sargv)
|
if (argv != sargv)
|
||||||
|
@ -8894,8 +8894,8 @@ int Jim_Eval_Named(Jim_Interp *interp, const char *script, const char *filename,
|
||||||
Jim_IncrRefCount(scriptObjPtr);
|
Jim_IncrRefCount(scriptObjPtr);
|
||||||
|
|
||||||
|
|
||||||
if ( filename ){
|
if (filename ){
|
||||||
JimSetSourceInfo( interp, scriptObjPtr, filename, lineno );
|
JimSetSourceInfo(interp, scriptObjPtr, filename, lineno );
|
||||||
}
|
}
|
||||||
|
|
||||||
retval = Jim_EvalObj(interp, scriptObjPtr);
|
retval = Jim_EvalObj(interp, scriptObjPtr);
|
||||||
|
@ -8905,7 +8905,7 @@ int Jim_Eval_Named(Jim_Interp *interp, const char *script, const char *filename,
|
||||||
|
|
||||||
int Jim_Eval(Jim_Interp *interp, const char *script)
|
int Jim_Eval(Jim_Interp *interp, const char *script)
|
||||||
{
|
{
|
||||||
return Jim_Eval_Named( interp, script, NULL, 0 );
|
return Jim_Eval_Named(interp, script, NULL, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -8942,7 +8942,7 @@ int Jim_EvalObjBackground(Jim_Interp *interp, Jim_Obj *scriptObjPtr)
|
||||||
Jim_IncrRefCount(objv[1]);
|
Jim_IncrRefCount(objv[1]);
|
||||||
if (Jim_EvalObjVector(interp, 2, objv) != JIM_OK) {
|
if (Jim_EvalObjVector(interp, 2, objv) != JIM_OK) {
|
||||||
/* Report the error to stderr. */
|
/* Report the error to stderr. */
|
||||||
Jim_fprintf( interp, interp->cookie_stderr, "Background error:" JIM_NL);
|
Jim_fprintf(interp, interp->cookie_stderr, "Background error:" JIM_NL);
|
||||||
Jim_PrintErrorMessage(interp);
|
Jim_PrintErrorMessage(interp);
|
||||||
}
|
}
|
||||||
Jim_DecrRefCount(interp, objv[0]);
|
Jim_DecrRefCount(interp, objv[0]);
|
||||||
|
@ -8963,7 +8963,7 @@ int Jim_EvalFile(Jim_Interp *interp, const char *filename)
|
||||||
const int cwd_len = 2048;
|
const int cwd_len = 2048;
|
||||||
char *cwd = malloc(cwd_len);
|
char *cwd = malloc(cwd_len);
|
||||||
Jim_SetResult(interp, Jim_NewEmptyStringObj(interp));
|
Jim_SetResult(interp, Jim_NewEmptyStringObj(interp));
|
||||||
if (!getcwd( cwd, cwd_len )) strcpy(cwd, "unknown");
|
if (!getcwd(cwd, cwd_len )) strcpy(cwd, "unknown");
|
||||||
Jim_AppendStrings(interp, Jim_GetResult(interp),
|
Jim_AppendStrings(interp, Jim_GetResult(interp),
|
||||||
"Error loading script \"", filename, "\"",
|
"Error loading script \"", filename, "\"",
|
||||||
" cwd: ", cwd,
|
" cwd: ", cwd,
|
||||||
|
@ -9523,7 +9523,7 @@ static int Jim_PutsCoreCommand(Jim_Interp *interp, int argc,
|
||||||
}
|
}
|
||||||
str = Jim_GetString(argv[1], &len);
|
str = Jim_GetString(argv[1], &len);
|
||||||
Jim_fwrite(interp, str, 1, len, interp->cookie_stdout);
|
Jim_fwrite(interp, str, 1, len, interp->cookie_stdout);
|
||||||
if (!nonewline) Jim_fprintf( interp, interp->cookie_stdout, JIM_NL);
|
if (!nonewline) Jim_fprintf(interp, interp->cookie_stdout, JIM_NL);
|
||||||
return JIM_OK;
|
return JIM_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12320,16 +12320,16 @@ void Jim_PrintErrorMessage(Jim_Interp *interp)
|
||||||
JIM_NONE);
|
JIM_NONE);
|
||||||
line = Jim_GetString(objPtr, NULL);
|
line = Jim_GetString(objPtr, NULL);
|
||||||
if (*proc) {
|
if (*proc) {
|
||||||
Jim_fprintf( interp, interp->cookie_stderr,
|
Jim_fprintf(interp, interp->cookie_stderr,
|
||||||
"in procedure '%s' ", proc);
|
"in procedure '%s' ", proc);
|
||||||
}
|
}
|
||||||
if (*file) {
|
if (*file) {
|
||||||
Jim_fprintf( interp, interp->cookie_stderr,
|
Jim_fprintf(interp, interp->cookie_stderr,
|
||||||
"called at file \"%s\", line %s",
|
"called at file \"%s\", line %s",
|
||||||
file, line);
|
file, line);
|
||||||
}
|
}
|
||||||
if (*file || *proc) {
|
if (*file || *proc) {
|
||||||
Jim_fprintf( interp, interp->cookie_stderr, JIM_NL);
|
Jim_fprintf(interp, interp->cookie_stderr, JIM_NL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12357,8 +12357,8 @@ int Jim_InteractivePrompt(Jim_Interp *interp)
|
||||||
else
|
else
|
||||||
Jim_fprintf(interp,interp->cookie_stdout, "[%d] . ", retcode);
|
Jim_fprintf(interp,interp->cookie_stdout, "[%d] . ", retcode);
|
||||||
} else
|
} else
|
||||||
Jim_fprintf( interp, interp->cookie_stdout, ". ");
|
Jim_fprintf(interp, interp->cookie_stdout, ". ");
|
||||||
Jim_fflush( interp, interp->cookie_stdout);
|
Jim_fflush(interp, interp->cookie_stdout);
|
||||||
scriptObjPtr = Jim_NewStringObj(interp, "", 0);
|
scriptObjPtr = Jim_NewStringObj(interp, "", 0);
|
||||||
Jim_IncrRefCount(scriptObjPtr);
|
Jim_IncrRefCount(scriptObjPtr);
|
||||||
while (1) {
|
while (1) {
|
||||||
|
@ -12366,7 +12366,7 @@ int Jim_InteractivePrompt(Jim_Interp *interp)
|
||||||
char state;
|
char state;
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
if ( Jim_fgets(interp, buf, 1024, interp->cookie_stdin) == NULL) {
|
if (Jim_fgets(interp, buf, 1024, interp->cookie_stdin) == NULL) {
|
||||||
Jim_DecrRefCount(interp, scriptObjPtr);
|
Jim_DecrRefCount(interp, scriptObjPtr);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
@ -12374,8 +12374,8 @@ int Jim_InteractivePrompt(Jim_Interp *interp)
|
||||||
str = Jim_GetString(scriptObjPtr, &len);
|
str = Jim_GetString(scriptObjPtr, &len);
|
||||||
if (Jim_ScriptIsComplete(str, len, &state))
|
if (Jim_ScriptIsComplete(str, len, &state))
|
||||||
break;
|
break;
|
||||||
Jim_fprintf( interp, interp->cookie_stdout, "%c> ", state);
|
Jim_fprintf(interp, interp->cookie_stdout, "%c> ", state);
|
||||||
Jim_fflush( interp, interp->cookie_stdout);
|
Jim_fflush(interp, interp->cookie_stdout);
|
||||||
}
|
}
|
||||||
retcode = Jim_EvalObj(interp, scriptObjPtr);
|
retcode = Jim_EvalObj(interp, scriptObjPtr);
|
||||||
Jim_DecrRefCount(interp, scriptObjPtr);
|
Jim_DecrRefCount(interp, scriptObjPtr);
|
||||||
|
@ -12386,8 +12386,8 @@ int Jim_InteractivePrompt(Jim_Interp *interp)
|
||||||
exit(Jim_GetExitCode(interp));
|
exit(Jim_GetExitCode(interp));
|
||||||
} else {
|
} else {
|
||||||
if (reslen) {
|
if (reslen) {
|
||||||
Jim_fwrite( interp, result, 1, reslen, interp->cookie_stdout);
|
Jim_fwrite(interp, result, 1, reslen, interp->cookie_stdout);
|
||||||
Jim_fprintf( interp,interp->cookie_stdout, JIM_NL);
|
Jim_fprintf(interp,interp->cookie_stdout, JIM_NL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12399,66 +12399,66 @@ out:
|
||||||
* Jim's idea of STDIO..
|
* Jim's idea of STDIO..
|
||||||
* ---------------------------------------------------------------------------*/
|
* ---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
int Jim_fprintf( Jim_Interp *interp, void *cookie, const char *fmt, ... )
|
int Jim_fprintf(Jim_Interp *interp, void *cookie, const char *fmt, ... )
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
va_list ap;
|
va_list ap;
|
||||||
va_start(ap,fmt);
|
va_start(ap,fmt);
|
||||||
r = Jim_vfprintf( interp, cookie, fmt,ap );
|
r = Jim_vfprintf(interp, cookie, fmt,ap );
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Jim_vfprintf( Jim_Interp *interp, void *cookie, const char *fmt, va_list ap )
|
int Jim_vfprintf(Jim_Interp *interp, void *cookie, const char *fmt, va_list ap )
|
||||||
{
|
{
|
||||||
if ( (interp == NULL) || (interp->cb_vfprintf == NULL) ){
|
if ((interp == NULL) || (interp->cb_vfprintf == NULL) ){
|
||||||
errno = ENOTSUP;
|
errno = ENOTSUP;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return (*(interp->cb_vfprintf))( cookie, fmt, ap );
|
return (*(interp->cb_vfprintf))(cookie, fmt, ap );
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t Jim_fwrite( Jim_Interp *interp, const void *ptr, size_t size, size_t n, void *cookie )
|
size_t Jim_fwrite(Jim_Interp *interp, const void *ptr, size_t size, size_t n, void *cookie )
|
||||||
{
|
{
|
||||||
if ( (interp == NULL) || (interp->cb_fwrite == NULL) ){
|
if ((interp == NULL) || (interp->cb_fwrite == NULL) ){
|
||||||
errno = ENOTSUP;
|
errno = ENOTSUP;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return (*(interp->cb_fwrite))( ptr, size, n, cookie);
|
return (*(interp->cb_fwrite))(ptr, size, n, cookie);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t Jim_fread( Jim_Interp *interp, void *ptr, size_t size, size_t n, void *cookie )
|
size_t Jim_fread(Jim_Interp *interp, void *ptr, size_t size, size_t n, void *cookie )
|
||||||
{
|
{
|
||||||
if ( (interp == NULL) || (interp->cb_fread == NULL) ){
|
if ((interp == NULL) || (interp->cb_fread == NULL) ){
|
||||||
errno = ENOTSUP;
|
errno = ENOTSUP;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return (*(interp->cb_fread))( ptr, size, n, cookie);
|
return (*(interp->cb_fread))(ptr, size, n, cookie);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Jim_fflush( Jim_Interp *interp, void *cookie )
|
int Jim_fflush(Jim_Interp *interp, void *cookie )
|
||||||
{
|
{
|
||||||
if ( (interp == NULL) || (interp->cb_fflush == NULL) ){
|
if ((interp == NULL) || (interp->cb_fflush == NULL) ){
|
||||||
/* pretend all is well */
|
/* pretend all is well */
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return (*(interp->cb_fflush))( cookie );
|
return (*(interp->cb_fflush))(cookie );
|
||||||
}
|
}
|
||||||
|
|
||||||
char* Jim_fgets( Jim_Interp *interp, char *s, int size, void *cookie )
|
char* Jim_fgets(Jim_Interp *interp, char *s, int size, void *cookie )
|
||||||
{
|
{
|
||||||
if ( (interp == NULL) || (interp->cb_fgets == NULL) ){
|
if ((interp == NULL) || (interp->cb_fgets == NULL) ){
|
||||||
errno = ENOTSUP;
|
errno = ENOTSUP;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
return (*(interp->cb_fgets))( s, size, cookie );
|
return (*(interp->cb_fgets))(s, size, cookie );
|
||||||
}
|
}
|
||||||
Jim_Nvp *
|
Jim_Nvp *
|
||||||
Jim_Nvp_name2value_simple( const Jim_Nvp *p, const char *name )
|
Jim_Nvp_name2value_simple(const Jim_Nvp *p, const char *name )
|
||||||
{
|
{
|
||||||
while ( p->name ){
|
while (p->name ){
|
||||||
if ( 0 == strcmp( name, p->name ) ){
|
if (0 == strcmp(name, p->name ) ){
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
p++;
|
p++;
|
||||||
|
@ -12467,10 +12467,10 @@ Jim_Nvp_name2value_simple( const Jim_Nvp *p, const char *name )
|
||||||
}
|
}
|
||||||
|
|
||||||
Jim_Nvp *
|
Jim_Nvp *
|
||||||
Jim_Nvp_name2value_nocase_simple( const Jim_Nvp *p, const char *name )
|
Jim_Nvp_name2value_nocase_simple(const Jim_Nvp *p, const char *name )
|
||||||
{
|
{
|
||||||
while ( p->name ){
|
while (p->name ){
|
||||||
if ( 0 == strcasecmp( name, p->name ) ){
|
if (0 == strcasecmp(name, p->name ) ){
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
p++;
|
p++;
|
||||||
|
@ -12479,32 +12479,32 @@ Jim_Nvp_name2value_nocase_simple( const Jim_Nvp *p, const char *name )
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
Jim_Nvp_name2value_obj( Jim_Interp *interp,
|
Jim_Nvp_name2value_obj(Jim_Interp *interp,
|
||||||
const Jim_Nvp *p,
|
const Jim_Nvp *p,
|
||||||
Jim_Obj *o,
|
Jim_Obj *o,
|
||||||
Jim_Nvp **result )
|
Jim_Nvp **result )
|
||||||
{
|
{
|
||||||
return Jim_Nvp_name2value( interp, p, Jim_GetString( o, NULL ), result );
|
return Jim_Nvp_name2value(interp, p, Jim_GetString(o, NULL ), result );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
Jim_Nvp_name2value( Jim_Interp *interp,
|
Jim_Nvp_name2value(Jim_Interp *interp,
|
||||||
const Jim_Nvp *_p,
|
const Jim_Nvp *_p,
|
||||||
const char *name,
|
const char *name,
|
||||||
Jim_Nvp **result)
|
Jim_Nvp **result)
|
||||||
{
|
{
|
||||||
const Jim_Nvp *p;
|
const Jim_Nvp *p;
|
||||||
|
|
||||||
p = Jim_Nvp_name2value_simple( _p, name );
|
p = Jim_Nvp_name2value_simple(_p, name );
|
||||||
|
|
||||||
/* result */
|
/* result */
|
||||||
if ( result ){
|
if (result ){
|
||||||
*result = (Jim_Nvp *)(p);
|
*result = (Jim_Nvp *)(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* found? */
|
/* found? */
|
||||||
if ( p->name ){
|
if (p->name ){
|
||||||
return JIM_OK;
|
return JIM_OK;
|
||||||
} else {
|
} else {
|
||||||
return JIM_ERR;
|
return JIM_ERR;
|
||||||
|
@ -12512,23 +12512,23 @@ Jim_Nvp_name2value( Jim_Interp *interp,
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
Jim_Nvp_name2value_obj_nocase( Jim_Interp *interp, const Jim_Nvp *p, Jim_Obj *o, Jim_Nvp **puthere )
|
Jim_Nvp_name2value_obj_nocase(Jim_Interp *interp, const Jim_Nvp *p, Jim_Obj *o, Jim_Nvp **puthere )
|
||||||
{
|
{
|
||||||
return Jim_Nvp_name2value_nocase( interp, p, Jim_GetString( o, NULL ), puthere );
|
return Jim_Nvp_name2value_nocase(interp, p, Jim_GetString(o, NULL ), puthere );
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
Jim_Nvp_name2value_nocase( Jim_Interp *interp, const Jim_Nvp *_p, const char *name, Jim_Nvp **puthere )
|
Jim_Nvp_name2value_nocase(Jim_Interp *interp, const Jim_Nvp *_p, const char *name, Jim_Nvp **puthere )
|
||||||
{
|
{
|
||||||
const Jim_Nvp *p;
|
const Jim_Nvp *p;
|
||||||
|
|
||||||
p = Jim_Nvp_name2value_nocase_simple( _p, name );
|
p = Jim_Nvp_name2value_nocase_simple(_p, name );
|
||||||
|
|
||||||
if ( puthere ){
|
if (puthere ){
|
||||||
*puthere = (Jim_Nvp *)(p);
|
*puthere = (Jim_Nvp *)(p);
|
||||||
}
|
}
|
||||||
/* found */
|
/* found */
|
||||||
if ( p->name ){
|
if (p->name ){
|
||||||
return JIM_OK;
|
return JIM_OK;
|
||||||
} else {
|
} else {
|
||||||
return JIM_ERR;
|
return JIM_ERR;
|
||||||
|
@ -12537,24 +12537,24 @@ Jim_Nvp_name2value_nocase( Jim_Interp *interp, const Jim_Nvp *_p, const char *na
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
Jim_Nvp_value2name_obj( Jim_Interp *interp, const Jim_Nvp *p, Jim_Obj *o, Jim_Nvp **result )
|
Jim_Nvp_value2name_obj(Jim_Interp *interp, const Jim_Nvp *p, Jim_Obj *o, Jim_Nvp **result )
|
||||||
{
|
{
|
||||||
int e;;
|
int e;;
|
||||||
jim_wide w;
|
jim_wide w;
|
||||||
|
|
||||||
e = Jim_GetWide( interp, o, &w );
|
e = Jim_GetWide(interp, o, &w );
|
||||||
if ( e != JIM_OK ){
|
if (e != JIM_OK ){
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Jim_Nvp_value2name( interp, p, w, result );
|
return Jim_Nvp_value2name(interp, p, w, result );
|
||||||
}
|
}
|
||||||
|
|
||||||
Jim_Nvp *
|
Jim_Nvp *
|
||||||
Jim_Nvp_value2name_simple( const Jim_Nvp *p, int value )
|
Jim_Nvp_value2name_simple(const Jim_Nvp *p, int value )
|
||||||
{
|
{
|
||||||
while ( p->name ){
|
while (p->name ){
|
||||||
if ( value == p->value ){
|
if (value == p->value ){
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
p++;
|
p++;
|
||||||
|
@ -12564,17 +12564,17 @@ Jim_Nvp_value2name_simple( const Jim_Nvp *p, int value )
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
Jim_Nvp_value2name( Jim_Interp *interp, const Jim_Nvp *_p, int value, Jim_Nvp **result )
|
Jim_Nvp_value2name(Jim_Interp *interp, const Jim_Nvp *_p, int value, Jim_Nvp **result )
|
||||||
{
|
{
|
||||||
const Jim_Nvp *p;
|
const Jim_Nvp *p;
|
||||||
|
|
||||||
p = Jim_Nvp_value2name_simple( _p, value );
|
p = Jim_Nvp_value2name_simple(_p, value );
|
||||||
|
|
||||||
if ( result ){
|
if (result ){
|
||||||
*result = (Jim_Nvp *)(p);
|
*result = (Jim_Nvp *)(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( p->name ){
|
if (p->name ){
|
||||||
return JIM_OK;
|
return JIM_OK;
|
||||||
} else {
|
} else {
|
||||||
return JIM_ERR;
|
return JIM_ERR;
|
||||||
|
@ -12583,9 +12583,9 @@ Jim_Nvp_value2name( Jim_Interp *interp, const Jim_Nvp *_p, int value, Jim_Nvp **
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
Jim_GetOpt_Setup( Jim_GetOptInfo *p, Jim_Interp *interp, int argc, Jim_Obj * const * argv)
|
Jim_GetOpt_Setup(Jim_GetOptInfo *p, Jim_Interp *interp, int argc, Jim_Obj * const * argv)
|
||||||
{
|
{
|
||||||
memset( p, 0, sizeof(*p) );
|
memset(p, 0, sizeof(*p) );
|
||||||
p->interp = interp;
|
p->interp = interp;
|
||||||
p->argc = argc;
|
p->argc = argc;
|
||||||
p->argv = argv;
|
p->argv = argv;
|
||||||
|
@ -12594,37 +12594,37 @@ Jim_GetOpt_Setup( Jim_GetOptInfo *p, Jim_Interp *interp, int argc, Jim_Obj * con
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Jim_GetOpt_Debug( Jim_GetOptInfo *p )
|
Jim_GetOpt_Debug(Jim_GetOptInfo *p )
|
||||||
{
|
{
|
||||||
int x;
|
int x;
|
||||||
|
|
||||||
Jim_fprintf( p->interp, p->interp->cookie_stderr, "---args---\n");
|
Jim_fprintf(p->interp, p->interp->cookie_stderr, "---args---\n");
|
||||||
for ( x = 0 ; x < p->argc ; x++ ){
|
for (x = 0 ; x < p->argc ; x++ ){
|
||||||
Jim_fprintf( p->interp, p->interp->cookie_stderr,
|
Jim_fprintf(p->interp, p->interp->cookie_stderr,
|
||||||
"%2d) %s\n",
|
"%2d) %s\n",
|
||||||
x,
|
x,
|
||||||
Jim_GetString( p->argv[x], NULL ) );
|
Jim_GetString(p->argv[x], NULL ) );
|
||||||
}
|
}
|
||||||
Jim_fprintf( p->interp, p->interp->cookie_stderr, "-------\n");
|
Jim_fprintf(p->interp, p->interp->cookie_stderr, "-------\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
Jim_GetOpt_Obj( Jim_GetOptInfo *goi, Jim_Obj **puthere )
|
Jim_GetOpt_Obj(Jim_GetOptInfo *goi, Jim_Obj **puthere )
|
||||||
{
|
{
|
||||||
Jim_Obj *o;
|
Jim_Obj *o;
|
||||||
|
|
||||||
o = NULL; // failure
|
o = NULL; // failure
|
||||||
if ( goi->argc ){
|
if (goi->argc ){
|
||||||
// success
|
// success
|
||||||
o = goi->argv[0];
|
o = goi->argv[0];
|
||||||
goi->argc -= 1;
|
goi->argc -= 1;
|
||||||
goi->argv += 1;
|
goi->argv += 1;
|
||||||
}
|
}
|
||||||
if ( puthere ){
|
if (puthere ){
|
||||||
*puthere = o;
|
*puthere = o;
|
||||||
}
|
}
|
||||||
if ( o != NULL ){
|
if (o != NULL ){
|
||||||
return JIM_OK;
|
return JIM_OK;
|
||||||
} else {
|
} else {
|
||||||
return JIM_ERR;
|
return JIM_ERR;
|
||||||
|
@ -12632,17 +12632,17 @@ Jim_GetOpt_Obj( Jim_GetOptInfo *goi, Jim_Obj **puthere )
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
Jim_GetOpt_String( Jim_GetOptInfo *goi, char **puthere, int *len )
|
Jim_GetOpt_String(Jim_GetOptInfo *goi, char **puthere, int *len )
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
Jim_Obj *o;
|
Jim_Obj *o;
|
||||||
const char *cp;
|
const char *cp;
|
||||||
|
|
||||||
|
|
||||||
r = Jim_GetOpt_Obj( goi, &o );
|
r = Jim_GetOpt_Obj(goi, &o );
|
||||||
if ( r == JIM_OK ){
|
if (r == JIM_OK ){
|
||||||
cp = Jim_GetString( o, len );
|
cp = Jim_GetString(o, len );
|
||||||
if ( puthere ){
|
if (puthere ){
|
||||||
/* remove const */
|
/* remove const */
|
||||||
*puthere = (char *)(cp);
|
*puthere = (char *)(cp);
|
||||||
}
|
}
|
||||||
|
@ -12651,47 +12651,47 @@ Jim_GetOpt_String( Jim_GetOptInfo *goi, char **puthere, int *len )
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
Jim_GetOpt_Double( Jim_GetOptInfo *goi, double *puthere )
|
Jim_GetOpt_Double(Jim_GetOptInfo *goi, double *puthere )
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
Jim_Obj *o;
|
Jim_Obj *o;
|
||||||
double _safe;
|
double _safe;
|
||||||
|
|
||||||
if ( puthere == NULL ){
|
if (puthere == NULL ){
|
||||||
puthere = &_safe;
|
puthere = &_safe;
|
||||||
}
|
}
|
||||||
|
|
||||||
r = Jim_GetOpt_Obj( goi, &o );
|
r = Jim_GetOpt_Obj(goi, &o );
|
||||||
if ( r == JIM_OK ){
|
if (r == JIM_OK ){
|
||||||
r = Jim_GetDouble( goi->interp, o, puthere );
|
r = Jim_GetDouble(goi->interp, o, puthere );
|
||||||
if ( r != JIM_OK ){
|
if (r != JIM_OK ){
|
||||||
Jim_SetResult_sprintf( goi->interp,
|
Jim_SetResult_sprintf(goi->interp,
|
||||||
"not a number: %s",
|
"not a number: %s",
|
||||||
Jim_GetString( o, NULL ) );
|
Jim_GetString(o, NULL ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
Jim_GetOpt_Wide( Jim_GetOptInfo *goi, jim_wide *puthere )
|
Jim_GetOpt_Wide(Jim_GetOptInfo *goi, jim_wide *puthere )
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
Jim_Obj *o;
|
Jim_Obj *o;
|
||||||
jim_wide _safe;
|
jim_wide _safe;
|
||||||
|
|
||||||
if ( puthere == NULL ){
|
if (puthere == NULL ){
|
||||||
puthere = &_safe;
|
puthere = &_safe;
|
||||||
}
|
}
|
||||||
|
|
||||||
r = Jim_GetOpt_Obj( goi, &o );
|
r = Jim_GetOpt_Obj(goi, &o );
|
||||||
if ( r == JIM_OK ){
|
if (r == JIM_OK ){
|
||||||
r = Jim_GetWide( goi->interp, o, puthere );
|
r = Jim_GetWide(goi->interp, o, puthere );
|
||||||
}
|
}
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Jim_GetOpt_Nvp( Jim_GetOptInfo *goi,
|
int Jim_GetOpt_Nvp(Jim_GetOptInfo *goi,
|
||||||
const Jim_Nvp *nvp,
|
const Jim_Nvp *nvp,
|
||||||
Jim_Nvp **puthere)
|
Jim_Nvp **puthere)
|
||||||
{
|
{
|
||||||
|
@ -12699,13 +12699,13 @@ int Jim_GetOpt_Nvp( Jim_GetOptInfo *goi,
|
||||||
Jim_Obj *o;
|
Jim_Obj *o;
|
||||||
int e;
|
int e;
|
||||||
|
|
||||||
if ( puthere == NULL ){
|
if (puthere == NULL ){
|
||||||
puthere = &_safe;
|
puthere = &_safe;
|
||||||
}
|
}
|
||||||
|
|
||||||
e = Jim_GetOpt_Obj( goi, &o );
|
e = Jim_GetOpt_Obj(goi, &o );
|
||||||
if ( e == JIM_OK ){
|
if (e == JIM_OK ){
|
||||||
e = Jim_Nvp_name2value_obj( goi->interp,
|
e = Jim_Nvp_name2value_obj(goi->interp,
|
||||||
nvp,
|
nvp,
|
||||||
o,
|
o,
|
||||||
puthere );
|
puthere );
|
||||||
|
@ -12715,17 +12715,17 @@ int Jim_GetOpt_Nvp( Jim_GetOptInfo *goi,
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Jim_GetOpt_NvpUnknown( Jim_GetOptInfo *goi,
|
Jim_GetOpt_NvpUnknown(Jim_GetOptInfo *goi,
|
||||||
const Jim_Nvp *nvptable,
|
const Jim_Nvp *nvptable,
|
||||||
int hadprefix )
|
int hadprefix )
|
||||||
{
|
{
|
||||||
if ( hadprefix ){
|
if (hadprefix ){
|
||||||
Jim_SetResult_NvpUnknown( goi->interp,
|
Jim_SetResult_NvpUnknown(goi->interp,
|
||||||
goi->argv[-2],
|
goi->argv[-2],
|
||||||
goi->argv[-1],
|
goi->argv[-1],
|
||||||
nvptable );
|
nvptable );
|
||||||
} else {
|
} else {
|
||||||
Jim_SetResult_NvpUnknown( goi->interp,
|
Jim_SetResult_NvpUnknown(goi->interp,
|
||||||
NULL,
|
NULL,
|
||||||
goi->argv[-1],
|
goi->argv[-1],
|
||||||
nvptable );
|
nvptable );
|
||||||
|
@ -12734,7 +12734,7 @@ Jim_GetOpt_NvpUnknown( Jim_GetOptInfo *goi,
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
Jim_GetOpt_Enum( Jim_GetOptInfo *goi,
|
Jim_GetOpt_Enum(Jim_GetOptInfo *goi,
|
||||||
const char * const * lookup,
|
const char * const * lookup,
|
||||||
int *puthere)
|
int *puthere)
|
||||||
{
|
{
|
||||||
|
@ -12742,12 +12742,12 @@ Jim_GetOpt_Enum( Jim_GetOptInfo *goi,
|
||||||
Jim_Obj *o;
|
Jim_Obj *o;
|
||||||
int e;
|
int e;
|
||||||
|
|
||||||
if ( puthere == NULL ){
|
if (puthere == NULL ){
|
||||||
puthere = &_safe;
|
puthere = &_safe;
|
||||||
}
|
}
|
||||||
e = Jim_GetOpt_Obj( goi, &o );
|
e = Jim_GetOpt_Obj(goi, &o );
|
||||||
if ( e == JIM_OK ){
|
if (e == JIM_OK ){
|
||||||
e = Jim_GetEnum( goi->interp,
|
e = Jim_GetEnum(goi->interp,
|
||||||
o,
|
o,
|
||||||
lookup,
|
lookup,
|
||||||
puthere,
|
puthere,
|
||||||
|
@ -12760,16 +12760,16 @@ Jim_GetOpt_Enum( Jim_GetOptInfo *goi,
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
Jim_SetResult_sprintf( Jim_Interp *interp, const char *fmt,... )
|
Jim_SetResult_sprintf(Jim_Interp *interp, const char *fmt,... )
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char *buf;
|
char *buf;
|
||||||
|
|
||||||
va_start(ap,fmt);
|
va_start(ap,fmt);
|
||||||
buf = jim_vasprintf( fmt, ap );
|
buf = jim_vasprintf(fmt, ap );
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
if ( buf ){
|
if (buf ){
|
||||||
Jim_SetResultString( interp, buf, -1 );
|
Jim_SetResultString(interp, buf, -1 );
|
||||||
jim_vasprintf_done(buf);
|
jim_vasprintf_done(buf);
|
||||||
}
|
}
|
||||||
return JIM_OK;
|
return JIM_OK;
|
||||||
|
@ -12777,33 +12777,33 @@ Jim_SetResult_sprintf( Jim_Interp *interp, const char *fmt,... )
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
Jim_SetResult_NvpUnknown( Jim_Interp *interp,
|
Jim_SetResult_NvpUnknown(Jim_Interp *interp,
|
||||||
Jim_Obj *param_name,
|
Jim_Obj *param_name,
|
||||||
Jim_Obj *param_value,
|
Jim_Obj *param_value,
|
||||||
const Jim_Nvp *nvp )
|
const Jim_Nvp *nvp )
|
||||||
{
|
{
|
||||||
if ( param_name ){
|
if (param_name ){
|
||||||
Jim_SetResult_sprintf( interp,
|
Jim_SetResult_sprintf(interp,
|
||||||
"%s: Unknown: %s, try one of: ",
|
"%s: Unknown: %s, try one of: ",
|
||||||
Jim_GetString( param_name, NULL ),
|
Jim_GetString(param_name, NULL ),
|
||||||
Jim_GetString( param_value, NULL ) );
|
Jim_GetString(param_value, NULL ) );
|
||||||
} else {
|
} else {
|
||||||
Jim_SetResult_sprintf( interp,
|
Jim_SetResult_sprintf(interp,
|
||||||
"Unknown param: %s, try one of: ",
|
"Unknown param: %s, try one of: ",
|
||||||
Jim_GetString( param_value, NULL ) );
|
Jim_GetString(param_value, NULL ) );
|
||||||
}
|
}
|
||||||
while ( nvp->name ){
|
while (nvp->name ){
|
||||||
const char *a;
|
const char *a;
|
||||||
const char *b;
|
const char *b;
|
||||||
|
|
||||||
if ( (nvp + 1)->name ){
|
if ((nvp + 1)->name ){
|
||||||
a = nvp->name;
|
a = nvp->name;
|
||||||
b = ", ";
|
b = ", ";
|
||||||
} else {
|
} else {
|
||||||
a = "or ";
|
a = "or ";
|
||||||
b = nvp->name;
|
b = nvp->name;
|
||||||
}
|
}
|
||||||
Jim_AppendStrings( interp,
|
Jim_AppendStrings(interp,
|
||||||
Jim_GetResult(interp),
|
Jim_GetResult(interp),
|
||||||
a, b, NULL );
|
a, b, NULL );
|
||||||
nvp++;
|
nvp++;
|
||||||
|
@ -12814,22 +12814,22 @@ Jim_SetResult_NvpUnknown( Jim_Interp *interp,
|
||||||
static Jim_Obj *debug_string_obj;
|
static Jim_Obj *debug_string_obj;
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
Jim_Debug_ArgvString( Jim_Interp *interp, int argc, Jim_Obj *const *argv )
|
Jim_Debug_ArgvString(Jim_Interp *interp, int argc, Jim_Obj *const *argv )
|
||||||
{
|
{
|
||||||
int x;
|
int x;
|
||||||
|
|
||||||
if ( debug_string_obj ){
|
if (debug_string_obj ){
|
||||||
Jim_FreeObj( interp, debug_string_obj );
|
Jim_FreeObj(interp, debug_string_obj );
|
||||||
}
|
}
|
||||||
|
|
||||||
debug_string_obj = Jim_NewEmptyStringObj( interp );
|
debug_string_obj = Jim_NewEmptyStringObj(interp );
|
||||||
for ( x = 0 ; x < argc ; x++ ){
|
for (x = 0 ; x < argc ; x++ ){
|
||||||
Jim_AppendStrings( interp,
|
Jim_AppendStrings(interp,
|
||||||
debug_string_obj,
|
debug_string_obj,
|
||||||
Jim_GetString( argv[x], NULL ),
|
Jim_GetString(argv[x], NULL ),
|
||||||
" ",
|
" ",
|
||||||
NULL );
|
NULL );
|
||||||
}
|
}
|
||||||
|
|
||||||
return Jim_GetString( debug_string_obj, NULL );
|
return Jim_GetString(debug_string_obj, NULL );
|
||||||
}
|
}
|
||||||
|
|
118
src/helper/jim.h
118
src/helper/jim.h
|
@ -530,11 +530,11 @@ typedef struct Jim_Interp {
|
||||||
void *cookie_stdin; /* input file pointer, 'stdin' by default */
|
void *cookie_stdin; /* input file pointer, 'stdin' by default */
|
||||||
void *cookie_stdout; /* output file pointer, 'stdout' by default */
|
void *cookie_stdout; /* output file pointer, 'stdout' by default */
|
||||||
void *cookie_stderr; /* errors file pointer, 'stderr' by default */
|
void *cookie_stderr; /* errors file pointer, 'stderr' by default */
|
||||||
size_t (*cb_fwrite )( const void *ptr, size_t size, size_t n, void *cookie );
|
size_t (*cb_fwrite )(const void *ptr, size_t size, size_t n, void *cookie );
|
||||||
size_t (*cb_fread )( void *ptr, size_t size, size_t n, void *cookie );
|
size_t (*cb_fread )(void *ptr, size_t size, size_t n, void *cookie );
|
||||||
int (*cb_vfprintf)( void *cookie, const char *fmt, va_list ap );
|
int (*cb_vfprintf)(void *cookie, const char *fmt, va_list ap );
|
||||||
int (*cb_fflush )( void *cookie );
|
int (*cb_fflush )(void *cookie );
|
||||||
char *(*cb_fgets )( char *s, int size, void *cookie );
|
char *(*cb_fgets )(char *s, int size, void *cookie );
|
||||||
} Jim_Interp;
|
} Jim_Interp;
|
||||||
|
|
||||||
/* Currently provided as macro that performs the increment.
|
/* Currently provided as macro that performs the increment.
|
||||||
|
@ -591,11 +591,11 @@ typedef struct Jim_Reference {
|
||||||
* };
|
* };
|
||||||
*
|
*
|
||||||
* Jim_Nvp *result
|
* Jim_Nvp *result
|
||||||
* e = Jim_Nvp_name2value( interp, yn, "y", &result );
|
* e = Jim_Nvp_name2value(interp, yn, "y", &result );
|
||||||
* returns &yn[0];
|
* returns &yn[0];
|
||||||
* e = Jim_Nvp_name2value( interp, yn, "n", &result );
|
* e = Jim_Nvp_name2value(interp, yn, "n", &result );
|
||||||
* returns &yn[1];
|
* returns &yn[1];
|
||||||
* e = Jim_Nvp_name2value( interp, yn, "Blah", &result );
|
* e = Jim_Nvp_name2value(interp, yn, "Blah", &result );
|
||||||
* returns &yn[4];
|
* returns &yn[4];
|
||||||
* \endcode
|
* \endcode
|
||||||
*
|
*
|
||||||
|
@ -629,7 +629,7 @@ typedef struct {
|
||||||
|
|
||||||
#ifdef DOXYGEN
|
#ifdef DOXYGEN
|
||||||
#define JIM_STATIC
|
#define JIM_STATIC
|
||||||
#define JIM_API( X ) X
|
#define JIM_API(X ) X
|
||||||
#else
|
#else
|
||||||
#ifndef __JIM_CORE__
|
#ifndef __JIM_CORE__
|
||||||
# if defined JIM_EMBEDDED
|
# if defined JIM_EMBEDDED
|
||||||
|
@ -650,7 +650,7 @@ typedef struct {
|
||||||
#endif /* DOXYGEN */
|
#endif /* DOXYGEN */
|
||||||
|
|
||||||
/** Set the result - printf() style */
|
/** Set the result - printf() style */
|
||||||
JIM_STATIC int JIM_API( Jim_SetResult_sprintf )( Jim_Interp *p, const char *fmt, ... );
|
JIM_STATIC int JIM_API(Jim_SetResult_sprintf )(Jim_Interp *p, const char *fmt, ... );
|
||||||
|
|
||||||
/* Memory allocation */
|
/* Memory allocation */
|
||||||
JIM_STATIC void * JIM_API(Jim_Alloc) (int size);
|
JIM_STATIC void * JIM_API(Jim_Alloc) (int size);
|
||||||
|
@ -660,7 +660,7 @@ JIM_STATIC char * JIM_API(Jim_StrDup) (const char *s);
|
||||||
/* evaluation */
|
/* evaluation */
|
||||||
JIM_STATIC int JIM_API(Jim_Eval)(Jim_Interp *interp, const char *script);
|
JIM_STATIC int JIM_API(Jim_Eval)(Jim_Interp *interp, const char *script);
|
||||||
/* in C code, you can do this and get better error messages */
|
/* in C code, you can do this and get better error messages */
|
||||||
/* Jim_Eval_Named( interp, "some tcl commands", __FILE__, __LINE__ ); */
|
/* Jim_Eval_Named(interp, "some tcl commands", __FILE__, __LINE__ ); */
|
||||||
JIM_STATIC int JIM_API(Jim_Eval_Named)(Jim_Interp *interp, const char *script,const char *filename, int lineno);
|
JIM_STATIC int JIM_API(Jim_Eval_Named)(Jim_Interp *interp, const char *script,const char *filename, int lineno);
|
||||||
JIM_STATIC int JIM_API(Jim_EvalGlobal)(Jim_Interp *interp, const char *script);
|
JIM_STATIC int JIM_API(Jim_EvalGlobal)(Jim_Interp *interp, const char *script);
|
||||||
JIM_STATIC int JIM_API(Jim_EvalFile)(Jim_Interp *interp, const char *filename);
|
JIM_STATIC int JIM_API(Jim_EvalFile)(Jim_Interp *interp, const char *filename);
|
||||||
|
@ -911,28 +911,28 @@ JIM_STATIC int JIM_API(Jim_InteractivePrompt) (Jim_Interp *interp);
|
||||||
JIM_STATIC void JIM_API(Jim_Panic) (Jim_Interp *interp, const char *fmt, ...);
|
JIM_STATIC void JIM_API(Jim_Panic) (Jim_Interp *interp, const char *fmt, ...);
|
||||||
|
|
||||||
/* Jim's STDIO */
|
/* Jim's STDIO */
|
||||||
JIM_STATIC int JIM_API( Jim_fprintf )( Jim_Interp *interp, void *cookie, const char *fmt, ... );
|
JIM_STATIC int JIM_API(Jim_fprintf )(Jim_Interp *interp, void *cookie, const char *fmt, ... );
|
||||||
JIM_STATIC int JIM_API( Jim_vfprintf )( Jim_Interp *interp, void *cookie, const char *fmt, va_list ap );
|
JIM_STATIC int JIM_API(Jim_vfprintf )(Jim_Interp *interp, void *cookie, const char *fmt, va_list ap );
|
||||||
JIM_STATIC size_t JIM_API( Jim_fwrite )( Jim_Interp *interp, const void *ptr, size_t size, size_t nmeb, void *cookie );
|
JIM_STATIC size_t JIM_API(Jim_fwrite )(Jim_Interp *interp, const void *ptr, size_t size, size_t nmeb, void *cookie );
|
||||||
JIM_STATIC size_t JIM_API( Jim_fread )( Jim_Interp *interp, void *ptr, size_t size, size_t nmeb, void *cookie );
|
JIM_STATIC size_t JIM_API(Jim_fread )(Jim_Interp *interp, void *ptr, size_t size, size_t nmeb, void *cookie );
|
||||||
JIM_STATIC int JIM_API( Jim_fflush )( Jim_Interp *interp, void *cookie );
|
JIM_STATIC int JIM_API(Jim_fflush )(Jim_Interp *interp, void *cookie );
|
||||||
JIM_STATIC char * JIM_API( Jim_fgets )( Jim_Interp *interp, char *s, int size, void *cookie );
|
JIM_STATIC char * JIM_API(Jim_fgets )(Jim_Interp *interp, char *s, int size, void *cookie );
|
||||||
|
|
||||||
/* Name Value Pairs Operations */
|
/* Name Value Pairs Operations */
|
||||||
JIM_STATIC Jim_Nvp *JIM_API(Jim_Nvp_name2value_simple)( const Jim_Nvp *nvp_table, const char *name );
|
JIM_STATIC Jim_Nvp *JIM_API(Jim_Nvp_name2value_simple)(const Jim_Nvp *nvp_table, const char *name );
|
||||||
JIM_STATIC Jim_Nvp *JIM_API(Jim_Nvp_name2value_nocase_simple)( const Jim_Nvp *nvp_table, const char *name );
|
JIM_STATIC Jim_Nvp *JIM_API(Jim_Nvp_name2value_nocase_simple)(const Jim_Nvp *nvp_table, const char *name );
|
||||||
JIM_STATIC Jim_Nvp *JIM_API(Jim_Nvp_value2name_simple)( const Jim_Nvp *nvp_table, int v );
|
JIM_STATIC Jim_Nvp *JIM_API(Jim_Nvp_value2name_simple)(const Jim_Nvp *nvp_table, int v );
|
||||||
|
|
||||||
JIM_STATIC int JIM_API(Jim_Nvp_name2value)( Jim_Interp *interp, const Jim_Nvp *nvp_table, const char *name, Jim_Nvp **result );
|
JIM_STATIC int JIM_API(Jim_Nvp_name2value)(Jim_Interp *interp, const Jim_Nvp *nvp_table, const char *name, Jim_Nvp **result );
|
||||||
JIM_STATIC int JIM_API(Jim_Nvp_name2value_nocase)( Jim_Interp *interp, const Jim_Nvp *nvp_table, const char *name, Jim_Nvp **result);
|
JIM_STATIC int JIM_API(Jim_Nvp_name2value_nocase)(Jim_Interp *interp, const Jim_Nvp *nvp_table, const char *name, Jim_Nvp **result);
|
||||||
JIM_STATIC int JIM_API(Jim_Nvp_value2name)( Jim_Interp *interp, const Jim_Nvp *nvp_table, int value, Jim_Nvp **result );
|
JIM_STATIC int JIM_API(Jim_Nvp_value2name)(Jim_Interp *interp, const Jim_Nvp *nvp_table, int value, Jim_Nvp **result );
|
||||||
|
|
||||||
JIM_STATIC int JIM_API(Jim_Nvp_name2value_obj)( Jim_Interp *interp, const Jim_Nvp *nvp_table, Jim_Obj *name_obj, Jim_Nvp **result );
|
JIM_STATIC int JIM_API(Jim_Nvp_name2value_obj)(Jim_Interp *interp, const Jim_Nvp *nvp_table, Jim_Obj *name_obj, Jim_Nvp **result );
|
||||||
JIM_STATIC int JIM_API(Jim_Nvp_name2value_obj_nocase)( Jim_Interp *interp, const Jim_Nvp *nvp_table, Jim_Obj *name_obj, Jim_Nvp **result );
|
JIM_STATIC int JIM_API(Jim_Nvp_name2value_obj_nocase)(Jim_Interp *interp, const Jim_Nvp *nvp_table, Jim_Obj *name_obj, Jim_Nvp **result );
|
||||||
JIM_STATIC int JIM_API(Jim_Nvp_value2name_obj)( Jim_Interp *interp, const Jim_Nvp *nvp_table, Jim_Obj *value_obj, Jim_Nvp **result );
|
JIM_STATIC int JIM_API(Jim_Nvp_value2name_obj)(Jim_Interp *interp, const Jim_Nvp *nvp_table, Jim_Obj *value_obj, Jim_Nvp **result );
|
||||||
|
|
||||||
/** prints a nice 'unknown' parameter error message to the 'result' */
|
/** prints a nice 'unknown' parameter error message to the 'result' */
|
||||||
JIM_STATIC void JIM_API(Jim_SetResult_NvpUnknown)( Jim_Interp *interp,
|
JIM_STATIC void JIM_API(Jim_SetResult_NvpUnknown)(Jim_Interp *interp,
|
||||||
Jim_Obj *param_name,
|
Jim_Obj *param_name,
|
||||||
Jim_Obj *param_value,
|
Jim_Obj *param_value,
|
||||||
const Jim_Nvp *nvp_table );
|
const Jim_Nvp *nvp_table );
|
||||||
|
@ -951,11 +951,11 @@ JIM_STATIC void JIM_API(Jim_SetResult_NvpUnknown)( Jim_Interp *interp,
|
||||||
* For example might want do this:
|
* For example might want do this:
|
||||||
* \code
|
* \code
|
||||||
* fp = fopen("some.file.log", "a" );
|
* fp = fopen("some.file.log", "a" );
|
||||||
* fprintf( fp, "PARAMS are: %s\n", Jim_DebugArgvString( interp, argc, argv ) );
|
* fprintf(fp, "PARAMS are: %s\n", Jim_DebugArgvString(interp, argc, argv ) );
|
||||||
* fclose(fp);
|
* fclose(fp);
|
||||||
* \endcode
|
* \endcode
|
||||||
*/
|
*/
|
||||||
JIM_STATIC const char *JIM_API( Jim_Debug_ArgvString )( Jim_Interp *interp, int argc, Jim_Obj *const *argv );
|
JIM_STATIC const char *JIM_API(Jim_Debug_ArgvString )(Jim_Interp *interp, int argc, Jim_Obj *const *argv );
|
||||||
|
|
||||||
|
|
||||||
/** A TCL -ish GetOpt like code.
|
/** A TCL -ish GetOpt like code.
|
||||||
|
@ -983,33 +983,33 @@ typedef struct jim_getopt {
|
||||||
* \code
|
* \code
|
||||||
* Jim_GetOptInfo goi;
|
* Jim_GetOptInfo goi;
|
||||||
*
|
*
|
||||||
* Jim_GetOpt_Setup( &goi, interp, argc, argv );
|
* Jim_GetOpt_Setup(&goi, interp, argc, argv );
|
||||||
*
|
*
|
||||||
* while ( goi.argc ){
|
* while (goi.argc ){
|
||||||
* e = Jim_GetOpt_Nvp( &goi, nvp_options, &n );
|
* e = Jim_GetOpt_Nvp(&goi, nvp_options, &n );
|
||||||
* if ( e != JIM_OK ){
|
* if (e != JIM_OK ){
|
||||||
* Jim_GetOpt_NvpUnknown( &goi, nvp_options, 0 );
|
* Jim_GetOpt_NvpUnknown(&goi, nvp_options, 0 );
|
||||||
* return e;
|
* return e;
|
||||||
* }
|
* }
|
||||||
*
|
*
|
||||||
* switch ( n->value ){
|
* switch (n->value ){
|
||||||
* case ALIVE:
|
* case ALIVE:
|
||||||
* printf("Option ALIVE specified\n");
|
* printf("Option ALIVE specified\n");
|
||||||
* break;
|
* break;
|
||||||
* case FIRST:
|
* case FIRST:
|
||||||
* if ( goi.argc < 1 ){
|
* if (goi.argc < 1 ){
|
||||||
* .. not enough args error ..
|
* .. not enough args error ..
|
||||||
* }
|
* }
|
||||||
* Jim_GetOpt_String( &goi, &cp, NULL );
|
* Jim_GetOpt_String(&goi, &cp, NULL );
|
||||||
* printf("FIRSTNAME: %s\n", cp );
|
* printf("FIRSTNAME: %s\n", cp );
|
||||||
* case AGE:
|
* case AGE:
|
||||||
* Jim_GetOpt_Wide( &goi, &w );
|
* Jim_GetOpt_Wide(&goi, &w );
|
||||||
* printf("AGE: %d\n", (int)(w) );
|
* printf("AGE: %d\n", (int)(w) );
|
||||||
* break;
|
* break;
|
||||||
* case POLITICS:
|
* case POLITICS:
|
||||||
* e = Jim_GetOpt_Nvp( &goi, nvp_politics, &n );
|
* e = Jim_GetOpt_Nvp(&goi, nvp_politics, &n );
|
||||||
* if ( e != JIM_OK ){
|
* if (e != JIM_OK ){
|
||||||
* Jim_GetOpt_NvpUnknown( &goi, nvp_politics, 1 );
|
* Jim_GetOpt_NvpUnknown(&goi, nvp_politics, 1 );
|
||||||
* return e;
|
* return e;
|
||||||
* }
|
* }
|
||||||
* }
|
* }
|
||||||
|
@ -1029,11 +1029,11 @@ typedef struct jim_getopt {
|
||||||
* \code
|
* \code
|
||||||
* Jim_GetOptInfo goi;
|
* Jim_GetOptInfo goi;
|
||||||
*
|
*
|
||||||
* Jim_GetOptSetup( &goi, interp, argc, argv );
|
* Jim_GetOptSetup(&goi, interp, argc, argv );
|
||||||
* \endcode
|
* \endcode
|
||||||
*/
|
*/
|
||||||
|
|
||||||
JIM_STATIC int JIM_API( Jim_GetOpt_Setup )( Jim_GetOptInfo *goi,
|
JIM_STATIC int JIM_API(Jim_GetOpt_Setup )(Jim_GetOptInfo *goi,
|
||||||
Jim_Interp *interp,
|
Jim_Interp *interp,
|
||||||
int argc,
|
int argc,
|
||||||
Jim_Obj * const * argv );
|
Jim_Obj * const * argv );
|
||||||
|
@ -1042,7 +1042,7 @@ JIM_STATIC int JIM_API( Jim_GetOpt_Setup )( Jim_GetOptInfo *goi,
|
||||||
/** Debug - Dump parameters to stderr
|
/** Debug - Dump parameters to stderr
|
||||||
* \param goi - current parameters
|
* \param goi - current parameters
|
||||||
*/
|
*/
|
||||||
JIM_STATIC void JIM_API( Jim_GetOpt_Debug )( Jim_GetOptInfo *goi);
|
JIM_STATIC void JIM_API(Jim_GetOpt_Debug )(Jim_GetOptInfo *goi);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1052,7 +1052,7 @@ JIM_STATIC void JIM_API( Jim_GetOpt_Debug )( Jim_GetOptInfo *goi);
|
||||||
* \param puthere - where param is put
|
* \param puthere - where param is put
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
JIM_STATIC int JIM_API( Jim_GetOpt_Obj)( Jim_GetOptInfo *goi, Jim_Obj **puthere );
|
JIM_STATIC int JIM_API(Jim_GetOpt_Obj)(Jim_GetOptInfo *goi, Jim_Obj **puthere );
|
||||||
|
|
||||||
/** Remove argv[0] as string.
|
/** Remove argv[0] as string.
|
||||||
*
|
*
|
||||||
|
@ -1060,7 +1060,7 @@ JIM_STATIC int JIM_API( Jim_GetOpt_Obj)( Jim_GetOptInfo *goi, Jim_Obj **puthere
|
||||||
* \param puthere - where param is put
|
* \param puthere - where param is put
|
||||||
* \param len - return its length
|
* \param len - return its length
|
||||||
*/
|
*/
|
||||||
JIM_STATIC int JIM_API( Jim_GetOpt_String )( Jim_GetOptInfo *goi, char **puthere, int *len );
|
JIM_STATIC int JIM_API(Jim_GetOpt_String )(Jim_GetOptInfo *goi, char **puthere, int *len );
|
||||||
|
|
||||||
/** Remove argv[0] as double.
|
/** Remove argv[0] as double.
|
||||||
*
|
*
|
||||||
|
@ -1068,14 +1068,14 @@ JIM_STATIC int JIM_API( Jim_GetOpt_String )( Jim_GetOptInfo *goi, char **puthere
|
||||||
* \param puthere - where param is put.
|
* \param puthere - where param is put.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
JIM_STATIC int JIM_API( Jim_GetOpt_Double )( Jim_GetOptInfo *goi, double *puthere );
|
JIM_STATIC int JIM_API(Jim_GetOpt_Double )(Jim_GetOptInfo *goi, double *puthere );
|
||||||
|
|
||||||
/** Remove argv[0] as wide.
|
/** Remove argv[0] as wide.
|
||||||
*
|
*
|
||||||
* \param goi - get opt info
|
* \param goi - get opt info
|
||||||
* \param puthere - where param is put.
|
* \param puthere - where param is put.
|
||||||
*/
|
*/
|
||||||
JIM_STATIC int JIM_API( Jim_GetOpt_Wide )( Jim_GetOptInfo *goi, jim_wide *puthere );
|
JIM_STATIC int JIM_API(Jim_GetOpt_Wide )(Jim_GetOptInfo *goi, jim_wide *puthere );
|
||||||
|
|
||||||
/** Remove argv[0] as NVP.
|
/** Remove argv[0] as NVP.
|
||||||
*
|
*
|
||||||
|
@ -1084,7 +1084,7 @@ JIM_STATIC int JIM_API( Jim_GetOpt_Wide )( Jim_GetOptInfo *goi, jim_wide *puther
|
||||||
* \param puthere - where param is put.
|
* \param puthere - where param is put.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
JIM_STATIC int JIM_API( Jim_GetOpt_Nvp)( Jim_GetOptInfo *goi, const Jim_Nvp *lookup, Jim_Nvp **puthere );
|
JIM_STATIC int JIM_API(Jim_GetOpt_Nvp)(Jim_GetOptInfo *goi, const Jim_Nvp *lookup, Jim_Nvp **puthere );
|
||||||
|
|
||||||
/** Create an appropriate error message for an NVP.
|
/** Create an appropriate error message for an NVP.
|
||||||
*
|
*
|
||||||
|
@ -1102,22 +1102,22 @@ JIM_STATIC int JIM_API( Jim_GetOpt_Nvp)( Jim_GetOptInfo *goi, const Jim_Nvp *loo
|
||||||
* Example:
|
* Example:
|
||||||
* \code
|
* \code
|
||||||
*
|
*
|
||||||
* while ( goi.argc ){
|
* while (goi.argc ){
|
||||||
* // Get the next option
|
* // Get the next option
|
||||||
* e = Jim_GetOpt_Nvp( &goi, cmd_options, &n );
|
* e = Jim_GetOpt_Nvp(&goi, cmd_options, &n );
|
||||||
* if ( e != JIM_OK ){
|
* if (e != JIM_OK ){
|
||||||
* // option was not recognized
|
* // option was not recognized
|
||||||
* // pass 'hadprefix = 0' because there is no prefix
|
* // pass 'hadprefix = 0' because there is no prefix
|
||||||
* Jim_GetOpt_NvpUnknown( &goi, cmd_options, 0 );
|
* Jim_GetOpt_NvpUnknown(&goi, cmd_options, 0 );
|
||||||
* return e;
|
* return e;
|
||||||
* }
|
* }
|
||||||
*
|
*
|
||||||
* switch ( n->value ){
|
* switch (n->value ){
|
||||||
* case OPT_SEX:
|
* case OPT_SEX:
|
||||||
* // handle: --sex male | female | lots | needmore
|
* // handle: --sex male | female | lots | needmore
|
||||||
* e = Jim_GetOpt_Nvp( &goi, &nvp_sex, &n );
|
* e = Jim_GetOpt_Nvp(&goi, &nvp_sex, &n );
|
||||||
* if ( e != JIM_OK ){
|
* if (e != JIM_OK ){
|
||||||
* Jim_GetOpt_NvpUnknown( &ogi, nvp_sex, 1 );
|
* Jim_GetOpt_NvpUnknown(&ogi, nvp_sex, 1 );
|
||||||
* return e;
|
* return e;
|
||||||
* }
|
* }
|
||||||
* printf("Code: (%d) is %s\n", n->value, n->name );
|
* printf("Code: (%d) is %s\n", n->value, n->name );
|
||||||
|
@ -1129,7 +1129,7 @@ JIM_STATIC int JIM_API( Jim_GetOpt_Nvp)( Jim_GetOptInfo *goi, const Jim_Nvp *loo
|
||||||
* \endcode
|
* \endcode
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
JIM_STATIC void JIM_API( Jim_GetOpt_NvpUnknown)( Jim_GetOptInfo *goi, const Jim_Nvp *lookup, int hadprefix );
|
JIM_STATIC void JIM_API(Jim_GetOpt_NvpUnknown)(Jim_GetOptInfo *goi, const Jim_Nvp *lookup, int hadprefix );
|
||||||
|
|
||||||
|
|
||||||
/** Remove argv[0] as Enum
|
/** Remove argv[0] as Enum
|
||||||
|
@ -1139,7 +1139,7 @@ JIM_STATIC void JIM_API( Jim_GetOpt_NvpUnknown)( Jim_GetOptInfo *goi, const Jim_
|
||||||
* \param puthere - where param is put.
|
* \param puthere - where param is put.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
JIM_STATIC int JIM_API( Jim_GetOpt_Enum)( Jim_GetOptInfo *goi, const char * const * lookup, int *puthere );
|
JIM_STATIC int JIM_API(Jim_GetOpt_Enum)(Jim_GetOptInfo *goi, const char * const * lookup, int *puthere );
|
||||||
|
|
||||||
|
|
||||||
#undef JIM_STATIC
|
#undef JIM_STATIC
|
||||||
|
|
|
@ -85,7 +85,7 @@ extern int debug_level;
|
||||||
/* Avoid fn call and building parameter list if we're not outputting the information.
|
/* Avoid fn call and building parameter list if we're not outputting the information.
|
||||||
* Matters on feeble CPUs for DEBUG/INFO statements that are involved frequently */
|
* Matters on feeble CPUs for DEBUG/INFO statements that are involved frequently */
|
||||||
|
|
||||||
#define LOG_LEVEL_IS( FOO ) ((debug_level) >= (FOO))
|
#define LOG_LEVEL_IS(FOO ) ((debug_level) >= (FOO))
|
||||||
|
|
||||||
#define LOG_DEBUG(expr ...) \
|
#define LOG_DEBUG(expr ...) \
|
||||||
((debug_level >= LOG_LVL_DEBUG) ? log_printf_lf (LOG_LVL_DEBUG, __FILE__, __LINE__, __FUNCTION__, expr) , 0 : 0)
|
((debug_level >= LOG_LVL_DEBUG) ? log_printf_lf (LOG_LVL_DEBUG, __FILE__, __LINE__, __FUNCTION__, expr) , 0 : 0)
|
||||||
|
|
|
@ -161,7 +161,7 @@ int win_select(int max_fd, fd_set *rfds, fd_set *wfds, fd_set *efds, struct time
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
|
|
||||||
/* generic socket functions for Windows and Posix */
|
/* generic socket functions for Windows and Posix */
|
||||||
static __inline int write_socket( int handle, const void *buffer, unsigned int count )
|
static __inline int write_socket(int handle, const void *buffer, unsigned int count )
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
return send(handle, buffer, count, 0);
|
return send(handle, buffer, count, 0);
|
||||||
|
@ -170,7 +170,7 @@ static __inline int write_socket( int handle, const void *buffer, unsigned int c
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static __inline int read_socket( int handle, void *buffer, unsigned int count )
|
static __inline int read_socket(int handle, void *buffer, unsigned int count )
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
return recv(handle, buffer, count, 0);
|
return recv(handle, buffer, count, 0);
|
||||||
|
|
|
@ -395,20 +395,20 @@ int amt_jtagaccel_get_giveio_access(void)
|
||||||
OSVERSIONINFO version;
|
OSVERSIONINFO version;
|
||||||
|
|
||||||
version.dwOSVersionInfoSize = sizeof version;
|
version.dwOSVersionInfoSize = sizeof version;
|
||||||
if (!GetVersionEx( &version )) {
|
if (!GetVersionEx(&version )) {
|
||||||
errno = EINVAL;
|
errno = EINVAL;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (version.dwPlatformId != VER_PLATFORM_WIN32_NT)
|
if (version.dwPlatformId != VER_PLATFORM_WIN32_NT)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
h = CreateFile( "\\\\.\\giveio", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
|
h = CreateFile("\\\\.\\giveio", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
|
||||||
if (h == INVALID_HANDLE_VALUE) {
|
if (h == INVALID_HANDLE_VALUE) {
|
||||||
errno = ENODEV;
|
errno = ENODEV;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
CloseHandle( h );
|
CloseHandle(h );
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -133,7 +133,7 @@ static int armjtagew_execute_queue(void)
|
||||||
switch (cmd->type)
|
switch (cmd->type)
|
||||||
{
|
{
|
||||||
case JTAG_RUNTEST:
|
case JTAG_RUNTEST:
|
||||||
DEBUG_JTAG_IO( "runtest %i cycles, end in %i", cmd->cmd.runtest->num_cycles, \
|
DEBUG_JTAG_IO("runtest %i cycles, end in %i", cmd->cmd.runtest->num_cycles, \
|
||||||
cmd->cmd.runtest->end_state);
|
cmd->cmd.runtest->end_state);
|
||||||
|
|
||||||
armjtagew_end_state(cmd->cmd.runtest->end_state);
|
armjtagew_end_state(cmd->cmd.runtest->end_state);
|
||||||
|
|
|
@ -83,7 +83,7 @@ void bitq_in_proc(void)
|
||||||
bitq_in_bufsize *= 2;
|
bitq_in_bufsize *= 2;
|
||||||
}
|
}
|
||||||
/* if necessary, allocate buffer and check for malloc error */
|
/* if necessary, allocate buffer and check for malloc error */
|
||||||
if (bitq_in_buffer == NULL && ( bitq_in_buffer = malloc(bitq_in_bufsize) ) == NULL)
|
if (bitq_in_buffer == NULL && (bitq_in_buffer = malloc(bitq_in_bufsize) ) == NULL)
|
||||||
{
|
{
|
||||||
LOG_ERROR("malloc error");
|
LOG_ERROR("malloc error");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
|
@ -95,7 +95,7 @@ void bitq_in_proc(void)
|
||||||
/* field scanning */
|
/* field scanning */
|
||||||
while (bitq_in_state.bit_pos < field->num_bits)
|
while (bitq_in_state.bit_pos < field->num_bits)
|
||||||
{
|
{
|
||||||
if ( ( tdo = bitq_interface->in() ) < 0 )
|
if ((tdo = bitq_interface->in() ) < 0 )
|
||||||
{
|
{
|
||||||
#ifdef _DEBUG_JTAG_IO_
|
#ifdef _DEBUG_JTAG_IO_
|
||||||
LOG_DEBUG("bitq in EOF");
|
LOG_DEBUG("bitq in EOF");
|
||||||
|
@ -131,7 +131,7 @@ void bitq_io(int tms, int tdi, int tdo_req)
|
||||||
{
|
{
|
||||||
bitq_interface->out(tms, tdi, tdo_req);
|
bitq_interface->out(tms, tdi, tdo_req);
|
||||||
/* check and process the input queue */
|
/* check and process the input queue */
|
||||||
if ( bitq_interface->in_rdy() )
|
if (bitq_interface->in_rdy() )
|
||||||
bitq_in_proc();
|
bitq_in_proc();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -183,7 +183,7 @@ void bitq_path_move(pathmove_command_t* cmd)
|
||||||
bitq_io(1, 0, 0);
|
bitq_io(1, 0, 0);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LOG_ERROR( "BUG: %s -> %s isn't a valid TAP transition", tap_state_name(
|
LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", tap_state_name(
|
||||||
tap_get_state() ), tap_state_name(cmd->path[i]) );
|
tap_get_state() ), tap_state_name(cmd->path[i]) );
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
@ -191,7 +191,7 @@ void bitq_path_move(pathmove_command_t* cmd)
|
||||||
tap_set_state(cmd->path[i]);
|
tap_set_state(cmd->path[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
tap_set_end_state( tap_get_state() );
|
tap_set_end_state(tap_get_state() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -208,8 +208,8 @@ void bitq_runtest(int num_cycles)
|
||||||
bitq_io(0, 0, 0);
|
bitq_io(0, 0, 0);
|
||||||
|
|
||||||
/* finish in end_state */
|
/* finish in end_state */
|
||||||
if ( tap_get_state() != tap_get_end_state() )
|
if (tap_get_state() != tap_get_end_state() )
|
||||||
bitq_state_move( tap_get_end_state() );
|
bitq_state_move(tap_get_end_state() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -241,7 +241,7 @@ void bitq_scan_field(scan_field_t* field, int pause)
|
||||||
out_ptr = field->out_value;
|
out_ptr = field->out_value;
|
||||||
for (bit_cnt = field->num_bits; bit_cnt > 1; bit_cnt--)
|
for (bit_cnt = field->num_bits; bit_cnt > 1; bit_cnt--)
|
||||||
{
|
{
|
||||||
bitq_io(0, ( (*out_ptr) & out_mask ) != 0, tdo_req);
|
bitq_io(0, ((*out_ptr) & out_mask ) != 0, tdo_req);
|
||||||
if (out_mask == 0x80)
|
if (out_mask == 0x80)
|
||||||
{
|
{
|
||||||
out_mask = 0x01;
|
out_mask = 0x01;
|
||||||
|
@ -251,7 +251,7 @@ void bitq_scan_field(scan_field_t* field, int pause)
|
||||||
out_mask <<= 1;
|
out_mask <<= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bitq_io(pause, ( (*out_ptr) & out_mask ) != 0, tdo_req);
|
bitq_io(pause, ((*out_ptr) & out_mask ) != 0, tdo_req);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pause)
|
if (pause)
|
||||||
|
@ -298,12 +298,12 @@ int bitq_execute_queue(void)
|
||||||
#ifdef _DEBUG_JTAG_IO_
|
#ifdef _DEBUG_JTAG_IO_
|
||||||
LOG_DEBUG("reset trst: %i srst %i", cmd->cmd.reset->trst, cmd->cmd.reset->srst);
|
LOG_DEBUG("reset trst: %i srst %i", cmd->cmd.reset->trst, cmd->cmd.reset->srst);
|
||||||
#endif
|
#endif
|
||||||
if ( (cmd->cmd.reset->trst == 1) || ( cmd->cmd.reset->srst && (jtag_get_reset_config() & RESET_SRST_PULLS_TRST) ) )
|
if ((cmd->cmd.reset->trst == 1) || (cmd->cmd.reset->srst && (jtag_get_reset_config() & RESET_SRST_PULLS_TRST) ) )
|
||||||
{
|
{
|
||||||
tap_set_state(TAP_RESET);
|
tap_set_state(TAP_RESET);
|
||||||
}
|
}
|
||||||
bitq_interface->reset(cmd->cmd.reset->trst, cmd->cmd.reset->srst);
|
bitq_interface->reset(cmd->cmd.reset->trst, cmd->cmd.reset->srst);
|
||||||
if ( bitq_interface->in_rdy() )
|
if (bitq_interface->in_rdy() )
|
||||||
bitq_in_proc();
|
bitq_in_proc();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -320,7 +320,7 @@ int bitq_execute_queue(void)
|
||||||
LOG_DEBUG("statemove end in %i", cmd->cmd.statemove->end_state);
|
LOG_DEBUG("statemove end in %i", cmd->cmd.statemove->end_state);
|
||||||
#endif
|
#endif
|
||||||
bitq_end_state(cmd->cmd.statemove->end_state);
|
bitq_end_state(cmd->cmd.statemove->end_state);
|
||||||
bitq_state_move( tap_get_end_state() ); /* uncoditional TAP move */
|
bitq_state_move(tap_get_end_state() ); /* uncoditional TAP move */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case JTAG_PATHMOVE:
|
case JTAG_PATHMOVE:
|
||||||
|
@ -341,8 +341,8 @@ int bitq_execute_queue(void)
|
||||||
#endif
|
#endif
|
||||||
bitq_end_state(cmd->cmd.scan->end_state);
|
bitq_end_state(cmd->cmd.scan->end_state);
|
||||||
bitq_scan(cmd->cmd.scan);
|
bitq_scan(cmd->cmd.scan);
|
||||||
if ( tap_get_state() != tap_get_end_state() )
|
if (tap_get_state() != tap_get_end_state() )
|
||||||
bitq_state_move( tap_get_end_state() );
|
bitq_state_move(tap_get_end_state() );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case JTAG_SLEEP:
|
case JTAG_SLEEP:
|
||||||
|
@ -350,7 +350,7 @@ int bitq_execute_queue(void)
|
||||||
LOG_DEBUG("sleep %i", cmd->cmd.sleep->us);
|
LOG_DEBUG("sleep %i", cmd->cmd.sleep->us);
|
||||||
#endif
|
#endif
|
||||||
bitq_interface->sleep(cmd->cmd.sleep->us);
|
bitq_interface->sleep(cmd->cmd.sleep->us);
|
||||||
if ( bitq_interface->in_rdy() )
|
if (bitq_interface->in_rdy() )
|
||||||
bitq_in_proc();
|
bitq_in_proc();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -482,7 +482,7 @@ void jtag_add_pathmove(int num_states, const tap_state_t *path)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( tap_state_transition(cur_state, true) != path[i]
|
if (tap_state_transition(cur_state, true) != path[i]
|
||||||
&& tap_state_transition(cur_state, false) != path[i])
|
&& tap_state_transition(cur_state, false) != path[i])
|
||||||
{
|
{
|
||||||
LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition",
|
LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition",
|
||||||
|
@ -503,18 +503,18 @@ int jtag_add_statemove(tap_state_t goal_state)
|
||||||
{
|
{
|
||||||
tap_state_t cur_state = cmd_queue_cur_state;
|
tap_state_t cur_state = cmd_queue_cur_state;
|
||||||
|
|
||||||
LOG_DEBUG( "cur_state=%s goal_state=%s",
|
LOG_DEBUG("cur_state=%s goal_state=%s",
|
||||||
tap_state_name(cur_state),
|
tap_state_name(cur_state),
|
||||||
tap_state_name(goal_state) );
|
tap_state_name(goal_state) );
|
||||||
|
|
||||||
|
|
||||||
if (goal_state == cur_state )
|
if (goal_state == cur_state )
|
||||||
; /* nothing to do */
|
; /* nothing to do */
|
||||||
else if ( goal_state == TAP_RESET )
|
else if (goal_state == TAP_RESET )
|
||||||
{
|
{
|
||||||
jtag_add_tlr();
|
jtag_add_tlr();
|
||||||
}
|
}
|
||||||
else if ( tap_is_state_stable(cur_state) && tap_is_state_stable(goal_state) )
|
else if (tap_is_state_stable(cur_state) && tap_is_state_stable(goal_state) )
|
||||||
{
|
{
|
||||||
unsigned tms_bits = tap_get_tms_path(cur_state, goal_state);
|
unsigned tms_bits = tap_get_tms_path(cur_state, goal_state);
|
||||||
unsigned tms_count = tap_get_tms_path_len(cur_state, goal_state);
|
unsigned tms_count = tap_get_tms_path_len(cur_state, goal_state);
|
||||||
|
@ -531,7 +531,7 @@ int jtag_add_statemove(tap_state_t goal_state)
|
||||||
|
|
||||||
jtag_add_pathmove(tms_count, moves);
|
jtag_add_pathmove(tms_count, moves);
|
||||||
}
|
}
|
||||||
else if ( tap_state_transition(cur_state, true) == goal_state
|
else if (tap_state_transition(cur_state, true) == goal_state
|
||||||
|| tap_state_transition(cur_state, false) == goal_state )
|
|| tap_state_transition(cur_state, false) == goal_state )
|
||||||
{
|
{
|
||||||
jtag_add_pathmove(1, &goal_state);
|
jtag_add_pathmove(1, &goal_state);
|
||||||
|
@ -885,7 +885,7 @@ static bool jtag_idcode_is_final(uint32_t idcode)
|
||||||
static void jtag_examine_chain_end(uint8_t *idcodes, unsigned count, unsigned max)
|
static void jtag_examine_chain_end(uint8_t *idcodes, unsigned count, unsigned max)
|
||||||
{
|
{
|
||||||
bool triggered = false;
|
bool triggered = false;
|
||||||
for ( ; count < max - 31; count += 32)
|
for (; count < max - 31; count += 32)
|
||||||
{
|
{
|
||||||
uint32_t idcode = buf_get_u32(idcodes, count, 32);
|
uint32_t idcode = buf_get_u32(idcodes, count, 32);
|
||||||
// do not trigger the warning if the data looks good
|
// do not trigger the warning if the data looks good
|
||||||
|
@ -1026,7 +1026,7 @@ int jtag_validate_chain(void)
|
||||||
total_ir_length = 0;
|
total_ir_length = 0;
|
||||||
for (;;){
|
for (;;){
|
||||||
tap = jtag_tap_next_enabled(tap);
|
tap = jtag_tap_next_enabled(tap);
|
||||||
if ( tap == NULL ){
|
if (tap == NULL ){
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
total_ir_length += tap->ir_length;
|
total_ir_length += tap->ir_length;
|
||||||
|
@ -1050,7 +1050,7 @@ int jtag_validate_chain(void)
|
||||||
int val;
|
int val;
|
||||||
for (;;){
|
for (;;){
|
||||||
tap = jtag_tap_next_enabled(tap);
|
tap = jtag_tap_next_enabled(tap);
|
||||||
if ( tap == NULL ){
|
if (tap == NULL ){
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1151,7 +1151,7 @@ static int jtag_init_inner(struct command_context_s *cmd_ctx)
|
||||||
LOG_DEBUG("Init JTAG chain");
|
LOG_DEBUG("Init JTAG chain");
|
||||||
|
|
||||||
tap = jtag_tap_next_enabled(NULL);
|
tap = jtag_tap_next_enabled(NULL);
|
||||||
if ( tap == NULL ){
|
if (tap == NULL ){
|
||||||
LOG_ERROR("There are no enabled taps?");
|
LOG_ERROR("There are no enabled taps?");
|
||||||
return ERROR_JTAG_INIT_FAILED;
|
return ERROR_JTAG_INIT_FAILED;
|
||||||
}
|
}
|
||||||
|
|
|
@ -418,7 +418,7 @@ int interface_jtag_add_runtest(int num_cycles, tap_state_t state)
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int interface_jtag_add_clocks( int num_cycles )
|
int interface_jtag_add_clocks(int num_cycles )
|
||||||
{
|
{
|
||||||
/* allocate memory for a new list member */
|
/* allocate memory for a new list member */
|
||||||
jtag_command_t * cmd = cmd_queue_alloc(sizeof(jtag_command_t));
|
jtag_command_t * cmd = cmd_queue_alloc(sizeof(jtag_command_t));
|
||||||
|
|
|
@ -85,16 +85,16 @@ static int dummy_read(void)
|
||||||
static void dummy_write(int tck, int tms, int tdi)
|
static void dummy_write(int tck, int tms, int tdi)
|
||||||
{
|
{
|
||||||
/* TAP standard: "state transitions occur on rising edge of clock" */
|
/* TAP standard: "state transitions occur on rising edge of clock" */
|
||||||
if ( tck != dummy_clock )
|
if (tck != dummy_clock )
|
||||||
{
|
{
|
||||||
if ( tck )
|
if (tck )
|
||||||
{
|
{
|
||||||
tap_state_t old_state = dummy_state;
|
tap_state_t old_state = dummy_state;
|
||||||
dummy_state = tap_state_transition( old_state, tms );
|
dummy_state = tap_state_transition(old_state, tms );
|
||||||
|
|
||||||
if ( old_state != dummy_state )
|
if (old_state != dummy_state )
|
||||||
{
|
{
|
||||||
if ( clock_count )
|
if (clock_count )
|
||||||
{
|
{
|
||||||
LOG_DEBUG("dummy_tap: %d stable clocks", clock_count);
|
LOG_DEBUG("dummy_tap: %d stable clocks", clock_count);
|
||||||
clock_count = 0;
|
clock_count = 0;
|
||||||
|
|
|
@ -876,7 +876,7 @@ static void ft2232_add_scan(bool ir_scan, enum scan_type type, uint8_t* buffer,
|
||||||
buffer_write(buffer[cur_byte]);
|
buffer_write(buffer[cur_byte]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (( ir_scan && (tap_get_end_state() == TAP_IRSHIFT))
|
if ((ir_scan && (tap_get_end_state() == TAP_IRSHIFT))
|
||||||
|| (!ir_scan && (tap_get_end_state() == TAP_DRSHIFT)))
|
|| (!ir_scan && (tap_get_end_state() == TAP_DRSHIFT)))
|
||||||
{
|
{
|
||||||
if (type == SCAN_IO)
|
if (type == SCAN_IO)
|
||||||
|
|
|
@ -422,20 +422,20 @@ static int gw16012_get_giveio_access(void)
|
||||||
OSVERSIONINFO version;
|
OSVERSIONINFO version;
|
||||||
|
|
||||||
version.dwOSVersionInfoSize = sizeof version;
|
version.dwOSVersionInfoSize = sizeof version;
|
||||||
if (!GetVersionEx( &version )) {
|
if (!GetVersionEx(&version )) {
|
||||||
errno = EINVAL;
|
errno = EINVAL;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (version.dwPlatformId != VER_PLATFORM_WIN32_NT)
|
if (version.dwPlatformId != VER_PLATFORM_WIN32_NT)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
h = CreateFile( "\\\\.\\giveio", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
|
h = CreateFile("\\\\.\\giveio", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
|
||||||
if (h == INVALID_HANDLE_VALUE) {
|
if (h == INVALID_HANDLE_VALUE) {
|
||||||
errno = ENODEV;
|
errno = ENODEV;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
CloseHandle( h );
|
CloseHandle(h );
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
*/
|
*/
|
||||||
static tap_state_t state_follower = TAP_RESET;
|
static tap_state_t state_follower = TAP_RESET;
|
||||||
|
|
||||||
void tap_set_state_impl( tap_state_t new_state )
|
void tap_set_state_impl(tap_state_t new_state )
|
||||||
{
|
{
|
||||||
/* this is the state we think the TAPs are in now, was cur_state */
|
/* this is the state we think the TAPs are in now, was cur_state */
|
||||||
state_follower = new_state;
|
state_follower = new_state;
|
||||||
|
@ -57,7 +57,7 @@ tap_state_t tap_get_state()
|
||||||
*/
|
*/
|
||||||
static tap_state_t end_state_follower = TAP_RESET;
|
static tap_state_t end_state_follower = TAP_RESET;
|
||||||
|
|
||||||
void tap_set_end_state( tap_state_t new_end_state )
|
void tap_set_end_state(tap_state_t new_end_state )
|
||||||
{
|
{
|
||||||
/* this is the state we think the TAPs will be in at completion of the
|
/* this is the state we think the TAPs will be in at completion of the
|
||||||
current TAP operation, was end_state
|
current TAP operation, was end_state
|
||||||
|
@ -71,13 +71,13 @@ tap_state_t tap_get_end_state()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int tap_move_ndx( tap_state_t astate )
|
int tap_move_ndx(tap_state_t astate )
|
||||||
{
|
{
|
||||||
/* given a stable state, return the index into the tms_seqs[] array within tap_get_tms_path() */
|
/* given a stable state, return the index into the tms_seqs[] array within tap_get_tms_path() */
|
||||||
|
|
||||||
int ndx;
|
int ndx;
|
||||||
|
|
||||||
switch ( astate )
|
switch (astate )
|
||||||
{
|
{
|
||||||
case TAP_RESET: ndx = 0; break;
|
case TAP_RESET: ndx = 0; break;
|
||||||
case TAP_DRSHIFT: ndx = 2; break;
|
case TAP_DRSHIFT: ndx = 2; break;
|
||||||
|
@ -86,7 +86,7 @@ int tap_move_ndx( tap_state_t astate )
|
||||||
case TAP_IRSHIFT: ndx = 4; break;
|
case TAP_IRSHIFT: ndx = 4; break;
|
||||||
case TAP_IRPAUSE: ndx = 5; break;
|
case TAP_IRPAUSE: ndx = 5; break;
|
||||||
default:
|
default:
|
||||||
LOG_ERROR( "fatal: unstable state \"%s\" used in tap_move_ndx()", tap_state_name(astate) );
|
LOG_ERROR("fatal: unstable state \"%s\" used in tap_move_ndx()", tap_state_name(astate) );
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -193,13 +193,13 @@ typedef const struct tms_sequences tms_table[6][6];
|
||||||
|
|
||||||
static tms_table *tms_seqs=&short_tms_seqs;
|
static tms_table *tms_seqs=&short_tms_seqs;
|
||||||
|
|
||||||
int tap_get_tms_path( tap_state_t from, tap_state_t to )
|
int tap_get_tms_path(tap_state_t from, tap_state_t to )
|
||||||
{
|
{
|
||||||
return (*tms_seqs)[tap_move_ndx(from)][tap_move_ndx(to)].bits;
|
return (*tms_seqs)[tap_move_ndx(from)][tap_move_ndx(to)].bits;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int tap_get_tms_path_len( tap_state_t from, tap_state_t to )
|
int tap_get_tms_path_len(tap_state_t from, tap_state_t to )
|
||||||
{
|
{
|
||||||
return (*tms_seqs)[tap_move_ndx(from)][tap_move_ndx(to)].bit_count;
|
return (*tms_seqs)[tap_move_ndx(from)][tap_move_ndx(to)].bit_count;
|
||||||
}
|
}
|
||||||
|
@ -212,7 +212,7 @@ bool tap_is_state_stable(tap_state_t astate)
|
||||||
/* A switch () is used because it is symbol dependent
|
/* A switch () is used because it is symbol dependent
|
||||||
(not value dependent like an array), and can also check bounds.
|
(not value dependent like an array), and can also check bounds.
|
||||||
*/
|
*/
|
||||||
switch ( astate )
|
switch (astate )
|
||||||
{
|
{
|
||||||
case TAP_RESET:
|
case TAP_RESET:
|
||||||
case TAP_IDLE:
|
case TAP_IDLE:
|
||||||
|
@ -278,7 +278,7 @@ tap_state_t tap_state_transition(tap_state_t cur_state, bool tms)
|
||||||
new_state = TAP_IREXIT2;
|
new_state = TAP_IREXIT2;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
LOG_ERROR( "fatal: invalid argument cur_state=%d", cur_state );
|
LOG_ERROR("fatal: invalid argument cur_state=%d", cur_state );
|
||||||
exit(1);
|
exit(1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -318,7 +318,7 @@ tap_state_t tap_state_transition(tap_state_t cur_state, bool tms)
|
||||||
new_state = TAP_IRPAUSE;
|
new_state = TAP_IRPAUSE;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
LOG_ERROR( "fatal: invalid argument cur_state=%d", cur_state );
|
LOG_ERROR("fatal: invalid argument cur_state=%d", cur_state );
|
||||||
exit(1);
|
exit(1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -331,7 +331,7 @@ const char* tap_state_name(tap_state_t state)
|
||||||
{
|
{
|
||||||
const char* ret;
|
const char* ret;
|
||||||
|
|
||||||
switch ( state )
|
switch (state )
|
||||||
{
|
{
|
||||||
case TAP_RESET: ret = "RESET"; break;
|
case TAP_RESET: ret = "RESET"; break;
|
||||||
case TAP_IDLE: ret = "RUN/IDLE"; break;
|
case TAP_IDLE: ret = "RUN/IDLE"; break;
|
||||||
|
@ -359,9 +359,9 @@ tap_state_t tap_state_by_name(const char *name)
|
||||||
{
|
{
|
||||||
tap_state_t x;
|
tap_state_t x;
|
||||||
|
|
||||||
for ( x = 0 ; x < TAP_NUM_STATES ; x++ ){
|
for (x = 0 ; x < TAP_NUM_STATES ; x++ ){
|
||||||
/* be nice to the human */
|
/* be nice to the human */
|
||||||
if ( 0 == strcasecmp( name, tap_state_name(x) ) ){
|
if (0 == strcasecmp(name, tap_state_name(x) ) ){
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,7 +59,7 @@ void tap_set_state_impl(tap_state_t new_state);
|
||||||
#if defined(_DEBUG_JTAG_IO_)
|
#if defined(_DEBUG_JTAG_IO_)
|
||||||
#define tap_set_state(new_state) \
|
#define tap_set_state(new_state) \
|
||||||
do { \
|
do { \
|
||||||
LOG_DEBUG( "tap_set_state(%s)", tap_state_name(new_state) ); \
|
LOG_DEBUG("tap_set_state(%s)", tap_state_name(new_state) ); \
|
||||||
tap_set_state_impl(new_state); \
|
tap_set_state_impl(new_state); \
|
||||||
} while (0)
|
} while (0)
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -263,20 +263,20 @@ static int parport_get_giveio_access(void)
|
||||||
OSVERSIONINFO version;
|
OSVERSIONINFO version;
|
||||||
|
|
||||||
version.dwOSVersionInfoSize = sizeof version;
|
version.dwOSVersionInfoSize = sizeof version;
|
||||||
if (!GetVersionEx( &version )) {
|
if (!GetVersionEx(&version )) {
|
||||||
errno = EINVAL;
|
errno = EINVAL;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (version.dwPlatformId != VER_PLATFORM_WIN32_NT)
|
if (version.dwPlatformId != VER_PLATFORM_WIN32_NT)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
h = CreateFile( "\\\\.\\giveio", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
|
h = CreateFile("\\\\.\\giveio", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
|
||||||
if (h == INVALID_HANDLE_VALUE) {
|
if (h == INVALID_HANDLE_VALUE) {
|
||||||
errno = ENODEV;
|
errno = ENODEV;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
CloseHandle( h );
|
CloseHandle(h );
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,11 +39,11 @@
|
||||||
#define DTC_CMD_SHIFT_TDIO_BYTES(bytes) ((0x6 << 4) | ((bytes) - 1))
|
#define DTC_CMD_SHIFT_TDIO_BYTES(bytes) ((0x6 << 4) | ((bytes) - 1))
|
||||||
/* Shift 1-16 bytes out TDI and in TDO. TMS is unaffected. */
|
/* Shift 1-16 bytes out TDI and in TDO. TMS is unaffected. */
|
||||||
|
|
||||||
#define DTC_CMD_SHIFT_TMS_TDI_BIT_PAIR(tms, tdi, tdo) ((0x8 << 4) | ( \
|
#define DTC_CMD_SHIFT_TMS_TDI_BIT_PAIR(tms, tdi, tdo) ((0x8 << 4) | (\
|
||||||
(tms) ? (1 << 0) : 0 \
|
(tms) ? (1 << 0) : 0 \
|
||||||
) | ( \
|
) | (\
|
||||||
(tdi) ? (1 << 1) : 0 \
|
(tdi) ? (1 << 1) : 0 \
|
||||||
) | ( \
|
) | (\
|
||||||
(tdo) ? (1 << 3) : 0 \
|
(tdo) ? (1 << 3) : 0 \
|
||||||
))
|
))
|
||||||
/* Single bit shift. */
|
/* Single bit shift. */
|
||||||
|
|
|
@ -1636,26 +1636,26 @@ int rlink_init(void)
|
||||||
|
|
||||||
for (dev = bus->devices; dev; dev = dev->next)
|
for (dev = bus->devices; dev; dev = dev->next)
|
||||||
{
|
{
|
||||||
if ( (dev->descriptor.idVendor == USB_IDVENDOR) && (dev->descriptor.idProduct == USB_IDPRODUCT) )
|
if ((dev->descriptor.idVendor == USB_IDVENDOR) && (dev->descriptor.idProduct == USB_IDPRODUCT) )
|
||||||
{
|
{
|
||||||
found = 1;
|
found = 1;
|
||||||
LOG_DEBUG("Found device on bus.\n");
|
LOG_DEBUG("Found device on bus.\n");
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
if ( dev->descriptor.bNumConfigurations > 1 )
|
if (dev->descriptor.bNumConfigurations > 1 )
|
||||||
{
|
{
|
||||||
LOG_ERROR("Whoops! NumConfigurations is not 1, don't know what to do...\n");
|
LOG_ERROR("Whoops! NumConfigurations is not 1, don't know what to do...\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if ( dev->config->bNumInterfaces > 1 )
|
if (dev->config->bNumInterfaces > 1 )
|
||||||
{
|
{
|
||||||
LOG_ERROR("Whoops! NumInterfaces is not 1, don't know what to do...\n");
|
LOG_ERROR("Whoops! NumInterfaces is not 1, don't know what to do...\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
pHDev = usb_open(dev);
|
pHDev = usb_open(dev);
|
||||||
if ( !pHDev )
|
if (!pHDev )
|
||||||
LOG_ERROR ("Failed to open device.\n");
|
LOG_ERROR ("Failed to open device.\n");
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1686,7 +1686,7 @@ int rlink_init(void)
|
||||||
|
|
||||||
if (!i)
|
if (!i)
|
||||||
{
|
{
|
||||||
if ( usb_set_altinterface(pHDev,0) )
|
if (usb_set_altinterface(pHDev,0) )
|
||||||
{
|
{
|
||||||
LOG_ERROR("Failed to set interface.\n");
|
LOG_ERROR("Failed to set interface.\n");
|
||||||
break;
|
break;
|
||||||
|
@ -1700,13 +1700,13 @@ int rlink_init(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !found )
|
if (!found )
|
||||||
{
|
{
|
||||||
LOG_ERROR("No device found on bus.\n");
|
LOG_ERROR("No device found on bus.\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !success )
|
if (!success )
|
||||||
{
|
{
|
||||||
LOG_ERROR("Initialisation failed.");
|
LOG_ERROR("Initialisation failed.");
|
||||||
exit(1);
|
exit(1);
|
||||||
|
|
218
src/jtag/tcl.c
218
src/jtag/tcl.c
|
@ -209,7 +209,7 @@ static Jim_Nvp nvp_config_opts[] = {
|
||||||
{ .name = NULL, .value = -1 }
|
{ .name = NULL, .value = -1 }
|
||||||
};
|
};
|
||||||
|
|
||||||
static int jtag_tap_configure_cmd( Jim_GetOptInfo *goi, jtag_tap_t * tap)
|
static int jtag_tap_configure_cmd(Jim_GetOptInfo *goi, jtag_tap_t * tap)
|
||||||
{
|
{
|
||||||
Jim_Nvp *n;
|
Jim_Nvp *n;
|
||||||
Jim_Obj *o;
|
Jim_Obj *o;
|
||||||
|
@ -228,11 +228,11 @@ static int jtag_tap_configure_cmd( Jim_GetOptInfo *goi, jtag_tap_t * tap)
|
||||||
switch (n->value) {
|
switch (n->value) {
|
||||||
case JCFG_EVENT:
|
case JCFG_EVENT:
|
||||||
if (goi->argc == 0) {
|
if (goi->argc == 0) {
|
||||||
Jim_WrongNumArgs( goi->interp, goi->argc, goi->argv, "-event ?event-name? ..." );
|
Jim_WrongNumArgs(goi->interp, goi->argc, goi->argv, "-event ?event-name? ..." );
|
||||||
return JIM_ERR;
|
return JIM_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
e = Jim_GetOpt_Nvp( goi, nvp_jtag_tap_event, &n );
|
e = Jim_GetOpt_Nvp(goi, nvp_jtag_tap_event, &n );
|
||||||
if (e != JIM_OK) {
|
if (e != JIM_OK) {
|
||||||
Jim_GetOpt_NvpUnknown(goi, nvp_jtag_tap_event, 1);
|
Jim_GetOpt_NvpUnknown(goi, nvp_jtag_tap_event, 1);
|
||||||
return e;
|
return e;
|
||||||
|
@ -268,7 +268,7 @@ static int jtag_tap_configure_cmd( Jim_GetOptInfo *goi, jtag_tap_t * tap)
|
||||||
jteap = calloc(1, sizeof (*jteap));
|
jteap = calloc(1, sizeof (*jteap));
|
||||||
}
|
}
|
||||||
jteap->event = n->value;
|
jteap->event = n->value;
|
||||||
Jim_GetOpt_Obj( goi, &o);
|
Jim_GetOpt_Obj(goi, &o);
|
||||||
if (jteap->body) {
|
if (jteap->body) {
|
||||||
Jim_DecrRefCount(interp, jteap->body);
|
Jim_DecrRefCount(interp, jteap->body);
|
||||||
}
|
}
|
||||||
|
@ -306,7 +306,7 @@ static int is_bad_irval(int ir_length, jim_wide w)
|
||||||
return (w & v) != 0;
|
return (w & v) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int jim_newtap_cmd( Jim_GetOptInfo *goi )
|
static int jim_newtap_cmd(Jim_GetOptInfo *goi )
|
||||||
{
|
{
|
||||||
jtag_tap_t *pTap;
|
jtag_tap_t *pTap;
|
||||||
jim_wide w;
|
jim_wide w;
|
||||||
|
@ -340,20 +340,20 @@ static int jim_newtap_cmd( Jim_GetOptInfo *goi )
|
||||||
/*
|
/*
|
||||||
* we expect CHIP + TAP + OPTIONS
|
* we expect CHIP + TAP + OPTIONS
|
||||||
* */
|
* */
|
||||||
if ( goi->argc < 3 ){
|
if (goi->argc < 3 ){
|
||||||
Jim_SetResult_sprintf(goi->interp, "Missing CHIP TAP OPTIONS ....");
|
Jim_SetResult_sprintf(goi->interp, "Missing CHIP TAP OPTIONS ....");
|
||||||
return JIM_ERR;
|
return JIM_ERR;
|
||||||
}
|
}
|
||||||
Jim_GetOpt_String( goi, &cp, NULL );
|
Jim_GetOpt_String(goi, &cp, NULL );
|
||||||
pTap->chip = strdup(cp);
|
pTap->chip = strdup(cp);
|
||||||
|
|
||||||
Jim_GetOpt_String( goi, &cp, NULL );
|
Jim_GetOpt_String(goi, &cp, NULL );
|
||||||
pTap->tapname = strdup(cp);
|
pTap->tapname = strdup(cp);
|
||||||
|
|
||||||
/* name + dot + name + null */
|
/* name + dot + name + null */
|
||||||
x = strlen(pTap->chip) + 1 + strlen(pTap->tapname) + 1;
|
x = strlen(pTap->chip) + 1 + strlen(pTap->tapname) + 1;
|
||||||
cp = malloc( x );
|
cp = malloc(x );
|
||||||
sprintf( cp, "%s.%s", pTap->chip, pTap->tapname );
|
sprintf(cp, "%s.%s", pTap->chip, pTap->tapname );
|
||||||
pTap->dotted_name = cp;
|
pTap->dotted_name = cp;
|
||||||
|
|
||||||
LOG_DEBUG("Creating New Tap, Chip: %s, Tap: %s, Dotted: %s, %d params",
|
LOG_DEBUG("Creating New Tap, Chip: %s, Tap: %s, Dotted: %s, %d params",
|
||||||
|
@ -367,14 +367,14 @@ static int jim_newtap_cmd( Jim_GetOptInfo *goi )
|
||||||
/* clear them as we find them */
|
/* clear them as we find them */
|
||||||
reqbits = (NTREQ_IRLEN | NTREQ_IRCAPTURE | NTREQ_IRMASK);
|
reqbits = (NTREQ_IRLEN | NTREQ_IRCAPTURE | NTREQ_IRMASK);
|
||||||
|
|
||||||
while ( goi->argc ){
|
while (goi->argc ){
|
||||||
e = Jim_GetOpt_Nvp( goi, opts, &n );
|
e = Jim_GetOpt_Nvp(goi, opts, &n );
|
||||||
if ( e != JIM_OK ){
|
if (e != JIM_OK ){
|
||||||
Jim_GetOpt_NvpUnknown( goi, opts, 0 );
|
Jim_GetOpt_NvpUnknown(goi, opts, 0 );
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
LOG_DEBUG("Processing option: %s", n->name );
|
LOG_DEBUG("Processing option: %s", n->name );
|
||||||
switch ( n->value ){
|
switch (n->value ){
|
||||||
case NTAP_OPT_ENABLED:
|
case NTAP_OPT_ENABLED:
|
||||||
pTap->disabled_after_reset = false;
|
pTap->disabled_after_reset = false;
|
||||||
break;
|
break;
|
||||||
|
@ -385,15 +385,15 @@ static int jim_newtap_cmd( Jim_GetOptInfo *goi )
|
||||||
{
|
{
|
||||||
uint32_t *new_expected_ids;
|
uint32_t *new_expected_ids;
|
||||||
|
|
||||||
e = Jim_GetOpt_Wide( goi, &w );
|
e = Jim_GetOpt_Wide(goi, &w );
|
||||||
if ( e != JIM_OK) {
|
if (e != JIM_OK) {
|
||||||
Jim_SetResult_sprintf(goi->interp, "option: %s bad parameter", n->name);
|
Jim_SetResult_sprintf(goi->interp, "option: %s bad parameter", n->name);
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
new_expected_ids = malloc(sizeof(uint32_t) * (pTap->expected_ids_cnt + 1));
|
new_expected_ids = malloc(sizeof(uint32_t) * (pTap->expected_ids_cnt + 1));
|
||||||
if (new_expected_ids == NULL) {
|
if (new_expected_ids == NULL) {
|
||||||
Jim_SetResult_sprintf( goi->interp, "no memory");
|
Jim_SetResult_sprintf(goi->interp, "no memory");
|
||||||
return JIM_ERR;
|
return JIM_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -409,9 +409,9 @@ static int jim_newtap_cmd( Jim_GetOptInfo *goi )
|
||||||
case NTAP_OPT_IRLEN:
|
case NTAP_OPT_IRLEN:
|
||||||
case NTAP_OPT_IRMASK:
|
case NTAP_OPT_IRMASK:
|
||||||
case NTAP_OPT_IRCAPTURE:
|
case NTAP_OPT_IRCAPTURE:
|
||||||
e = Jim_GetOpt_Wide( goi, &w );
|
e = Jim_GetOpt_Wide(goi, &w );
|
||||||
if ( e != JIM_OK ){
|
if (e != JIM_OK ){
|
||||||
Jim_SetResult_sprintf( goi->interp, "option: %s bad parameter", n->name );
|
Jim_SetResult_sprintf(goi->interp, "option: %s bad parameter", n->name );
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
switch (n->value){
|
switch (n->value){
|
||||||
|
@ -441,7 +441,7 @@ static int jim_newtap_cmd( Jim_GetOptInfo *goi )
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} /* switch (n->value) */
|
} /* switch (n->value) */
|
||||||
} /* while ( goi->argc ) */
|
} /* while (goi->argc ) */
|
||||||
|
|
||||||
/* default is enabled-after-reset */
|
/* default is enabled-after-reset */
|
||||||
pTap->enabled = !pTap->disabled_after_reset;
|
pTap->enabled = !pTap->disabled_after_reset;
|
||||||
|
@ -471,7 +471,7 @@ static void jtag_tap_handle_event(jtag_tap_t *tap, enum jtag_event e)
|
||||||
while (jteap) {
|
while (jteap) {
|
||||||
if (jteap->event == e) {
|
if (jteap->event == e) {
|
||||||
done = 1;
|
done = 1;
|
||||||
LOG_DEBUG( "JTAG tap: %s event: %d (%s) action: %s\n",
|
LOG_DEBUG("JTAG tap: %s event: %d (%s) action: %s\n",
|
||||||
tap->dotted_name,
|
tap->dotted_name,
|
||||||
e,
|
e,
|
||||||
Jim_Nvp_value2name_simple(nvp_jtag_tap_event, e)->name,
|
Jim_Nvp_value2name_simple(nvp_jtag_tap_event, e)->name,
|
||||||
|
@ -491,14 +491,14 @@ static void jtag_tap_handle_event(jtag_tap_t *tap, enum jtag_event e)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!done) {
|
if (!done) {
|
||||||
LOG_DEBUG( "event %d %s - no action",
|
LOG_DEBUG("event %d %s - no action",
|
||||||
e,
|
e,
|
||||||
Jim_Nvp_value2name_simple( nvp_jtag_tap_event, e)->name);
|
Jim_Nvp_value2name_simple(nvp_jtag_tap_event, e)->name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int jim_jtag_command( Jim_Interp *interp, int argc, Jim_Obj *const *argv )
|
static int jim_jtag_command(Jim_Interp *interp, int argc, Jim_Obj *const *argv )
|
||||||
{
|
{
|
||||||
Jim_GetOptInfo goi;
|
Jim_GetOptInfo goi;
|
||||||
int e;
|
int e;
|
||||||
|
@ -532,44 +532,44 @@ static int jim_jtag_command( Jim_Interp *interp, int argc, Jim_Obj *const *argv
|
||||||
|
|
||||||
context = Jim_GetAssocData(interp, "context");
|
context = Jim_GetAssocData(interp, "context");
|
||||||
/* go past the command */
|
/* go past the command */
|
||||||
Jim_GetOpt_Setup( &goi, interp, argc-1, argv + 1 );
|
Jim_GetOpt_Setup(&goi, interp, argc-1, argv + 1 );
|
||||||
|
|
||||||
e = Jim_GetOpt_Nvp( &goi, jtag_cmds, &n );
|
e = Jim_GetOpt_Nvp(&goi, jtag_cmds, &n );
|
||||||
if ( e != JIM_OK ){
|
if (e != JIM_OK ){
|
||||||
Jim_GetOpt_NvpUnknown( &goi, jtag_cmds, 0 );
|
Jim_GetOpt_NvpUnknown(&goi, jtag_cmds, 0 );
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
Jim_SetEmptyResult( goi.interp );
|
Jim_SetEmptyResult(goi.interp );
|
||||||
switch ( n->value ){
|
switch (n->value ){
|
||||||
case JTAG_CMD_INTERFACE:
|
case JTAG_CMD_INTERFACE:
|
||||||
/* return the name of the interface */
|
/* return the name of the interface */
|
||||||
/* TCL code might need to know the exact type... */
|
/* TCL code might need to know the exact type... */
|
||||||
/* FUTURE: we allow this as a means to "set" the interface. */
|
/* FUTURE: we allow this as a means to "set" the interface. */
|
||||||
if ( goi.argc != 0 ){
|
if (goi.argc != 0 ){
|
||||||
Jim_WrongNumArgs( goi.interp, 1, goi.argv-1, "(no params)");
|
Jim_WrongNumArgs(goi.interp, 1, goi.argv-1, "(no params)");
|
||||||
return JIM_ERR;
|
return JIM_ERR;
|
||||||
}
|
}
|
||||||
Jim_SetResultString( goi.interp, jtag_interface->name, -1 );
|
Jim_SetResultString(goi.interp, jtag_interface->name, -1 );
|
||||||
return JIM_OK;
|
return JIM_OK;
|
||||||
case JTAG_CMD_INIT_RESET:
|
case JTAG_CMD_INIT_RESET:
|
||||||
if ( goi.argc != 0 ){
|
if (goi.argc != 0 ){
|
||||||
Jim_WrongNumArgs( goi.interp, 1, goi.argv-1, "(no params)");
|
Jim_WrongNumArgs(goi.interp, 1, goi.argv-1, "(no params)");
|
||||||
return JIM_ERR;
|
return JIM_ERR;
|
||||||
}
|
}
|
||||||
e = jtag_init_reset(context);
|
e = jtag_init_reset(context);
|
||||||
if ( e != ERROR_OK ){
|
if (e != ERROR_OK ){
|
||||||
Jim_SetResult_sprintf( goi.interp, "error: %d", e);
|
Jim_SetResult_sprintf(goi.interp, "error: %d", e);
|
||||||
return JIM_ERR;
|
return JIM_ERR;
|
||||||
}
|
}
|
||||||
return JIM_OK;
|
return JIM_OK;
|
||||||
case JTAG_CMD_NEWTAP:
|
case JTAG_CMD_NEWTAP:
|
||||||
return jim_newtap_cmd( &goi );
|
return jim_newtap_cmd(&goi );
|
||||||
break;
|
break;
|
||||||
case JTAG_CMD_TAPISENABLED:
|
case JTAG_CMD_TAPISENABLED:
|
||||||
case JTAG_CMD_TAPENABLE:
|
case JTAG_CMD_TAPENABLE:
|
||||||
case JTAG_CMD_TAPDISABLE:
|
case JTAG_CMD_TAPDISABLE:
|
||||||
if ( goi.argc != 1 ){
|
if (goi.argc != 1 ){
|
||||||
Jim_SetResultString( goi.interp, "Too many parameters",-1 );
|
Jim_SetResultString(goi.interp, "Too many parameters",-1 );
|
||||||
return JIM_ERR;
|
return JIM_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -619,8 +619,8 @@ static int jim_jtag_command( Jim_Interp *interp, int argc, Jim_Obj *const *argv
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case JTAG_CMD_CGET:
|
case JTAG_CMD_CGET:
|
||||||
if ( goi.argc < 2 ){
|
if (goi.argc < 2 ){
|
||||||
Jim_WrongNumArgs( goi.interp, 0, NULL, "?tap-name? -option ...");
|
Jim_WrongNumArgs(goi.interp, 0, NULL, "?tap-name? -option ...");
|
||||||
return JIM_ERR;
|
return JIM_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -628,19 +628,19 @@ static int jim_jtag_command( Jim_Interp *interp, int argc, Jim_Obj *const *argv
|
||||||
jtag_tap_t *t;
|
jtag_tap_t *t;
|
||||||
|
|
||||||
Jim_GetOpt_Obj(&goi, &o);
|
Jim_GetOpt_Obj(&goi, &o);
|
||||||
t = jtag_tap_by_jim_obj( goi.interp, o );
|
t = jtag_tap_by_jim_obj(goi.interp, o );
|
||||||
if ( t == NULL ){
|
if (t == NULL ){
|
||||||
return JIM_ERR;
|
return JIM_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
goi.isconfigure = 0;
|
goi.isconfigure = 0;
|
||||||
return jtag_tap_configure_cmd( &goi, t);
|
return jtag_tap_configure_cmd(&goi, t);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case JTAG_CMD_CONFIGURE:
|
case JTAG_CMD_CONFIGURE:
|
||||||
if ( goi.argc < 3 ){
|
if (goi.argc < 3 ){
|
||||||
Jim_WrongNumArgs( goi.interp, 0, NULL, "?tap-name? -option ?VALUE? ...");
|
Jim_WrongNumArgs(goi.interp, 0, NULL, "?tap-name? -option ?VALUE? ...");
|
||||||
return JIM_ERR;
|
return JIM_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -648,13 +648,13 @@ static int jim_jtag_command( Jim_Interp *interp, int argc, Jim_Obj *const *argv
|
||||||
jtag_tap_t *t;
|
jtag_tap_t *t;
|
||||||
|
|
||||||
Jim_GetOpt_Obj(&goi, &o);
|
Jim_GetOpt_Obj(&goi, &o);
|
||||||
t = jtag_tap_by_jim_obj( goi.interp, o );
|
t = jtag_tap_by_jim_obj(goi.interp, o );
|
||||||
if ( t == NULL ){
|
if (t == NULL ){
|
||||||
return JIM_ERR;
|
return JIM_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
goi.isconfigure = 1;
|
goi.isconfigure = 1;
|
||||||
return jtag_tap_configure_cmd( &goi, t);
|
return jtag_tap_configure_cmd(&goi, t);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -663,7 +663,7 @@ static int jim_jtag_command( Jim_Interp *interp, int argc, Jim_Obj *const *argv
|
||||||
|
|
||||||
int jtag_register_commands(struct command_context_s *cmd_ctx)
|
int jtag_register_commands(struct command_context_s *cmd_ctx)
|
||||||
{
|
{
|
||||||
register_jim( cmd_ctx, "jtag", jim_jtag_command, "perform jtag tap actions");
|
register_jim(cmd_ctx, "jtag", jim_jtag_command, "perform jtag tap actions");
|
||||||
|
|
||||||
register_command(cmd_ctx, NULL, "interface", handle_interface_command,
|
register_command(cmd_ctx, NULL, "interface", handle_interface_command,
|
||||||
COMMAND_CONFIG, "try to configure interface");
|
COMMAND_CONFIG, "try to configure interface");
|
||||||
|
@ -806,49 +806,49 @@ static int handle_jtag_device_command(struct command_context_s *cmd_ctx, char *c
|
||||||
* argv[ 3] = not actually used by anything but in the docs
|
* argv[ 3] = not actually used by anything but in the docs
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ( argc < 4 ){
|
if (argc < 4 ){
|
||||||
command_print( cmd_ctx, "OLD DEPRECATED SYNTAX: Please use the NEW syntax");
|
command_print(cmd_ctx, "OLD DEPRECATED SYNTAX: Please use the NEW syntax");
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
command_print( cmd_ctx, "OLD SYNTAX: DEPRECATED - translating to new syntax");
|
command_print(cmd_ctx, "OLD SYNTAX: DEPRECATED - translating to new syntax");
|
||||||
command_print( cmd_ctx, "jtag newtap CHIP TAP -irlen %s -ircapture %s -irvalue %s",
|
command_print(cmd_ctx, "jtag newtap CHIP TAP -irlen %s -ircapture %s -irvalue %s",
|
||||||
args[0],
|
args[0],
|
||||||
args[1],
|
args[1],
|
||||||
args[2] );
|
args[2] );
|
||||||
command_print( cmd_ctx, "Example: STM32 has 2 taps, the cortexM3(len4) + boundaryscan(len5)");
|
command_print(cmd_ctx, "Example: STM32 has 2 taps, the cortexM3(len4) + boundaryscan(len5)");
|
||||||
command_print( cmd_ctx, "jtag newtap stm32 cortexm3 ....., thus creating the tap: \"stm32.cortexm3\"");
|
command_print(cmd_ctx, "jtag newtap stm32 cortexm3 ....., thus creating the tap: \"stm32.cortexm3\"");
|
||||||
command_print( cmd_ctx, "jtag newtap stm32 boundary ....., and the tap: \"stm32.boundary\"");
|
command_print(cmd_ctx, "jtag newtap stm32 boundary ....., and the tap: \"stm32.boundary\"");
|
||||||
command_print( cmd_ctx, "And then refer to the taps by the dotted name.");
|
command_print(cmd_ctx, "And then refer to the taps by the dotted name.");
|
||||||
|
|
||||||
newargs[0] = Jim_NewStringObj( interp, "jtag", -1 );
|
newargs[0] = Jim_NewStringObj(interp, "jtag", -1 );
|
||||||
newargs[1] = Jim_NewStringObj( interp, "newtap", -1 );
|
newargs[1] = Jim_NewStringObj(interp, "newtap", -1 );
|
||||||
sprintf( buf, "chip%d", jtag_tap_count() );
|
sprintf(buf, "chip%d", jtag_tap_count() );
|
||||||
newargs[2] = Jim_NewStringObj( interp, buf, -1 );
|
newargs[2] = Jim_NewStringObj(interp, buf, -1 );
|
||||||
sprintf( buf, "tap%d", jtag_tap_count() );
|
sprintf(buf, "tap%d", jtag_tap_count() );
|
||||||
newargs[3] = Jim_NewStringObj( interp, buf, -1 );
|
newargs[3] = Jim_NewStringObj(interp, buf, -1 );
|
||||||
newargs[4] = Jim_NewStringObj( interp, "-irlen", -1 );
|
newargs[4] = Jim_NewStringObj(interp, "-irlen", -1 );
|
||||||
newargs[5] = Jim_NewStringObj( interp, args[0], -1 );
|
newargs[5] = Jim_NewStringObj(interp, args[0], -1 );
|
||||||
newargs[6] = Jim_NewStringObj( interp, "-ircapture", -1 );
|
newargs[6] = Jim_NewStringObj(interp, "-ircapture", -1 );
|
||||||
newargs[7] = Jim_NewStringObj( interp, args[1], -1 );
|
newargs[7] = Jim_NewStringObj(interp, args[1], -1 );
|
||||||
newargs[8] = Jim_NewStringObj( interp, "-irmask", -1 );
|
newargs[8] = Jim_NewStringObj(interp, "-irmask", -1 );
|
||||||
newargs[9] = Jim_NewStringObj( interp, args[2], -1 );
|
newargs[9] = Jim_NewStringObj(interp, args[2], -1 );
|
||||||
|
|
||||||
command_print( cmd_ctx, "NEW COMMAND:");
|
command_print(cmd_ctx, "NEW COMMAND:");
|
||||||
sprintf( buf, "%s %s %s %s %s %s %s %s %s %s",
|
sprintf(buf, "%s %s %s %s %s %s %s %s %s %s",
|
||||||
Jim_GetString( newargs[0], NULL ),
|
Jim_GetString(newargs[0], NULL ),
|
||||||
Jim_GetString( newargs[1], NULL ),
|
Jim_GetString(newargs[1], NULL ),
|
||||||
Jim_GetString( newargs[2], NULL ),
|
Jim_GetString(newargs[2], NULL ),
|
||||||
Jim_GetString( newargs[3], NULL ),
|
Jim_GetString(newargs[3], NULL ),
|
||||||
Jim_GetString( newargs[4], NULL ),
|
Jim_GetString(newargs[4], NULL ),
|
||||||
Jim_GetString( newargs[5], NULL ),
|
Jim_GetString(newargs[5], NULL ),
|
||||||
Jim_GetString( newargs[6], NULL ),
|
Jim_GetString(newargs[6], NULL ),
|
||||||
Jim_GetString( newargs[7], NULL ),
|
Jim_GetString(newargs[7], NULL ),
|
||||||
Jim_GetString( newargs[8], NULL ),
|
Jim_GetString(newargs[8], NULL ),
|
||||||
Jim_GetString( newargs[9], NULL ) );
|
Jim_GetString(newargs[9], NULL ) );
|
||||||
|
|
||||||
e = jim_jtag_command( interp, 10, newargs );
|
e = jim_jtag_command(interp, 10, newargs );
|
||||||
if ( e != JIM_OK ){
|
if (e != JIM_OK ){
|
||||||
command_print( cmd_ctx, "%s", Jim_GetString( Jim_GetResult(interp), NULL ) );
|
command_print(cmd_ctx, "%s", Jim_GetString(Jim_GetResult(interp), NULL ) );
|
||||||
}
|
}
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
@ -861,7 +861,7 @@ static int handle_scan_chain_command(struct command_context_s *cmd_ctx, char *cm
|
||||||
command_print(cmd_ctx, " TapName | Enabled | IdCode Expected IrLen IrCap IrMask Instr ");
|
command_print(cmd_ctx, " TapName | Enabled | IdCode Expected IrLen IrCap IrMask Instr ");
|
||||||
command_print(cmd_ctx, "---|--------------------|---------|------------|------------|------|------|------|---------");
|
command_print(cmd_ctx, "---|--------------------|---------|------------|------------|------|------|------|---------");
|
||||||
|
|
||||||
while ( tap ){
|
while (tap ){
|
||||||
uint32_t expected, expected_mask, cur_instr, ii;
|
uint32_t expected, expected_mask, cur_instr, ii;
|
||||||
expected = buf_get_u32(tap->expected, 0, tap->ir_length);
|
expected = buf_get_u32(tap->expected, 0, tap->ir_length);
|
||||||
expected_mask = buf_get_u32(tap->expected_mask, 0, tap->ir_length);
|
expected_mask = buf_get_u32(tap->expected_mask, 0, tap->ir_length);
|
||||||
|
@ -1174,20 +1174,20 @@ static int handle_irscan_command(struct command_context_s *cmd_ctx, char *cmd, c
|
||||||
*/
|
*/
|
||||||
endstate = TAP_IDLE;
|
endstate = TAP_IDLE;
|
||||||
|
|
||||||
if ( argc >= 4 ){
|
if (argc >= 4 ){
|
||||||
/* have at least one pair of numbers. */
|
/* have at least one pair of numbers. */
|
||||||
/* is last pair the magic text? */
|
/* is last pair the magic text? */
|
||||||
if ( 0 == strcmp( "-endstate", args[ argc - 2 ] ) ){
|
if (0 == strcmp("-endstate", args[ argc - 2 ] ) ){
|
||||||
const char *cpA;
|
const char *cpA;
|
||||||
const char *cpS;
|
const char *cpS;
|
||||||
cpA = args[ argc-1 ];
|
cpA = args[ argc-1 ];
|
||||||
for ( endstate = 0 ; endstate < TAP_NUM_STATES ; endstate++ ){
|
for (endstate = 0 ; endstate < TAP_NUM_STATES ; endstate++ ){
|
||||||
cpS = tap_state_name( endstate );
|
cpS = tap_state_name(endstate );
|
||||||
if ( 0 == strcmp( cpA, cpS ) ){
|
if (0 == strcmp(cpA, cpS ) ){
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( endstate >= TAP_NUM_STATES ){
|
if (endstate >= TAP_NUM_STATES ){
|
||||||
return ERROR_COMMAND_SYNTAX_ERROR;
|
return ERROR_COMMAND_SYNTAX_ERROR;
|
||||||
} else {
|
} else {
|
||||||
if (!scan_is_safe(endstate))
|
if (!scan_is_safe(endstate))
|
||||||
|
@ -1207,10 +1207,10 @@ static int handle_irscan_command(struct command_context_s *cmd_ctx, char *cmd, c
|
||||||
int retval;
|
int retval;
|
||||||
for (i = 0; i < num_fields; i++)
|
for (i = 0; i < num_fields; i++)
|
||||||
{
|
{
|
||||||
tap = jtag_tap_by_string( args[i*2] );
|
tap = jtag_tap_by_string(args[i*2] );
|
||||||
if (tap == NULL)
|
if (tap == NULL)
|
||||||
{
|
{
|
||||||
command_print( cmd_ctx, "Tap: %s unknown", args[i*2] );
|
command_print(cmd_ctx, "Tap: %s unknown", args[i*2] );
|
||||||
return ERROR_FAIL;
|
return ERROR_FAIL;
|
||||||
}
|
}
|
||||||
int field_size = tap->ir_length;
|
int field_size = tap->ir_length;
|
||||||
|
@ -1281,12 +1281,12 @@ static int Jim_Command_drscan(Jim_Interp *interp, int argc, Jim_Obj *const *args
|
||||||
|
|
||||||
e = Jim_GetLong(interp, args[i], &bits);
|
e = Jim_GetLong(interp, args[i], &bits);
|
||||||
/* If valid - try next arg */
|
/* If valid - try next arg */
|
||||||
if ( e == JIM_OK ){
|
if (e == JIM_OK ){
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Not valid.. are we at the end? */
|
/* Not valid.. are we at the end? */
|
||||||
if ( ((i + 2) != argc) ){
|
if (((i + 2) != argc) ){
|
||||||
/* nope, then error */
|
/* nope, then error */
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
@ -1297,15 +1297,15 @@ static int Jim_Command_drscan(Jim_Interp *interp, int argc, Jim_Obj *const *args
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* get arg as a string. */
|
/* get arg as a string. */
|
||||||
cp = Jim_GetString( args[i], NULL );
|
cp = Jim_GetString(args[i], NULL );
|
||||||
/* is it the magic? */
|
/* is it the magic? */
|
||||||
if ( 0 == strcmp( "-endstate", cp ) ){
|
if (0 == strcmp("-endstate", cp ) ){
|
||||||
/* is the statename valid? */
|
/* is the statename valid? */
|
||||||
cp = Jim_GetString( args[i + 1], NULL );
|
cp = Jim_GetString(args[i + 1], NULL );
|
||||||
|
|
||||||
/* see if it is a valid state name */
|
/* see if it is a valid state name */
|
||||||
endstate = tap_state_by_name(cp);
|
endstate = tap_state_by_name(cp);
|
||||||
if ( endstate < 0 ){
|
if (endstate < 0 ){
|
||||||
/* update the error message */
|
/* update the error message */
|
||||||
Jim_SetResult_sprintf(interp,"endstate: %s invalid", cp );
|
Jim_SetResult_sprintf(interp,"endstate: %s invalid", cp );
|
||||||
} else {
|
} else {
|
||||||
|
@ -1321,13 +1321,13 @@ static int Jim_Command_drscan(Jim_Interp *interp, int argc, Jim_Obj *const *args
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Still an error? */
|
/* Still an error? */
|
||||||
if ( e != JIM_OK ){
|
if (e != JIM_OK ){
|
||||||
return e; /* too bad */
|
return e; /* too bad */
|
||||||
}
|
}
|
||||||
} /* validate args */
|
} /* validate args */
|
||||||
|
|
||||||
tap = jtag_tap_by_jim_obj( interp, args[1] );
|
tap = jtag_tap_by_jim_obj(interp, args[1] );
|
||||||
if ( tap == NULL ){
|
if (tap == NULL ){
|
||||||
return JIM_ERR;
|
return JIM_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1399,9 +1399,9 @@ static int Jim_Command_pathmove(Jim_Interp *interp, int argc, Jim_Obj *const *ar
|
||||||
for (i = 0; i < argc-1; i++)
|
for (i = 0; i < argc-1; i++)
|
||||||
{
|
{
|
||||||
const char *cp;
|
const char *cp;
|
||||||
cp = Jim_GetString( args[i + 1], NULL );
|
cp = Jim_GetString(args[i + 1], NULL );
|
||||||
states[i] = tap_state_by_name(cp);
|
states[i] = tap_state_by_name(cp);
|
||||||
if ( states[i] < 0 )
|
if (states[i] < 0 )
|
||||||
{
|
{
|
||||||
/* update the error message */
|
/* update the error message */
|
||||||
Jim_SetResult_sprintf(interp,"endstate: %s invalid", cp );
|
Jim_SetResult_sprintf(interp,"endstate: %s invalid", cp );
|
||||||
|
@ -1409,7 +1409,7 @@ static int Jim_Command_pathmove(Jim_Interp *interp, int argc, Jim_Obj *const *ar
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((jtag_add_statemove(states[0]) != ERROR_OK) || ( jtag_execute_queue()!= ERROR_OK))
|
if ((jtag_add_statemove(states[0]) != ERROR_OK) || (jtag_execute_queue()!= ERROR_OK))
|
||||||
{
|
{
|
||||||
Jim_SetResultString(interp, "pathmove: jtag execute failed",-1);
|
Jim_SetResultString(interp, "pathmove: jtag execute failed",-1);
|
||||||
return JIM_ERR;
|
return JIM_ERR;
|
||||||
|
|
|
@ -298,7 +298,7 @@ static int vsllink_execute_queue(void)
|
||||||
switch (cmd->type)
|
switch (cmd->type)
|
||||||
{
|
{
|
||||||
case JTAG_RUNTEST:
|
case JTAG_RUNTEST:
|
||||||
DEBUG_JTAG_IO( "runtest %i cycles, end in %s", cmd->cmd.runtest->num_cycles, \
|
DEBUG_JTAG_IO("runtest %i cycles, end in %s", cmd->cmd.runtest->num_cycles, \
|
||||||
tap_state_name(cmd->cmd.runtest->end_state));
|
tap_state_name(cmd->cmd.runtest->end_state));
|
||||||
|
|
||||||
vsllink_end_state(cmd->cmd.runtest->end_state);
|
vsllink_end_state(cmd->cmd.runtest->end_state);
|
||||||
|
@ -377,7 +377,7 @@ static int vsllink_execute_queue(void)
|
||||||
scan_size = 0;
|
scan_size = 0;
|
||||||
break; /* above stable states are OK */
|
break; /* above stable states are OK */
|
||||||
default:
|
default:
|
||||||
LOG_ERROR( "jtag_add_clocks() was called with TAP in non-stable state \"%s\"",
|
LOG_ERROR("jtag_add_clocks() was called with TAP in non-stable state \"%s\"",
|
||||||
tap_state_name(tap_get_state()) );
|
tap_state_name(tap_get_state()) );
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
#define TEST_MANUAL() 0
|
#define TEST_MANUAL() 0
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
int diag_printf( const char *fmt, ... );
|
int diag_printf(const char *fmt, ... );
|
||||||
#define ZY1000_POKE(a, b) HAL_WRITE_UINT32(a, b); diag_printf("poke 0x%08x,0x%08x\n", a, b)
|
#define ZY1000_POKE(a, b) HAL_WRITE_UINT32(a, b); diag_printf("poke 0x%08x,0x%08x\n", a, b)
|
||||||
#define ZY1000_PEEK(a, b) HAL_READ_UINT32(a, b); diag_printf("peek 0x%08x = 0x%08x\n", a, b)
|
#define ZY1000_PEEK(a, b) HAL_READ_UINT32(a, b); diag_printf("peek 0x%08x = 0x%08x\n", a, b)
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -208,7 +208,7 @@ command_context_t *setup_command_handler(void)
|
||||||
}
|
}
|
||||||
LOG_DEBUG("log init complete");
|
LOG_DEBUG("log init complete");
|
||||||
|
|
||||||
LOG_OUTPUT( OPENOCD_VERSION "\n" );
|
LOG_OUTPUT(OPENOCD_VERSION "\n" );
|
||||||
|
|
||||||
register_command(cmd_ctx, NULL, "init", handle_init_command,
|
register_command(cmd_ctx, NULL, "init", handle_init_command,
|
||||||
COMMAND_ANY, "initializes target and servers - nop on subsequent invocations");
|
COMMAND_ANY, "initializes target and servers - nop on subsequent invocations");
|
||||||
|
@ -264,7 +264,7 @@ int openocd_main(int argc, char *argv[])
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
ret = parse_config_file(cmd_ctx);
|
ret = parse_config_file(cmd_ctx);
|
||||||
if ( (ret != ERROR_OK) && (ret != ERROR_COMMAND_CLOSE_CONNECTION) )
|
if ((ret != ERROR_OK) && (ret != ERROR_COMMAND_CLOSE_CONNECTION) )
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
#if BUILD_HTTPD
|
#if BUILD_HTTPD
|
||||||
|
|
|
@ -243,7 +243,7 @@ static int virtex2_pld_device_command(struct command_context_s *cmd_ctx,
|
||||||
|
|
||||||
tap = jtag_tap_by_string(args[1]);
|
tap = jtag_tap_by_string(args[1]);
|
||||||
if (tap == NULL) {
|
if (tap == NULL) {
|
||||||
command_print( cmd_ctx, "Tap: %s does not exist", args[1] );
|
command_print(cmd_ctx, "Tap: %s does not exist", args[1] );
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -319,9 +319,9 @@ int gdb_put_packet_inner(connection_t *connection, char *buffer, int len)
|
||||||
break;
|
break;
|
||||||
if ((retval = gdb_get_char(connection, &reply)) != ERROR_OK)
|
if ((retval = gdb_get_char(connection, &reply)) != ERROR_OK)
|
||||||
return retval;
|
return retval;
|
||||||
if ( reply == '$' ){
|
if (reply == '$' ){
|
||||||
/* fix a problem with some IAR tools */
|
/* fix a problem with some IAR tools */
|
||||||
gdb_putback_char( connection, reply );
|
gdb_putback_char(connection, reply );
|
||||||
LOG_DEBUG("Unexpected start of new packet");
|
LOG_DEBUG("Unexpected start of new packet");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -402,9 +402,9 @@ int gdb_put_packet_inner(connection_t *connection, char *buffer, int len)
|
||||||
log_remove_callback(gdb_log_callback, connection);
|
log_remove_callback(gdb_log_callback, connection);
|
||||||
LOG_WARNING("negative reply, retrying");
|
LOG_WARNING("negative reply, retrying");
|
||||||
}
|
}
|
||||||
else if ( reply == '$' ){
|
else if (reply == '$' ){
|
||||||
LOG_ERROR("GDB missing ack(1) - assumed good");
|
LOG_ERROR("GDB missing ack(1) - assumed good");
|
||||||
gdb_putback_char( connection, reply );
|
gdb_putback_char(connection, reply );
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
@ -413,9 +413,9 @@ int gdb_put_packet_inner(connection_t *connection, char *buffer, int len)
|
||||||
return ERROR_SERVER_REMOTE_CLOSED;
|
return ERROR_SERVER_REMOTE_CLOSED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( reply == '$' ){
|
else if (reply == '$' ){
|
||||||
LOG_ERROR("GDB missing ack(2) - assumed good");
|
LOG_ERROR("GDB missing ack(2) - assumed good");
|
||||||
gdb_putback_char( connection, reply );
|
gdb_putback_char(connection, reply );
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -709,7 +709,7 @@ int gdb_target_callback_event_handler(struct target_s *target, enum target_event
|
||||||
int retval;
|
int retval;
|
||||||
connection_t *connection = priv;
|
connection_t *connection = priv;
|
||||||
|
|
||||||
target_handle_event( target, event );
|
target_handle_event(target, event );
|
||||||
switch (event)
|
switch (event)
|
||||||
{
|
{
|
||||||
case TARGET_EVENT_EARLY_HALTED:
|
case TARGET_EVENT_EARLY_HALTED:
|
||||||
|
@ -719,7 +719,7 @@ int gdb_target_callback_event_handler(struct target_s *target, enum target_event
|
||||||
target_call_event_callbacks(target, TARGET_EVENT_GDB_END);
|
target_call_event_callbacks(target, TARGET_EVENT_GDB_END);
|
||||||
break;
|
break;
|
||||||
case TARGET_EVENT_GDB_FLASH_ERASE_START:
|
case TARGET_EVENT_GDB_FLASH_ERASE_START:
|
||||||
target_handle_event( target, TARGET_EVENT_OLD_gdb_program_config );
|
target_handle_event(target, TARGET_EVENT_OLD_gdb_program_config );
|
||||||
if ((retval = jtag_execute_queue()) != ERROR_OK)
|
if ((retval = jtag_execute_queue()) != ERROR_OK)
|
||||||
{
|
{
|
||||||
return retval;
|
return retval;
|
||||||
|
@ -1360,7 +1360,7 @@ int gdb_step_continue_packet(connection_t *connection, target_t *target, char *p
|
||||||
if (packet[0] == 'c')
|
if (packet[0] == 'c')
|
||||||
{
|
{
|
||||||
LOG_DEBUG("continue");
|
LOG_DEBUG("continue");
|
||||||
target_handle_event( target, TARGET_EVENT_OLD_pre_resume );
|
target_handle_event(target, TARGET_EVENT_OLD_pre_resume );
|
||||||
retval = target_resume(target, current, address, 0, 0); /* resume at current address, don't handle breakpoints, not debugging */
|
retval = target_resume(target, current, address, 0, 0); /* resume at current address, don't handle breakpoints, not debugging */
|
||||||
}
|
}
|
||||||
else if (packet[0] == 's')
|
else if (packet[0] == 's')
|
||||||
|
@ -1937,7 +1937,7 @@ int gdb_v_packet(connection_t *connection, target_t *target, char *packet, int p
|
||||||
target_call_event_callbacks(gdb_service->target, TARGET_EVENT_GDB_FLASH_WRITE_START);
|
target_call_event_callbacks(gdb_service->target, TARGET_EVENT_GDB_FLASH_WRITE_START);
|
||||||
result = flash_write(gdb_service->target, gdb_connection->vflash_image, &written, 0);
|
result = flash_write(gdb_service->target, gdb_connection->vflash_image, &written, 0);
|
||||||
target_call_event_callbacks(gdb_service->target, TARGET_EVENT_GDB_FLASH_WRITE_END);
|
target_call_event_callbacks(gdb_service->target, TARGET_EVENT_GDB_FLASH_WRITE_END);
|
||||||
if ( result != ERROR_OK)
|
if (result != ERROR_OK)
|
||||||
{
|
{
|
||||||
if (result == ERROR_FLASH_DST_OUT_OF_BANK)
|
if (result == ERROR_FLASH_DST_OUT_OF_BANK)
|
||||||
gdb_put_packet(connection, "E.memtype", 9);
|
gdb_put_packet(connection, "E.memtype", 9);
|
||||||
|
@ -1964,10 +1964,10 @@ int gdb_v_packet(connection_t *connection, target_t *target, char *packet, int p
|
||||||
int gdb_detach(connection_t *connection, target_t *target)
|
int gdb_detach(connection_t *connection, target_t *target)
|
||||||
{
|
{
|
||||||
|
|
||||||
switch ( detach_mode )
|
switch (detach_mode )
|
||||||
{
|
{
|
||||||
case GDB_DETACH_RESUME:
|
case GDB_DETACH_RESUME:
|
||||||
target_handle_event( target, TARGET_EVENT_OLD_pre_resume );
|
target_handle_event(target, TARGET_EVENT_OLD_pre_resume );
|
||||||
target_resume(target, 1, 0, 1, 0);
|
target_resume(target, 1, 0, 1, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -2036,12 +2036,12 @@ int gdb_input_inner(connection_t *connection)
|
||||||
/* terminate with zero */
|
/* terminate with zero */
|
||||||
packet[packet_size] = 0;
|
packet[packet_size] = 0;
|
||||||
|
|
||||||
if ( LOG_LEVEL_IS( LOG_LVL_DEBUG ) ){
|
if (LOG_LEVEL_IS(LOG_LVL_DEBUG ) ){
|
||||||
if ( packet[0] == 'X' ){
|
if (packet[0] == 'X' ){
|
||||||
// binary packets spew junk into the debug log stream
|
// binary packets spew junk into the debug log stream
|
||||||
char buf[ 50 ];
|
char buf[ 50 ];
|
||||||
int x;
|
int x;
|
||||||
for ( x = 0 ; (x < 49) && (packet[x] != ':') ; x++ ){
|
for (x = 0 ; (x < 49) && (packet[x] != ':') ; x++ ){
|
||||||
buf[x] = packet[x];
|
buf[x] = packet[x];
|
||||||
}
|
}
|
||||||
buf[x] = 0;
|
buf[x] = 0;
|
||||||
|
|
|
@ -415,8 +415,8 @@ static pthread_mutex_t mutex;
|
||||||
int httpd_start(void)
|
int httpd_start(void)
|
||||||
{
|
{
|
||||||
pthread_mutexattr_t attr;
|
pthread_mutexattr_t attr;
|
||||||
pthread_mutexattr_init( &attr );
|
pthread_mutexattr_init(&attr );
|
||||||
pthread_mutex_init( &mutex, &attr );
|
pthread_mutex_init(&mutex, &attr );
|
||||||
|
|
||||||
int port = 8888;
|
int port = 8888;
|
||||||
LOG_USER("Launching httpd server on port %d", port);
|
LOG_USER("Launching httpd server on port %d", port);
|
||||||
|
@ -446,16 +446,16 @@ int httpd_start(void)
|
||||||
void httpd_stop(void)
|
void httpd_stop(void)
|
||||||
{
|
{
|
||||||
MHD_stop_daemon(d);
|
MHD_stop_daemon(d);
|
||||||
pthread_mutex_destroy( &mutex );
|
pthread_mutex_destroy(&mutex );
|
||||||
}
|
}
|
||||||
|
|
||||||
void openocd_sleep_prelude(void)
|
void openocd_sleep_prelude(void)
|
||||||
{
|
{
|
||||||
pthread_mutex_unlock( &mutex );
|
pthread_mutex_unlock(&mutex );
|
||||||
}
|
}
|
||||||
|
|
||||||
void openocd_sleep_postlude(void)
|
void openocd_sleep_postlude(void)
|
||||||
{
|
{
|
||||||
pthread_mutex_lock( &mutex );
|
pthread_mutex_lock(&mutex );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -528,7 +528,7 @@ int server_quit(void)
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
WSACleanup();
|
WSACleanup();
|
||||||
SetConsoleCtrlHandler( ControlHandler, FALSE );
|
SetConsoleCtrlHandler(ControlHandler, FALSE );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
|
|
|
@ -273,7 +273,7 @@ static const char* tap_state_svf_name(tap_state_t state)
|
||||||
{
|
{
|
||||||
const char* ret;
|
const char* ret;
|
||||||
|
|
||||||
switch ( state )
|
switch (state )
|
||||||
{
|
{
|
||||||
case TAP_RESET: ret = "RESET"; break;
|
case TAP_RESET: ret = "RESET"; break;
|
||||||
case TAP_IDLE: ret = "IDLE"; break;
|
case TAP_IDLE: ret = "IDLE"; break;
|
||||||
|
@ -422,7 +422,7 @@ static int handle_svf_command(struct command_context_s *cmd_ctx, char *cmd, char
|
||||||
// TAP_RESET
|
// TAP_RESET
|
||||||
jtag_add_tlr();
|
jtag_add_tlr();
|
||||||
|
|
||||||
while ( ERROR_OK == svf_read_command_from_file(svf_fd) )
|
while (ERROR_OK == svf_read_command_from_file(svf_fd) )
|
||||||
{
|
{
|
||||||
if (ERROR_OK != svf_run_command(cmd_ctx, svf_command_buffer))
|
if (ERROR_OK != svf_run_command(cmd_ctx, svf_command_buffer))
|
||||||
{
|
{
|
||||||
|
|
|
@ -709,7 +709,7 @@ int arm11_arch_state(struct target_s *target)
|
||||||
arm11_common_t * arm11 = target->arch_info;
|
arm11_common_t * arm11 = target->arch_info;
|
||||||
|
|
||||||
LOG_USER("target halted due to %s\ncpsr: 0x%8.8" PRIx32 " pc: 0x%8.8" PRIx32 "",
|
LOG_USER("target halted due to %s\ncpsr: 0x%8.8" PRIx32 " pc: 0x%8.8" PRIx32 "",
|
||||||
Jim_Nvp_value2name_simple( nvp_target_debug_reason, target->debug_reason )->name,
|
Jim_Nvp_value2name_simple(nvp_target_debug_reason, target->debug_reason )->name,
|
||||||
R(CPSR),
|
R(CPSR),
|
||||||
R(PC));
|
R(PC));
|
||||||
|
|
||||||
|
@ -732,7 +732,7 @@ int arm11_halt(struct target_s *target)
|
||||||
arm11_common_t * arm11 = target->arch_info;
|
arm11_common_t * arm11 = target->arch_info;
|
||||||
|
|
||||||
LOG_DEBUG("target->state: %s",
|
LOG_DEBUG("target->state: %s",
|
||||||
Jim_Nvp_value2name_simple( nvp_target_state, target->state )->name );
|
Jim_Nvp_value2name_simple(nvp_target_state, target->state )->name );
|
||||||
|
|
||||||
if (target->state == TARGET_UNKNOWN)
|
if (target->state == TARGET_UNKNOWN)
|
||||||
{
|
{
|
||||||
|
@ -789,7 +789,7 @@ int arm11_resume(struct target_s *target, int current, uint32_t address, int han
|
||||||
arm11_common_t * arm11 = target->arch_info;
|
arm11_common_t * arm11 = target->arch_info;
|
||||||
|
|
||||||
LOG_DEBUG("target->state: %s",
|
LOG_DEBUG("target->state: %s",
|
||||||
Jim_Nvp_value2name_simple( nvp_target_state, target->state )->name );
|
Jim_Nvp_value2name_simple(nvp_target_state, target->state )->name );
|
||||||
|
|
||||||
|
|
||||||
if (target->state != TARGET_HALTED)
|
if (target->state != TARGET_HALTED)
|
||||||
|
@ -889,7 +889,7 @@ int arm11_step(struct target_s *target, int current, uint32_t address, int handl
|
||||||
FNC_INFO;
|
FNC_INFO;
|
||||||
|
|
||||||
LOG_DEBUG("target->state: %s",
|
LOG_DEBUG("target->state: %s",
|
||||||
Jim_Nvp_value2name_simple( nvp_target_state, target->state )->name );
|
Jim_Nvp_value2name_simple(nvp_target_state, target->state )->name );
|
||||||
|
|
||||||
if (target->state != TARGET_HALTED)
|
if (target->state != TARGET_HALTED)
|
||||||
{
|
{
|
||||||
|
@ -1035,7 +1035,7 @@ int arm11_deassert_reset(struct target_s *target)
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
LOG_DEBUG("target->state: %s",
|
LOG_DEBUG("target->state: %s",
|
||||||
Jim_Nvp_value2name_simple( nvp_target_state, target->state )->name );
|
Jim_Nvp_value2name_simple(nvp_target_state, target->state )->name );
|
||||||
|
|
||||||
|
|
||||||
/* deassert reset lines */
|
/* deassert reset lines */
|
||||||
|
@ -1951,30 +1951,30 @@ int arm11_register_commands(struct command_context_s *cmd_ctx)
|
||||||
|
|
||||||
command_t * top_cmd = NULL;
|
command_t * top_cmd = NULL;
|
||||||
|
|
||||||
RC_TOP( "arm11", "arm11 specific commands",
|
RC_TOP("arm11", "arm11 specific commands",
|
||||||
|
|
||||||
RC_TOP( "memwrite", "Control memory write transfer mode",
|
RC_TOP("memwrite", "Control memory write transfer mode",
|
||||||
|
|
||||||
RC_FINAL_BOOL( "burst", "Enable/Disable non-standard but fast burst mode (default: enabled)",
|
RC_FINAL_BOOL("burst", "Enable/Disable non-standard but fast burst mode (default: enabled)",
|
||||||
memwrite_burst)
|
memwrite_burst)
|
||||||
|
|
||||||
RC_FINAL_BOOL( "error_fatal", "Terminate program if transfer error was found (default: enabled)",
|
RC_FINAL_BOOL("error_fatal", "Terminate program if transfer error was found (default: enabled)",
|
||||||
memwrite_error_fatal)
|
memwrite_error_fatal)
|
||||||
) /* memwrite */
|
) /* memwrite */
|
||||||
|
|
||||||
RC_FINAL_BOOL( "no_increment", "Don't increment address on multi-read/-write (default: disabled)",
|
RC_FINAL_BOOL("no_increment", "Don't increment address on multi-read/-write (default: disabled)",
|
||||||
memrw_no_increment)
|
memrw_no_increment)
|
||||||
|
|
||||||
RC_FINAL_BOOL( "step_irq_enable", "Enable interrupts while stepping (default: disabled)",
|
RC_FINAL_BOOL("step_irq_enable", "Enable interrupts while stepping (default: disabled)",
|
||||||
step_irq_enable)
|
step_irq_enable)
|
||||||
|
|
||||||
RC_FINAL( "vcr", "Control (Interrupt) Vector Catch Register",
|
RC_FINAL("vcr", "Control (Interrupt) Vector Catch Register",
|
||||||
arm11_handle_vcr)
|
arm11_handle_vcr)
|
||||||
|
|
||||||
RC_FINAL( "mrc", "Read Coprocessor register",
|
RC_FINAL("mrc", "Read Coprocessor register",
|
||||||
arm11_handle_mrc)
|
arm11_handle_mrc)
|
||||||
|
|
||||||
RC_FINAL( "mcr", "Write Coprocessor register",
|
RC_FINAL("mcr", "Write Coprocessor register",
|
||||||
arm11_handle_mcr)
|
arm11_handle_mcr)
|
||||||
) /* arm11 */
|
) /* arm11 */
|
||||||
|
|
||||||
|
|
|
@ -319,7 +319,7 @@ int arm720t_arch_state(struct target_s *target)
|
||||||
"cpsr: 0x%8.8" PRIx32 " pc: 0x%8.8" PRIx32 "\n"
|
"cpsr: 0x%8.8" PRIx32 " pc: 0x%8.8" PRIx32 "\n"
|
||||||
"MMU: %s, Cache: %s",
|
"MMU: %s, Cache: %s",
|
||||||
armv4_5_state_strings[armv4_5->core_state],
|
armv4_5_state_strings[armv4_5->core_state],
|
||||||
Jim_Nvp_value2name_simple( nvp_target_debug_reason, target->debug_reason )->name ,
|
Jim_Nvp_value2name_simple(nvp_target_debug_reason, target->debug_reason )->name ,
|
||||||
armv4_5_mode_strings[armv4_5_mode_to_number(armv4_5->core_mode)],
|
armv4_5_mode_strings[armv4_5_mode_to_number(armv4_5->core_mode)],
|
||||||
buf_get_u32(armv4_5->core_cache->reg_list[ARMV4_5_CPSR].value, 0, 32),
|
buf_get_u32(armv4_5->core_cache->reg_list[ARMV4_5_CPSR].value, 0, 32),
|
||||||
buf_get_u32(armv4_5->core_cache->reg_list[15].value, 0, 32),
|
buf_get_u32(armv4_5->core_cache->reg_list[15].value, 0, 32),
|
||||||
|
|
|
@ -526,7 +526,7 @@ int arm7_9_set_watchpoint(struct target_s *target, watchpoint_t *watchpoint)
|
||||||
embeddedice_set_reg(&arm7_9->eice_cache->reg_list[EICE_W0_ADDR_VALUE], watchpoint->address);
|
embeddedice_set_reg(&arm7_9->eice_cache->reg_list[EICE_W0_ADDR_VALUE], watchpoint->address);
|
||||||
embeddedice_set_reg(&arm7_9->eice_cache->reg_list[EICE_W0_ADDR_MASK], mask);
|
embeddedice_set_reg(&arm7_9->eice_cache->reg_list[EICE_W0_ADDR_MASK], mask);
|
||||||
embeddedice_set_reg(&arm7_9->eice_cache->reg_list[EICE_W0_DATA_MASK], watchpoint->mask);
|
embeddedice_set_reg(&arm7_9->eice_cache->reg_list[EICE_W0_DATA_MASK], watchpoint->mask);
|
||||||
if ( watchpoint->mask != 0xffffffffu )
|
if (watchpoint->mask != 0xffffffffu )
|
||||||
embeddedice_set_reg(&arm7_9->eice_cache->reg_list[EICE_W0_DATA_VALUE], watchpoint->value);
|
embeddedice_set_reg(&arm7_9->eice_cache->reg_list[EICE_W0_DATA_VALUE], watchpoint->value);
|
||||||
embeddedice_set_reg(&arm7_9->eice_cache->reg_list[EICE_W0_CONTROL_MASK], 0xff & ~EICE_W_CTRL_nOPC & ~rw_mask);
|
embeddedice_set_reg(&arm7_9->eice_cache->reg_list[EICE_W0_CONTROL_MASK], 0xff & ~EICE_W_CTRL_nOPC & ~rw_mask);
|
||||||
embeddedice_set_reg(&arm7_9->eice_cache->reg_list[EICE_W0_CONTROL_VALUE], EICE_W_CTRL_ENABLE | EICE_W_CTRL_nOPC | (watchpoint->rw & 1));
|
embeddedice_set_reg(&arm7_9->eice_cache->reg_list[EICE_W0_CONTROL_VALUE], EICE_W_CTRL_ENABLE | EICE_W_CTRL_nOPC | (watchpoint->rw & 1));
|
||||||
|
@ -543,7 +543,7 @@ int arm7_9_set_watchpoint(struct target_s *target, watchpoint_t *watchpoint)
|
||||||
embeddedice_set_reg(&arm7_9->eice_cache->reg_list[EICE_W1_ADDR_VALUE], watchpoint->address);
|
embeddedice_set_reg(&arm7_9->eice_cache->reg_list[EICE_W1_ADDR_VALUE], watchpoint->address);
|
||||||
embeddedice_set_reg(&arm7_9->eice_cache->reg_list[EICE_W1_ADDR_MASK], mask);
|
embeddedice_set_reg(&arm7_9->eice_cache->reg_list[EICE_W1_ADDR_MASK], mask);
|
||||||
embeddedice_set_reg(&arm7_9->eice_cache->reg_list[EICE_W1_DATA_MASK], watchpoint->mask);
|
embeddedice_set_reg(&arm7_9->eice_cache->reg_list[EICE_W1_DATA_MASK], watchpoint->mask);
|
||||||
if ( watchpoint->mask != 0xffffffffu )
|
if (watchpoint->mask != 0xffffffffu )
|
||||||
embeddedice_set_reg(&arm7_9->eice_cache->reg_list[EICE_W1_DATA_VALUE], watchpoint->value);
|
embeddedice_set_reg(&arm7_9->eice_cache->reg_list[EICE_W1_DATA_VALUE], watchpoint->value);
|
||||||
embeddedice_set_reg(&arm7_9->eice_cache->reg_list[EICE_W1_CONTROL_MASK], 0xff & ~EICE_W_CTRL_nOPC & ~rw_mask);
|
embeddedice_set_reg(&arm7_9->eice_cache->reg_list[EICE_W1_CONTROL_MASK], 0xff & ~EICE_W_CTRL_nOPC & ~rw_mask);
|
||||||
embeddedice_set_reg(&arm7_9->eice_cache->reg_list[EICE_W1_CONTROL_VALUE], EICE_W_CTRL_ENABLE | EICE_W_CTRL_nOPC | (watchpoint->rw & 1));
|
embeddedice_set_reg(&arm7_9->eice_cache->reg_list[EICE_W1_CONTROL_VALUE], EICE_W_CTRL_ENABLE | EICE_W_CTRL_nOPC | (watchpoint->rw & 1));
|
||||||
|
@ -974,7 +974,7 @@ int arm7_9_assert_reset(target_t *target)
|
||||||
armv4_5_common_t *armv4_5 = target->arch_info;
|
armv4_5_common_t *armv4_5 = target->arch_info;
|
||||||
arm7_9_common_t *arm7_9 = armv4_5->arch_info;
|
arm7_9_common_t *arm7_9 = armv4_5->arch_info;
|
||||||
LOG_DEBUG("target->state: %s",
|
LOG_DEBUG("target->state: %s",
|
||||||
Jim_Nvp_value2name_simple( nvp_target_state,target->state)->name);
|
Jim_Nvp_value2name_simple(nvp_target_state,target->state)->name);
|
||||||
|
|
||||||
enum reset_types jtag_reset_config = jtag_get_reset_config();
|
enum reset_types jtag_reset_config = jtag_get_reset_config();
|
||||||
if (!(jtag_reset_config & RESET_HAS_SRST))
|
if (!(jtag_reset_config & RESET_HAS_SRST))
|
||||||
|
@ -1044,7 +1044,7 @@ int arm7_9_deassert_reset(target_t *target)
|
||||||
{
|
{
|
||||||
int retval = ERROR_OK;
|
int retval = ERROR_OK;
|
||||||
LOG_DEBUG("target->state: %s",
|
LOG_DEBUG("target->state: %s",
|
||||||
Jim_Nvp_value2name_simple( nvp_target_state,target->state)->name);
|
Jim_Nvp_value2name_simple(nvp_target_state,target->state)->name);
|
||||||
|
|
||||||
/* deassert reset lines */
|
/* deassert reset lines */
|
||||||
jtag_add_reset(0, 0);
|
jtag_add_reset(0, 0);
|
||||||
|
@ -1257,7 +1257,7 @@ int arm7_9_halt(target_t *target)
|
||||||
reg_t *dbg_ctrl = &arm7_9->eice_cache->reg_list[EICE_DBG_CTRL];
|
reg_t *dbg_ctrl = &arm7_9->eice_cache->reg_list[EICE_DBG_CTRL];
|
||||||
|
|
||||||
LOG_DEBUG("target->state: %s",
|
LOG_DEBUG("target->state: %s",
|
||||||
Jim_Nvp_value2name_simple( nvp_target_state,target->state)->name);
|
Jim_Nvp_value2name_simple(nvp_target_state,target->state)->name);
|
||||||
|
|
||||||
if (target->state == TARGET_HALTED)
|
if (target->state == TARGET_HALTED)
|
||||||
{
|
{
|
||||||
|
|
|
@ -822,7 +822,7 @@ int arm7tdmi_init_arch_info(target_t *target, arm7tdmi_common_t *arm7tdmi, jtag_
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int arm7tdmi_target_create( struct target_s *target, Jim_Interp *interp )
|
int arm7tdmi_target_create(struct target_s *target, Jim_Interp *interp )
|
||||||
{
|
{
|
||||||
arm7tdmi_common_t *arm7tdmi;
|
arm7tdmi_common_t *arm7tdmi;
|
||||||
|
|
||||||
|
|
|
@ -497,7 +497,7 @@ int arm920t_arch_state(struct target_s *target)
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_USER( "target halted in %s state due to %s, current mode: %s\n"
|
LOG_USER("target halted in %s state due to %s, current mode: %s\n"
|
||||||
"cpsr: 0x%8.8" PRIx32 " pc: 0x%8.8" PRIx32 "\n"
|
"cpsr: 0x%8.8" PRIx32 " pc: 0x%8.8" PRIx32 "\n"
|
||||||
"MMU: %s, D-Cache: %s, I-Cache: %s",
|
"MMU: %s, D-Cache: %s, I-Cache: %s",
|
||||||
armv4_5_state_strings[armv4_5->core_state],
|
armv4_5_state_strings[armv4_5->core_state],
|
||||||
|
|
|
@ -547,7 +547,7 @@ int arm926ejs_arch_state(struct target_s *target)
|
||||||
"cpsr: 0x%8.8" PRIx32 " pc: 0x%8.8" PRIx32 "\n"
|
"cpsr: 0x%8.8" PRIx32 " pc: 0x%8.8" PRIx32 "\n"
|
||||||
"MMU: %s, D-Cache: %s, I-Cache: %s",
|
"MMU: %s, D-Cache: %s, I-Cache: %s",
|
||||||
armv4_5_state_strings[armv4_5->core_state],
|
armv4_5_state_strings[armv4_5->core_state],
|
||||||
Jim_Nvp_value2name_simple( nvp_target_debug_reason,target->debug_reason)->name,
|
Jim_Nvp_value2name_simple(nvp_target_debug_reason,target->debug_reason)->name,
|
||||||
armv4_5_mode_strings[armv4_5_mode_to_number(armv4_5->core_mode)],
|
armv4_5_mode_strings[armv4_5_mode_to_number(armv4_5->core_mode)],
|
||||||
buf_get_u32(armv4_5->core_cache->reg_list[ARMV4_5_CPSR].value, 0, 32),
|
buf_get_u32(armv4_5->core_cache->reg_list[ARMV4_5_CPSR].value, 0, 32),
|
||||||
buf_get_u32(armv4_5->core_cache->reg_list[15].value, 0, 32),
|
buf_get_u32(armv4_5->core_cache->reg_list[15].value, 0, 32),
|
||||||
|
|
|
@ -110,7 +110,7 @@ int arm966e_init_arch_info(target_t *target, arm966e_common_t *arm966e, jtag_tap
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int arm966e_target_create( struct target_s *target, Jim_Interp *interp )
|
int arm966e_target_create(struct target_s *target, Jim_Interp *interp )
|
||||||
{
|
{
|
||||||
arm966e_common_t *arm966e = calloc(1,sizeof(arm966e_common_t));
|
arm966e_common_t *arm966e = calloc(1,sizeof(arm966e_common_t));
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
int handle_arm9tdmi_catch_vectors_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
|
int handle_arm9tdmi_catch_vectors_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
|
||||||
|
|
||||||
/* forward declarations */
|
/* forward declarations */
|
||||||
int arm9tdmi_target_create( struct target_s *target, Jim_Interp *interp );
|
int arm9tdmi_target_create(struct target_s *target, Jim_Interp *interp );
|
||||||
|
|
||||||
int arm9tdmi_quit(void);
|
int arm9tdmi_quit(void);
|
||||||
|
|
||||||
|
|
|
@ -107,7 +107,7 @@ typedef struct swjdp_common_s
|
||||||
/* Accessor function for currently selected DAP-AP number */
|
/* Accessor function for currently selected DAP-AP number */
|
||||||
static inline uint8_t dap_ap_get_select(swjdp_common_t *swjdp)
|
static inline uint8_t dap_ap_get_select(swjdp_common_t *swjdp)
|
||||||
{
|
{
|
||||||
return (uint8_t)( swjdp ->apsel >> 24);
|
return (uint8_t)(swjdp ->apsel >> 24);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Internal functions used in the module, partial transactions, use with caution */
|
/* Internal functions used in the module, partial transactions, use with caution */
|
||||||
|
|
|
@ -299,7 +299,7 @@ int armv4_5_arch_state(struct target_s *target)
|
||||||
|
|
||||||
LOG_USER("target halted in %s state due to %s, current mode: %s\ncpsr: 0x%8.8" PRIx32 " pc: 0x%8.8" PRIx32 "",
|
LOG_USER("target halted in %s state due to %s, current mode: %s\ncpsr: 0x%8.8" PRIx32 " pc: 0x%8.8" PRIx32 "",
|
||||||
armv4_5_state_strings[armv4_5->core_state],
|
armv4_5_state_strings[armv4_5->core_state],
|
||||||
Jim_Nvp_value2name_simple( nvp_target_debug_reason, target->debug_reason )->name,
|
Jim_Nvp_value2name_simple(nvp_target_debug_reason, target->debug_reason )->name,
|
||||||
armv4_5_mode_strings[armv4_5_mode_to_number(armv4_5->core_mode)],
|
armv4_5_mode_strings[armv4_5_mode_to_number(armv4_5->core_mode)],
|
||||||
buf_get_u32(armv4_5->core_cache->reg_list[ARMV4_5_CPSR].value, 0, 32),
|
buf_get_u32(armv4_5->core_cache->reg_list[ARMV4_5_CPSR].value, 0, 32),
|
||||||
buf_get_u32(armv4_5->core_cache->reg_list[15].value, 0, 32));
|
buf_get_u32(armv4_5->core_cache->reg_list[15].value, 0, 32));
|
||||||
|
|
|
@ -462,7 +462,7 @@ int armv7m_arch_state(struct target_s *target)
|
||||||
armv7m_common_t *armv7m = target->arch_info;
|
armv7m_common_t *armv7m = target->arch_info;
|
||||||
|
|
||||||
LOG_USER("target halted due to %s, current mode: %s %s\nxPSR: 0x%8.8" PRIx32 " pc: 0x%8.8" PRIx32 "",
|
LOG_USER("target halted due to %s, current mode: %s %s\nxPSR: 0x%8.8" PRIx32 " pc: 0x%8.8" PRIx32 "",
|
||||||
Jim_Nvp_value2name_simple( nvp_target_debug_reason,target->debug_reason)->name,
|
Jim_Nvp_value2name_simple(nvp_target_debug_reason,target->debug_reason)->name,
|
||||||
armv7m_mode_strings[armv7m->core_mode],
|
armv7m_mode_strings[armv7m->core_mode],
|
||||||
armv7m_exception_string(armv7m->exception_number),
|
armv7m_exception_string(armv7m->exception_number),
|
||||||
buf_get_u32(armv7m->core_cache->reg_list[ARMV7M_xPSR].value, 0, 32),
|
buf_get_u32(armv7m->core_cache->reg_list[ARMV7M_xPSR].value, 0, 32),
|
||||||
|
|
|
@ -144,7 +144,7 @@ extern int armv7m_blank_check_memory(struct target_s *target, uint32_t address,
|
||||||
* Rd: source register
|
* Rd: source register
|
||||||
* SYSm: destination special register
|
* SYSm: destination special register
|
||||||
*/
|
*/
|
||||||
#define ARMV7M_T_MSR(SYSm, Rn) ((0xF380 | ( Rn << 8 )) | ((0x8800 | SYSm) << 16))
|
#define ARMV7M_T_MSR(SYSm, Rn) ((0xF380 | (Rn << 8 )) | ((0x8800 | SYSm) << 16))
|
||||||
|
|
||||||
/* Change Processor State. The instruction modifies the PRIMASK and FAULTMASK
|
/* Change Processor State. The instruction modifies the PRIMASK and FAULTMASK
|
||||||
* special-purpose register values (Thumb mode) 16 bit Thumb2 instruction
|
* special-purpose register values (Thumb mode) 16 bit Thumb2 instruction
|
||||||
|
|
|
@ -87,7 +87,7 @@ int cortex_a8_dcc_read(swjdp_common_t *swjdp, uint8_t *value, uint8_t *ctrl)
|
||||||
{
|
{
|
||||||
uint16_t dcrdr;
|
uint16_t dcrdr;
|
||||||
|
|
||||||
mem_ap_read_buf_u16( swjdp, (uint8_t*)&dcrdr, 1, DCB_DCRDR);
|
mem_ap_read_buf_u16(swjdp, (uint8_t*)&dcrdr, 1, DCB_DCRDR);
|
||||||
*ctrl = (uint8_t)dcrdr;
|
*ctrl = (uint8_t)dcrdr;
|
||||||
*value = (uint8_t)(dcrdr >> 8);
|
*value = (uint8_t)(dcrdr >> 8);
|
||||||
|
|
||||||
|
@ -98,7 +98,7 @@ int cortex_a8_dcc_read(swjdp_common_t *swjdp, uint8_t *value, uint8_t *ctrl)
|
||||||
if (dcrdr & (1 << 0))
|
if (dcrdr & (1 << 0))
|
||||||
{
|
{
|
||||||
dcrdr = 0;
|
dcrdr = 0;
|
||||||
mem_ap_write_buf_u16( swjdp, (uint8_t*)&dcrdr, 1, DCB_DCRDR);
|
mem_ap_write_buf_u16(swjdp, (uint8_t*)&dcrdr, 1, DCB_DCRDR);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
|
|
|
@ -444,7 +444,7 @@ int cortex_m3_debug_entry(target_t *target)
|
||||||
LOG_DEBUG("entered debug state in core mode: %s at PC 0x%" PRIx32 ", target->state: %s",
|
LOG_DEBUG("entered debug state in core mode: %s at PC 0x%" PRIx32 ", target->state: %s",
|
||||||
armv7m_mode_strings[armv7m->core_mode],
|
armv7m_mode_strings[armv7m->core_mode],
|
||||||
*(uint32_t*)(armv7m->core_cache->reg_list[15].value),
|
*(uint32_t*)(armv7m->core_cache->reg_list[15].value),
|
||||||
Jim_Nvp_value2name_simple( nvp_target_state, target->state )->name);
|
Jim_Nvp_value2name_simple(nvp_target_state, target->state )->name);
|
||||||
|
|
||||||
if (armv7m->post_debug_entry)
|
if (armv7m->post_debug_entry)
|
||||||
armv7m->post_debug_entry(target);
|
armv7m->post_debug_entry(target);
|
||||||
|
@ -520,7 +520,7 @@ int cortex_m3_poll(target_t *target)
|
||||||
#if 0
|
#if 0
|
||||||
/* Read Debug Fault Status Register, added to figure out the lockup when running flashtest.script */
|
/* Read Debug Fault Status Register, added to figure out the lockup when running flashtest.script */
|
||||||
mem_ap_read_atomic_u32(swjdp, NVIC_DFSR, &cortex_m3->nvic_dfsr);
|
mem_ap_read_atomic_u32(swjdp, NVIC_DFSR, &cortex_m3->nvic_dfsr);
|
||||||
LOG_DEBUG("dcb_dhcsr 0x%x, nvic_dfsr 0x%x, target->state: %s", cortex_m3->dcb_dhcsr, cortex_m3->nvic_dfsr, Jim_Nvp_value2name_simple( nvp_target_state, target->state )->name );
|
LOG_DEBUG("dcb_dhcsr 0x%x, nvic_dfsr 0x%x, target->state: %s", cortex_m3->dcb_dhcsr, cortex_m3->nvic_dfsr, Jim_Nvp_value2name_simple(nvp_target_state, target->state )->name );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
|
@ -751,7 +751,7 @@ int cortex_m3_assert_reset(target_t *target)
|
||||||
int assert_srst = 1;
|
int assert_srst = 1;
|
||||||
|
|
||||||
LOG_DEBUG("target->state: %s",
|
LOG_DEBUG("target->state: %s",
|
||||||
Jim_Nvp_value2name_simple( nvp_target_state, target->state )->name );
|
Jim_Nvp_value2name_simple(nvp_target_state, target->state )->name );
|
||||||
|
|
||||||
enum reset_types jtag_reset_config = jtag_get_reset_config();
|
enum reset_types jtag_reset_config = jtag_get_reset_config();
|
||||||
if (!(jtag_reset_config & RESET_HAS_SRST))
|
if (!(jtag_reset_config & RESET_HAS_SRST))
|
||||||
|
@ -1491,7 +1491,7 @@ int cortex_m3_dcc_read(swjdp_common_t *swjdp, uint8_t *value, uint8_t *ctrl)
|
||||||
{
|
{
|
||||||
uint16_t dcrdr;
|
uint16_t dcrdr;
|
||||||
|
|
||||||
mem_ap_read_buf_u16( swjdp, (uint8_t*)&dcrdr, 1, DCB_DCRDR);
|
mem_ap_read_buf_u16(swjdp, (uint8_t*)&dcrdr, 1, DCB_DCRDR);
|
||||||
*ctrl = (uint8_t)dcrdr;
|
*ctrl = (uint8_t)dcrdr;
|
||||||
*value = (uint8_t)(dcrdr >> 8);
|
*value = (uint8_t)(dcrdr >> 8);
|
||||||
|
|
||||||
|
@ -1502,7 +1502,7 @@ int cortex_m3_dcc_read(swjdp_common_t *swjdp, uint8_t *value, uint8_t *ctrl)
|
||||||
if (dcrdr & (1 << 0))
|
if (dcrdr & (1 << 0))
|
||||||
{
|
{
|
||||||
dcrdr = 0;
|
dcrdr = 0;
|
||||||
mem_ap_write_buf_u16( swjdp, (uint8_t*)&dcrdr, 1, DCB_DCRDR);
|
mem_ap_write_buf_u16(swjdp, (uint8_t*)&dcrdr, 1, DCB_DCRDR);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
|
|
|
@ -108,7 +108,7 @@ extern int embeddedice_handshake(arm_jtag_t *jtag_info, int hsbit, uint32_t time
|
||||||
/* If many embeddedice_write_reg() follow eachother, then the >1 invocations can be this faster version of
|
/* If many embeddedice_write_reg() follow eachother, then the >1 invocations can be this faster version of
|
||||||
* embeddedice_write_reg
|
* embeddedice_write_reg
|
||||||
*/
|
*/
|
||||||
static __inline__ void embeddedice_write_reg_inner( jtag_tap_t *tap, int reg_addr, uint32_t value)
|
static __inline__ void embeddedice_write_reg_inner(jtag_tap_t *tap, int reg_addr, uint32_t value)
|
||||||
{
|
{
|
||||||
static const int embeddedice_num_bits[]={32,5,1};
|
static const int embeddedice_num_bits[]={32,5,1};
|
||||||
uint32_t values[3];
|
uint32_t values[3];
|
||||||
|
@ -117,7 +117,7 @@ static __inline__ void embeddedice_write_reg_inner( jtag_tap_t *tap, int reg_add
|
||||||
values[1]=reg_addr;
|
values[1]=reg_addr;
|
||||||
values[2]=1;
|
values[2]=1;
|
||||||
|
|
||||||
jtag_add_dr_out( tap,
|
jtag_add_dr_out(tap,
|
||||||
3,
|
3,
|
||||||
embeddedice_num_bits,
|
embeddedice_num_bits,
|
||||||
values,
|
values,
|
||||||
|
|
|
@ -387,7 +387,7 @@ static int handle_etb_config_command(struct command_context_s *cmd_ctx, char *cm
|
||||||
return ERROR_FAIL;
|
return ERROR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
tap = jtag_tap_by_string( args[1] );
|
tap = jtag_tap_by_string(args[1] );
|
||||||
if (tap == NULL)
|
if (tap == NULL)
|
||||||
{
|
{
|
||||||
command_print(cmd_ctx, "Tap: %s does not exist", args[1] );
|
command_print(cmd_ctx, "Tap: %s does not exist", args[1] );
|
||||||
|
|
|
@ -533,7 +533,7 @@ static int image_mot_buffer_complete(image_t *image)
|
||||||
}
|
}
|
||||||
else if (record_type >= 1 && record_type <= 3)
|
else if (record_type >= 1 && record_type <= 3)
|
||||||
{
|
{
|
||||||
switch ( record_type )
|
switch (record_type )
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
/* S1 - 16 bit address data record */
|
/* S1 - 16 bit address data record */
|
||||||
|
@ -636,7 +636,7 @@ static int image_mot_buffer_complete(image_t *image)
|
||||||
cal_checksum += (uint8_t)checksum;
|
cal_checksum += (uint8_t)checksum;
|
||||||
bytes_read += 2;
|
bytes_read += 2;
|
||||||
|
|
||||||
if ( cal_checksum != 0xFF )
|
if (cal_checksum != 0xFF )
|
||||||
{
|
{
|
||||||
/* checksum failed */
|
/* checksum failed */
|
||||||
LOG_ERROR("incorrect record checksum found in S19 file");
|
LOG_ERROR("incorrect record checksum found in S19 file");
|
||||||
|
|
|
@ -265,7 +265,7 @@ int mips32_arch_state(struct target_s *target)
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_USER("target halted due to %s, pc: 0x%8.8" PRIx32 "",
|
LOG_USER("target halted due to %s, pc: 0x%8.8" PRIx32 "",
|
||||||
Jim_Nvp_value2name_simple( nvp_target_debug_reason, target->debug_reason )->name ,
|
Jim_Nvp_value2name_simple(nvp_target_debug_reason, target->debug_reason )->name ,
|
||||||
buf_get_u32(mips32->core_cache->reg_list[MIPS32_PC].value, 0, 32));
|
buf_get_u32(mips32->core_cache->reg_list[MIPS32_PC].value, 0, 32));
|
||||||
|
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
|
|
|
@ -207,7 +207,7 @@ static int mips32_pracc_exec_write(mips32_pracc_context *ctx, uint32_t address)
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int mips32_pracc_exec( mips_ejtag_t *ejtag_info, int code_len, uint32_t *code, int num_param_in, uint32_t *param_in, int num_param_out, uint32_t *param_out, int cycle)
|
int mips32_pracc_exec(mips_ejtag_t *ejtag_info, int code_len, uint32_t *code, int num_param_in, uint32_t *param_in, int num_param_out, uint32_t *param_out, int cycle)
|
||||||
{
|
{
|
||||||
uint32_t ejtag_ctrl;
|
uint32_t ejtag_ctrl;
|
||||||
uint32_t address, data;
|
uint32_t address, data;
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
#define UPPER16(uint32_t) (uint32_t >> 16)
|
#define UPPER16(uint32_t) (uint32_t >> 16)
|
||||||
#define LOWER16(uint32_t) (uint32_t & 0xFFFF)
|
#define LOWER16(uint32_t) (uint32_t & 0xFFFF)
|
||||||
#define NEG16(v) (((~(v)) + 1) & 0xFFFF)
|
#define NEG16(v) (((~(v)) + 1) & 0xFFFF)
|
||||||
/*#define NEG18(v) ( ((~(v)) + 1) & 0x3FFFF )*/
|
/*#define NEG18(v) (((~(v)) + 1) & 0x3FFFF )*/
|
||||||
|
|
||||||
extern int mips32_pracc_read_mem(mips_ejtag_t *ejtag_info, uint32_t addr, int size, int count, void *buf);
|
extern int mips32_pracc_read_mem(mips_ejtag_t *ejtag_info, uint32_t addr, int size, int count, void *buf);
|
||||||
extern int mips32_pracc_write_mem(mips_ejtag_t *ejtag_info, uint32_t addr, int size, int count, void *buf);
|
extern int mips32_pracc_write_mem(mips_ejtag_t *ejtag_info, uint32_t addr, int size, int count, void *buf);
|
||||||
|
@ -53,6 +53,6 @@ extern int mips32_pracc_write_u32(mips_ejtag_t *ejtag_info, uint32_t addr, uint3
|
||||||
extern int mips32_pracc_read_regs(mips_ejtag_t *ejtag_info, uint32_t *regs);
|
extern int mips32_pracc_read_regs(mips_ejtag_t *ejtag_info, uint32_t *regs);
|
||||||
extern int mips32_pracc_write_regs(mips_ejtag_t *ejtag_info, uint32_t *regs);
|
extern int mips32_pracc_write_regs(mips_ejtag_t *ejtag_info, uint32_t *regs);
|
||||||
|
|
||||||
extern int mips32_pracc_exec( mips_ejtag_t *ejtag_info, int code_len, uint32_t *code, int num_param_in, uint32_t *param_in, int num_param_out, uint32_t *param_out, int cycle);
|
extern int mips32_pracc_exec(mips_ejtag_t *ejtag_info, int code_len, uint32_t *code, int num_param_in, uint32_t *param_in, int num_param_out, uint32_t *param_out, int cycle);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -148,7 +148,7 @@ int mips_m4k_debug_entry(target_t *target)
|
||||||
|
|
||||||
LOG_DEBUG("entered debug state at PC 0x%" PRIx32 ", target->state: %s",
|
LOG_DEBUG("entered debug state at PC 0x%" PRIx32 ", target->state: %s",
|
||||||
*(uint32_t*)(mips32->core_cache->reg_list[MIPS32_PC].value),
|
*(uint32_t*)(mips32->core_cache->reg_list[MIPS32_PC].value),
|
||||||
Jim_Nvp_value2name_simple( nvp_target_state, target->state )->name);
|
Jim_Nvp_value2name_simple(nvp_target_state, target->state )->name);
|
||||||
|
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
|
@ -220,7 +220,7 @@ int mips_m4k_halt(struct target_s *target)
|
||||||
mips_ejtag_t *ejtag_info = &mips32->ejtag_info;
|
mips_ejtag_t *ejtag_info = &mips32->ejtag_info;
|
||||||
|
|
||||||
LOG_DEBUG("target->state: %s",
|
LOG_DEBUG("target->state: %s",
|
||||||
Jim_Nvp_value2name_simple( nvp_target_state, target->state )->name);
|
Jim_Nvp_value2name_simple(nvp_target_state, target->state )->name);
|
||||||
|
|
||||||
if (target->state == TARGET_HALTED)
|
if (target->state == TARGET_HALTED)
|
||||||
{
|
{
|
||||||
|
@ -265,7 +265,7 @@ int mips_m4k_assert_reset(target_t *target)
|
||||||
mips_ejtag_t *ejtag_info = &mips32->ejtag_info;
|
mips_ejtag_t *ejtag_info = &mips32->ejtag_info;
|
||||||
|
|
||||||
LOG_DEBUG("target->state: %s",
|
LOG_DEBUG("target->state: %s",
|
||||||
Jim_Nvp_value2name_simple( nvp_target_state, target->state )->name);
|
Jim_Nvp_value2name_simple(nvp_target_state, target->state )->name);
|
||||||
|
|
||||||
enum reset_types jtag_reset_config = jtag_get_reset_config();
|
enum reset_types jtag_reset_config = jtag_get_reset_config();
|
||||||
if (!(jtag_reset_config & RESET_HAS_SRST))
|
if (!(jtag_reset_config & RESET_HAS_SRST))
|
||||||
|
@ -324,7 +324,7 @@ int mips_m4k_assert_reset(target_t *target)
|
||||||
int mips_m4k_deassert_reset(target_t *target)
|
int mips_m4k_deassert_reset(target_t *target)
|
||||||
{
|
{
|
||||||
LOG_DEBUG("target->state: %s",
|
LOG_DEBUG("target->state: %s",
|
||||||
Jim_Nvp_value2name_simple( nvp_target_state, target->state )->name);
|
Jim_Nvp_value2name_simple(nvp_target_state, target->state )->name);
|
||||||
|
|
||||||
/* deassert reset lines */
|
/* deassert reset lines */
|
||||||
jtag_add_reset(0, 0);
|
jtag_add_reset(0, 0);
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -396,8 +396,8 @@ int target_write_u8(struct target_s *target, uint32_t address, uint8_t value);
|
||||||
/* Issues USER() statements with target state information */
|
/* Issues USER() statements with target state information */
|
||||||
int target_arch_state(struct target_s *target);
|
int target_arch_state(struct target_s *target);
|
||||||
|
|
||||||
void target_handle_event( target_t *t, enum target_event e);
|
void target_handle_event(target_t *t, enum target_event e);
|
||||||
void target_all_handle_event( enum target_event e );
|
void target_all_handle_event(enum target_event e );
|
||||||
|
|
||||||
#define ERROR_TARGET_INVALID (-300)
|
#define ERROR_TARGET_INVALID (-300)
|
||||||
#define ERROR_TARGET_INIT_FAILED (-301)
|
#define ERROR_TARGET_INIT_FAILED (-301)
|
||||||
|
@ -412,6 +412,6 @@ void target_all_handle_event( enum target_event e );
|
||||||
#define ERROR_TARGET_NOT_EXAMINED (-311)
|
#define ERROR_TARGET_NOT_EXAMINED (-311)
|
||||||
|
|
||||||
extern const Jim_Nvp nvp_error_target[];
|
extern const Jim_Nvp nvp_error_target[];
|
||||||
extern const char *target_strerror_safe( int err );
|
extern const char *target_strerror_safe(int err );
|
||||||
|
|
||||||
#endif /* TARGET_H */
|
#endif /* TARGET_H */
|
||||||
|
|
|
@ -117,7 +117,7 @@ int target_request(target_t *target, uint32_t request)
|
||||||
{
|
{
|
||||||
target_req_cmd_t target_req_cmd = request & 0xff;
|
target_req_cmd_t target_req_cmd = request & 0xff;
|
||||||
|
|
||||||
if ( charmsg_mode ) {
|
if (charmsg_mode ) {
|
||||||
target_charmsg(target, target_req_cmd );
|
target_charmsg(target, target_req_cmd );
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -129,16 +129,16 @@ struct target_type_s
|
||||||
int (*register_commands)(struct command_context_s *cmd_ctx);
|
int (*register_commands)(struct command_context_s *cmd_ctx);
|
||||||
|
|
||||||
/* called when target is created */
|
/* called when target is created */
|
||||||
int (*target_create)( struct target_s *target, Jim_Interp *interp );
|
int (*target_create)(struct target_s *target, Jim_Interp *interp );
|
||||||
|
|
||||||
/* called for various config parameters */
|
/* called for various config parameters */
|
||||||
/* returns JIM_CONTINUE - if option not understood */
|
/* returns JIM_CONTINUE - if option not understood */
|
||||||
/* otherwise: JIM_OK, or JIM_ERR, */
|
/* otherwise: JIM_OK, or JIM_ERR, */
|
||||||
int (*target_jim_configure)( struct target_s *target, Jim_GetOptInfo *goi );
|
int (*target_jim_configure)(struct target_s *target, Jim_GetOptInfo *goi );
|
||||||
|
|
||||||
/* target commands specifically handled by the target */
|
/* target commands specifically handled by the target */
|
||||||
/* returns JIM_OK, or JIM_ERR, or JIM_CONTINUE - if option not understood */
|
/* returns JIM_OK, or JIM_ERR, or JIM_CONTINUE - if option not understood */
|
||||||
int (*target_jim_commands)( struct target_s *target, Jim_GetOptInfo *goi );
|
int (*target_jim_commands)(struct target_s *target, Jim_GetOptInfo *goi );
|
||||||
|
|
||||||
/* invoked after JTAG chain has been examined & validated. During
|
/* invoked after JTAG chain has been examined & validated. During
|
||||||
* this stage the target is examined and any additional setup is
|
* this stage the target is examined and any additional setup is
|
||||||
|
|
|
@ -123,7 +123,7 @@ static int handle_trace_history_command(struct command_context_s *cmd_ctx, char
|
||||||
uint32_t first = 0;
|
uint32_t first = 0;
|
||||||
uint32_t last = trace->trace_history_pos;
|
uint32_t last = trace->trace_history_pos;
|
||||||
|
|
||||||
if ( !trace->trace_history_size ) {
|
if (!trace->trace_history_size ) {
|
||||||
command_print(cmd_ctx, "trace history buffer is not allocated");
|
command_print(cmd_ctx, "trace history buffer is not allocated");
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -959,7 +959,7 @@ int xscale_arch_state(struct target_s *target)
|
||||||
"MMU: %s, D-Cache: %s, I-Cache: %s"
|
"MMU: %s, D-Cache: %s, I-Cache: %s"
|
||||||
"%s",
|
"%s",
|
||||||
armv4_5_state_strings[armv4_5->core_state],
|
armv4_5_state_strings[armv4_5->core_state],
|
||||||
Jim_Nvp_value2name_simple( nvp_target_debug_reason, target->debug_reason )->name ,
|
Jim_Nvp_value2name_simple(nvp_target_debug_reason, target->debug_reason )->name ,
|
||||||
armv4_5_mode_strings[armv4_5_mode_to_number(armv4_5->core_mode)],
|
armv4_5_mode_strings[armv4_5_mode_to_number(armv4_5->core_mode)],
|
||||||
buf_get_u32(armv4_5->core_cache->reg_list[ARMV4_5_CPSR].value, 0, 32),
|
buf_get_u32(armv4_5->core_cache->reg_list[ARMV4_5_CPSR].value, 0, 32),
|
||||||
buf_get_u32(armv4_5->core_cache->reg_list[15].value, 0, 32),
|
buf_get_u32(armv4_5->core_cache->reg_list[15].value, 0, 32),
|
||||||
|
@ -1202,7 +1202,7 @@ int xscale_halt(target_t *target)
|
||||||
xscale_common_t *xscale = armv4_5->arch_info;
|
xscale_common_t *xscale = armv4_5->arch_info;
|
||||||
|
|
||||||
LOG_DEBUG("target->state: %s",
|
LOG_DEBUG("target->state: %s",
|
||||||
Jim_Nvp_value2name_simple( nvp_target_state, target->state )->name);
|
Jim_Nvp_value2name_simple(nvp_target_state, target->state )->name);
|
||||||
|
|
||||||
if (target->state == TARGET_HALTED)
|
if (target->state == TARGET_HALTED)
|
||||||
{
|
{
|
||||||
|
@ -1568,7 +1568,7 @@ int xscale_assert_reset(target_t *target)
|
||||||
xscale_common_t *xscale = armv4_5->arch_info;
|
xscale_common_t *xscale = armv4_5->arch_info;
|
||||||
|
|
||||||
LOG_DEBUG("target->state: %s",
|
LOG_DEBUG("target->state: %s",
|
||||||
Jim_Nvp_value2name_simple( nvp_target_state, target->state )->name);
|
Jim_Nvp_value2name_simple(nvp_target_state, target->state )->name);
|
||||||
|
|
||||||
/* select DCSR instruction (set endstate to R-T-I to ensure we don't
|
/* select DCSR instruction (set endstate to R-T-I to ensure we don't
|
||||||
* end up in T-L-R, which would reset JTAG
|
* end up in T-L-R, which would reset JTAG
|
||||||
|
|
|
@ -129,11 +129,11 @@ static int xsvf_fd = 0;
|
||||||
|
|
||||||
|
|
||||||
/* map xsvf tap state to an openocd "tap_state_t" */
|
/* map xsvf tap state to an openocd "tap_state_t" */
|
||||||
static tap_state_t xsvf_to_tap( int xsvf_state )
|
static tap_state_t xsvf_to_tap(int xsvf_state )
|
||||||
{
|
{
|
||||||
tap_state_t ret;
|
tap_state_t ret;
|
||||||
|
|
||||||
switch ( xsvf_state )
|
switch (xsvf_state )
|
||||||
{
|
{
|
||||||
case XSV_RESET: ret = TAP_RESET; break;
|
case XSV_RESET: ret = TAP_RESET; break;
|
||||||
case XSV_IDLE: ret = TAP_IDLE; break;
|
case XSV_IDLE: ret = TAP_IDLE; break;
|
||||||
|
@ -152,7 +152,7 @@ static tap_state_t xsvf_to_tap( int xsvf_state )
|
||||||
case XSV_IREXIT2: ret = TAP_IREXIT2; break;
|
case XSV_IREXIT2: ret = TAP_IREXIT2; break;
|
||||||
case XSV_IRUPDATE: ret = TAP_IRUPDATE; break;
|
case XSV_IRUPDATE: ret = TAP_IRUPDATE; break;
|
||||||
default:
|
default:
|
||||||
LOG_ERROR( "UNKNOWN XSVF STATE 0x%02X", xsvf_state );
|
LOG_ERROR("UNKNOWN XSVF STATE 0x%02X", xsvf_state );
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -232,10 +232,10 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
|
||||||
|
|
||||||
if (strcmp(args[0], "plain") != 0)
|
if (strcmp(args[0], "plain") != 0)
|
||||||
{
|
{
|
||||||
tap = jtag_tap_by_string( args[0] );
|
tap = jtag_tap_by_string(args[0] );
|
||||||
if (!tap )
|
if (!tap )
|
||||||
{
|
{
|
||||||
command_print( cmd_ctx, "Tap: %s unknown", args[0] );
|
command_print(cmd_ctx, "Tap: %s unknown", args[0] );
|
||||||
return ERROR_FAIL;
|
return ERROR_FAIL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -261,7 +261,7 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
|
||||||
|
|
||||||
LOG_USER("xsvf processing file: \"%s\"", filename);
|
LOG_USER("xsvf processing file: \"%s\"", filename);
|
||||||
|
|
||||||
while ( read(xsvf_fd, &opcode, 1) > 0 )
|
while (read(xsvf_fd, &opcode, 1) > 0 )
|
||||||
{
|
{
|
||||||
/* record the position of the just read opcode within the file */
|
/* record the position of the just read opcode within the file */
|
||||||
file_offset = lseek(xsvf_fd, 0, SEEK_CUR) - 1;
|
file_offset = lseek(xsvf_fd, 0, SEEK_CUR) - 1;
|
||||||
|
@ -327,9 +327,9 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
|
||||||
xsdrsize = be_to_h_u32(xsdrsize_buf);
|
xsdrsize = be_to_h_u32(xsdrsize_buf);
|
||||||
LOG_DEBUG("XSDRSIZE %d", xsdrsize);
|
LOG_DEBUG("XSDRSIZE %d", xsdrsize);
|
||||||
|
|
||||||
if ( dr_out_buf ) free(dr_out_buf);
|
if (dr_out_buf ) free(dr_out_buf);
|
||||||
if ( dr_in_buf) free(dr_in_buf);
|
if (dr_in_buf) free(dr_in_buf);
|
||||||
if ( dr_in_mask) free(dr_in_mask);
|
if (dr_in_mask) free(dr_in_mask);
|
||||||
|
|
||||||
dr_out_buf = malloc((xsdrsize + 7) / 8);
|
dr_out_buf = malloc((xsdrsize + 7) / 8);
|
||||||
dr_in_buf = malloc((xsdrsize + 7) / 8);
|
dr_in_buf = malloc((xsdrsize + 7) / 8);
|
||||||
|
@ -366,11 +366,11 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
|
||||||
|
|
||||||
LOG_DEBUG("%s %d", op_name, xsdrsize);
|
LOG_DEBUG("%s %d", op_name, xsdrsize);
|
||||||
|
|
||||||
for ( attempt = 0; attempt < limit; ++attempt )
|
for (attempt = 0; attempt < limit; ++attempt )
|
||||||
{
|
{
|
||||||
scan_field_t field;
|
scan_field_t field;
|
||||||
|
|
||||||
if ( attempt > 0 )
|
if (attempt > 0 )
|
||||||
{
|
{
|
||||||
/* perform the XC9500 exception handling sequence shown in xapp067.pdf and
|
/* perform the XC9500 exception handling sequence shown in xapp067.pdf and
|
||||||
illustrated in psuedo code at end of this file. We start from state
|
illustrated in psuedo code at end of this file. We start from state
|
||||||
|
@ -393,7 +393,7 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
|
||||||
TAP_IDLE,
|
TAP_IDLE,
|
||||||
};
|
};
|
||||||
|
|
||||||
jtag_add_pathmove( DIM(exception_path), exception_path );
|
jtag_add_pathmove(DIM(exception_path), exception_path );
|
||||||
|
|
||||||
if (verbose)
|
if (verbose)
|
||||||
LOG_USER("%s mismatch, xsdrsize=%d retry=%d", op_name, xsdrsize, attempt);
|
LOG_USER("%s mismatch, xsdrsize=%d retry=%d", op_name, xsdrsize, attempt);
|
||||||
|
@ -425,7 +425,7 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
|
||||||
|
|
||||||
if (!matched)
|
if (!matched)
|
||||||
{
|
{
|
||||||
LOG_USER( "%s mismatch", op_name);
|
LOG_USER("%s mismatch", op_name);
|
||||||
tdo_mismatch = 1;
|
tdo_mismatch = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -505,7 +505,7 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
|
||||||
the XSTATE.
|
the XSTATE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ( jtag_add_statemove( mystate ) != ERROR_OK )
|
if (jtag_add_statemove(mystate ) != ERROR_OK )
|
||||||
{
|
{
|
||||||
/* For special states known as stable states
|
/* For special states known as stable states
|
||||||
(Test-Logic-Reset, Run-Test/Idle, Pause-DR, Pause- IR),
|
(Test-Logic-Reset, Run-Test/Idle, Pause-DR, Pause- IR),
|
||||||
|
@ -538,9 +538,9 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
|
||||||
}
|
}
|
||||||
|
|
||||||
/* see page 22 of XSVF spec */
|
/* see page 22 of XSVF spec */
|
||||||
if ( uc == 0 )
|
if (uc == 0 )
|
||||||
xendir = TAP_IDLE;
|
xendir = TAP_IDLE;
|
||||||
else if ( uc == 1 )
|
else if (uc == 1 )
|
||||||
xendir = TAP_IRPAUSE;
|
xendir = TAP_IRPAUSE;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -561,9 +561,9 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
|
||||||
}
|
}
|
||||||
|
|
||||||
/* see page 22 of XSVF spec */
|
/* see page 22 of XSVF spec */
|
||||||
if ( uc == 0 )
|
if (uc == 0 )
|
||||||
xenddr = TAP_IDLE;
|
xenddr = TAP_IDLE;
|
||||||
else if ( uc == 1 )
|
else if (uc == 1 )
|
||||||
xenddr = TAP_DRPAUSE;
|
xenddr = TAP_DRPAUSE;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -583,7 +583,7 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
|
||||||
int bitcount;
|
int bitcount;
|
||||||
tap_state_t my_end_state = xruntest ? TAP_IDLE : xendir;
|
tap_state_t my_end_state = xruntest ? TAP_IDLE : xendir;
|
||||||
|
|
||||||
if ( opcode == XSIR )
|
if (opcode == XSIR )
|
||||||
{
|
{
|
||||||
/* one byte bitcount */
|
/* one byte bitcount */
|
||||||
if (read(xsvf_fd, short_buf, 1) < 0)
|
if (read(xsvf_fd, short_buf, 1) < 0)
|
||||||
|
@ -664,7 +664,7 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ndx < sizeof(comment)-1 )
|
if (ndx < sizeof(comment)-1 )
|
||||||
comment[ndx++] = uc;
|
comment[ndx++] = uc;
|
||||||
|
|
||||||
} while (uc != 0);
|
} while (uc != 0);
|
||||||
|
@ -689,7 +689,7 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
|
||||||
tap_state_t end_state;
|
tap_state_t end_state;
|
||||||
int delay;
|
int delay;
|
||||||
|
|
||||||
if ( read(xsvf_fd, &wait, 1) < 0
|
if (read(xsvf_fd, &wait, 1) < 0
|
||||||
|| read(xsvf_fd, &end, 1) < 0
|
|| read(xsvf_fd, &end, 1) < 0
|
||||||
|| read(xsvf_fd, delay_buf, 4) < 0)
|
|| read(xsvf_fd, delay_buf, 4) < 0)
|
||||||
{
|
{
|
||||||
|
@ -709,9 +709,9 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
jtag_add_statemove( wait_state );
|
jtag_add_statemove(wait_state );
|
||||||
jtag_add_sleep(delay);
|
jtag_add_sleep(delay);
|
||||||
jtag_add_statemove( end_state );
|
jtag_add_statemove(end_state );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -731,7 +731,7 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
|
||||||
int clock_count;
|
int clock_count;
|
||||||
int usecs;
|
int usecs;
|
||||||
|
|
||||||
if ( read(xsvf_fd, &wait, 1) < 0
|
if (read(xsvf_fd, &wait, 1) < 0
|
||||||
|| read(xsvf_fd, &end, 1) < 0
|
|| read(xsvf_fd, &end, 1) < 0
|
||||||
|| read(xsvf_fd, clock_buf, 4) < 0
|
|| read(xsvf_fd, clock_buf, 4) < 0
|
||||||
|| read(xsvf_fd, usecs_buf, 4) < 0 )
|
|| read(xsvf_fd, usecs_buf, 4) < 0 )
|
||||||
|
@ -740,8 +740,8 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
wait_state = xsvf_to_tap( wait );
|
wait_state = xsvf_to_tap(wait );
|
||||||
end_state = xsvf_to_tap( end );
|
end_state = xsvf_to_tap(end );
|
||||||
|
|
||||||
clock_count = be_to_h_u32(clock_buf);
|
clock_count = be_to_h_u32(clock_buf);
|
||||||
usecs = be_to_h_u32(usecs_buf);
|
usecs = be_to_h_u32(usecs_buf);
|
||||||
|
@ -758,17 +758,17 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
|
||||||
*/
|
*/
|
||||||
if (wait_state != TAP_IRPAUSE && wait_state != TAP_DRPAUSE && wait_state != TAP_RESET && wait_state != TAP_IDLE)
|
if (wait_state != TAP_IRPAUSE && wait_state != TAP_DRPAUSE && wait_state != TAP_RESET && wait_state != TAP_IDLE)
|
||||||
{
|
{
|
||||||
LOG_ERROR("illegal XWAITSTATE wait_state: \"%s\"", tap_state_name( wait_state ));
|
LOG_ERROR("illegal XWAITSTATE wait_state: \"%s\"", tap_state_name(wait_state ));
|
||||||
unsupported = 1;
|
unsupported = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
jtag_add_statemove( wait_state );
|
jtag_add_statemove(wait_state );
|
||||||
|
|
||||||
jtag_add_clocks( clock_count );
|
jtag_add_clocks(clock_count );
|
||||||
|
|
||||||
jtag_add_sleep( usecs );
|
jtag_add_sleep(usecs );
|
||||||
|
|
||||||
jtag_add_statemove( end_state );
|
jtag_add_statemove(end_state );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -779,7 +779,7 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
|
||||||
*/
|
*/
|
||||||
uint8_t count_buf[4];
|
uint8_t count_buf[4];
|
||||||
|
|
||||||
if ( read(xsvf_fd, count_buf, 4) < 0 )
|
if (read(xsvf_fd, count_buf, 4) < 0 )
|
||||||
{
|
{
|
||||||
do_abort = 1;
|
do_abort = 1;
|
||||||
break;
|
break;
|
||||||
|
@ -799,7 +799,7 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
|
||||||
uint8_t clock_buf[4];
|
uint8_t clock_buf[4];
|
||||||
uint8_t usecs_buf[4];
|
uint8_t usecs_buf[4];
|
||||||
|
|
||||||
if ( read(xsvf_fd, &state, 1) < 0
|
if (read(xsvf_fd, &state, 1) < 0
|
||||||
|| read(xsvf_fd, clock_buf, 4) < 0
|
|| read(xsvf_fd, clock_buf, 4) < 0
|
||||||
|| read(xsvf_fd, usecs_buf, 4) < 0 )
|
|| read(xsvf_fd, usecs_buf, 4) < 0 )
|
||||||
{
|
{
|
||||||
|
@ -826,7 +826,7 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
|
||||||
|
|
||||||
LOG_DEBUG("LSDR");
|
LOG_DEBUG("LSDR");
|
||||||
|
|
||||||
if ( xsvf_read_buffer(xsdrsize, xsvf_fd, dr_out_buf) != ERROR_OK
|
if (xsvf_read_buffer(xsdrsize, xsvf_fd, dr_out_buf) != ERROR_OK
|
||||||
|| xsvf_read_buffer(xsdrsize, xsvf_fd, dr_in_buf) != ERROR_OK )
|
|| xsvf_read_buffer(xsdrsize, xsvf_fd, dr_in_buf) != ERROR_OK )
|
||||||
{
|
{
|
||||||
do_abort = 1;
|
do_abort = 1;
|
||||||
|
@ -836,11 +836,11 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
|
||||||
if (limit < 1)
|
if (limit < 1)
|
||||||
limit = 1;
|
limit = 1;
|
||||||
|
|
||||||
for ( attempt = 0; attempt < limit; ++attempt )
|
for (attempt = 0; attempt < limit; ++attempt )
|
||||||
{
|
{
|
||||||
scan_field_t field;
|
scan_field_t field;
|
||||||
|
|
||||||
jtag_add_statemove( loop_state );
|
jtag_add_statemove(loop_state );
|
||||||
jtag_add_clocks(loop_clocks);
|
jtag_add_clocks(loop_clocks);
|
||||||
jtag_add_sleep(loop_usecs);
|
jtag_add_sleep(loop_usecs);
|
||||||
|
|
||||||
|
@ -873,7 +873,7 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
|
||||||
|
|
||||||
if (!matched )
|
if (!matched )
|
||||||
{
|
{
|
||||||
LOG_USER( "LSDR mismatch" );
|
LOG_USER("LSDR mismatch" );
|
||||||
tdo_mismatch = 1;
|
tdo_mismatch = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -890,7 +890,7 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch ( trst_mode )
|
switch (trst_mode )
|
||||||
{
|
{
|
||||||
case XTRST_ON:
|
case XTRST_ON:
|
||||||
jtag_add_reset(1, 0);
|
jtag_add_reset(1, 0);
|
||||||
|
@ -902,7 +902,7 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
|
||||||
case XTRST_ABSENT:
|
case XTRST_ABSENT:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
LOG_ERROR( "XTRST mode argument (0x%02X) out of range", trst_mode );
|
LOG_ERROR("XTRST mode argument (0x%02X) out of range", trst_mode );
|
||||||
do_abort = 1;
|
do_abort = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -918,7 +918,7 @@ static int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, cha
|
||||||
LOG_DEBUG("xsvf failed, setting taps to reasonable state");
|
LOG_DEBUG("xsvf failed, setting taps to reasonable state");
|
||||||
|
|
||||||
/* upon error, return the TAPs to a reasonable state */
|
/* upon error, return the TAPs to a reasonable state */
|
||||||
jtag_add_statemove( TAP_IDLE );
|
jtag_add_statemove(TAP_IDLE );
|
||||||
jtag_execute_queue();
|
jtag_execute_queue();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue