X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fjtag%2Fcommands.c;h=4e8ce40f141f87a0e0d66a250456257f074e9953;hp=0cee02af164276ef2da240fe770be57ec01c709a;hb=a93b404161dc42f8dee805c8f95bc4974aded9cb;hpb=dc575dc5bf8cb597a0e9a47794744ae6b1928087 diff --git a/src/jtag/commands.c b/src/jtag/commands.c index 0cee02af16..4e8ce40f14 100644 --- a/src/jtag/commands.c +++ b/src/jtag/commands.c @@ -33,25 +33,24 @@ #include "commands.h" -typedef struct cmd_queue_page_s -{ +struct cmd_queue_page { void *address; size_t used; - struct cmd_queue_page_s *next; -} cmd_queue_page_t; + struct cmd_queue_page *next; +}; #define CMD_QUEUE_PAGE_SIZE (1024 * 1024) -static cmd_queue_page_t *cmd_queue_pages = NULL; +static struct cmd_queue_page *cmd_queue_pages = NULL; -jtag_command_t *jtag_command_queue = NULL; -static jtag_command_t **next_command_pointer = &jtag_command_queue; +struct jtag_command *jtag_command_queue = NULL; +static struct jtag_command **next_command_pointer = &jtag_command_queue; -void jtag_queue_command(jtag_command_t * cmd) +void jtag_queue_command(struct jtag_command * cmd) { // this command goes on the end, so ensure the queue terminates cmd->next = NULL; - jtag_command_t **last_cmd = next_command_pointer; + struct jtag_command **last_cmd = next_command_pointer; assert(NULL != last_cmd); assert(NULL == *last_cmd); *last_cmd = cmd; @@ -62,7 +61,7 @@ void jtag_queue_command(jtag_command_t * cmd) void* cmd_queue_alloc(size_t size) { - cmd_queue_page_t **p_page = &cmd_queue_pages; + struct cmd_queue_page **p_page = &cmd_queue_pages; int offset; uint8_t *t; @@ -108,7 +107,7 @@ void* cmd_queue_alloc(size_t size) if (!*p_page) { - *p_page = malloc(sizeof(cmd_queue_page_t)); + *p_page = malloc(sizeof(struct cmd_queue_page)); (*p_page)->used = 0; (*p_page)->address = malloc(CMD_QUEUE_PAGE_SIZE); (*p_page)->next = NULL; @@ -123,11 +122,11 @@ void* cmd_queue_alloc(size_t size) void cmd_queue_free(void) { - cmd_queue_page_t *page = cmd_queue_pages; + struct cmd_queue_page *page = cmd_queue_pages; while (page) { - cmd_queue_page_t *last = page; + struct cmd_queue_page *last = page; free(page->address); page = page->next; free(last); @@ -144,7 +143,7 @@ void jtag_command_queue_reset(void) next_command_pointer = &jtag_command_queue; } -enum scan_type jtag_scan_type(const scan_command_t *cmd) +enum scan_type jtag_scan_type(const struct scan_command *cmd) { int i; int type = 0; @@ -160,7 +159,7 @@ enum scan_type jtag_scan_type(const scan_command_t *cmd) return type; } -int jtag_scan_size(const scan_command_t *cmd) +int jtag_scan_size(const struct scan_command *cmd) { int bit_count = 0; int i; @@ -174,51 +173,52 @@ int jtag_scan_size(const scan_command_t *cmd) return bit_count; } -int jtag_build_buffer(const scan_command_t *cmd, uint8_t **buffer) +int jtag_build_buffer(const struct scan_command *cmd, uint8_t **buffer) { int bit_count = 0; int i; bit_count = jtag_scan_size(cmd); - *buffer = calloc(1,CEIL(bit_count, 8)); + *buffer = calloc(1,DIV_ROUND_UP(bit_count, 8)); bit_count = 0; -#ifdef _DEBUG_JTAG_IO_ - LOG_DEBUG("%s num_fields: %i", cmd->ir_scan ? "IRSCAN" : "DRSCAN", cmd->num_fields); -#endif + DEBUG_JTAG_IO("%s num_fields: %i", + cmd->ir_scan ? "IRSCAN" : "DRSCAN", + cmd->num_fields); for (i = 0; i < cmd->num_fields; i++) { if (cmd->fields[i].out_value) { #ifdef _DEBUG_JTAG_IO_ - char* char_buf = buf_to_str(cmd->fields[i].out_value, (cmd->fields[i].num_bits > DEBUG_JTAG_IOZ) ? DEBUG_JTAG_IOZ : cmd->fields[i].num_bits, 16); -#endif - buf_set_buf(cmd->fields[i].out_value, 0, *buffer, bit_count, cmd->fields[i].num_bits); -#ifdef _DEBUG_JTAG_IO_ - LOG_DEBUG("fields[%i].out_value[%i]: 0x%s", i, cmd->fields[i].num_bits, char_buf); + char *char_buf = buf_to_str(cmd->fields[i].out_value, + (cmd->fields[i].num_bits > DEBUG_JTAG_IOZ) + ? DEBUG_JTAG_IOZ + : cmd->fields[i].num_bits, 16); + + LOG_DEBUG("fields[%i].out_value[%i]: 0x%s", i, + cmd->fields[i].num_bits, char_buf); free(char_buf); #endif + buf_set_buf(cmd->fields[i].out_value, 0, *buffer, + bit_count, cmd->fields[i].num_bits); } else { -#ifdef _DEBUG_JTAG_IO_ - LOG_DEBUG("fields[%i].out_value[%i]: NULL", i, cmd->fields[i].num_bits); -#endif + DEBUG_JTAG_IO("fields[%i].out_value[%i]: NULL", + i, cmd->fields[i].num_bits); } bit_count += cmd->fields[i].num_bits; } -#ifdef _DEBUG_JTAG_IO_ - //LOG_DEBUG("bit_count totalling: %i", bit_count); -#endif + //DEBUG_JTAG_IO("bit_count totalling: %i", bit_count); return bit_count; } -int jtag_read_buffer(uint8_t *buffer, const scan_command_t *cmd) +int jtag_read_buffer(uint8_t *buffer, const struct scan_command *cmd) { int i; int bit_count = 0; @@ -235,11 +235,16 @@ int jtag_read_buffer(uint8_t *buffer, const scan_command_t *cmd) if (cmd->fields[i].in_value) { int num_bits = cmd->fields[i].num_bits; - uint8_t *captured = buf_set_buf(buffer, bit_count, malloc(CEIL(num_bits, 8)), 0, num_bits); + uint8_t *captured = buf_set_buf(buffer, bit_count, malloc(DIV_ROUND_UP(num_bits, 8)), 0, num_bits); #ifdef _DEBUG_JTAG_IO_ - char *char_buf = buf_to_str(captured, (num_bits > DEBUG_JTAG_IOZ) ? DEBUG_JTAG_IOZ : num_bits, 16); - LOG_DEBUG("fields[%i].in_value[%i]: 0x%s", i, num_bits, char_buf); + char *char_buf = buf_to_str(captured, + (num_bits > DEBUG_JTAG_IOZ) + ? DEBUG_JTAG_IOZ + : num_bits, 16); + + LOG_DEBUG("fields[%i].in_value[%i]: 0x%s", + i, num_bits, char_buf); free(char_buf); #endif