diff options
author | Andreas Fritiofson <andreas.fritiofson@gmail.com> | 2011-11-16 00:10:44 +0100 |
---|---|---|
committer | Spencer Oliver <spen@spen-soft.co.uk> | 2011-11-16 23:46:35 +0000 |
commit | aef1fe6024ba5f16557b92436ffb970dabe5c18c (patch) | |
tree | 77da83b9eab3eb43f4abc723956e67fefa46b7ac /src/jtag/drivers/bitq.c | |
parent | 287ba1888b3dc95d805d054c5c9f2d1dd231a1b2 (diff) |
bitq: remove the remaining static variables
in_mask and in_idx are just another encoding of the same state information
that is already kept in bitq_in_state.bit_pos so derive them from that
instead of maintaining them separately.
Change-Id: I4ac6bbe923698a8c1090a785b8babcbb90f82931
Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Reviewed-on: http://openocd.zylin.com/207
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
Diffstat (limited to 'src/jtag/drivers/bitq.c')
-rw-r--r-- | src/jtag/drivers/bitq.c | 25 |
1 files changed, 6 insertions, 19 deletions
diff --git a/src/jtag/drivers/bitq.c b/src/jtag/drivers/bitq.c index 20aead70..064f43b0 100644 --- a/src/jtag/drivers/bitq.c +++ b/src/jtag/drivers/bitq.c @@ -32,7 +32,7 @@ struct bitq_interface* bitq_interface; /* low level bit queue interface */ struct bitq_state { struct jtag_command *cmd; /* command currently processed */ int field_idx; /* index of field currently being processed */ - int bit_pos; /* position of bit curently being processed */ + int bit_pos; /* position of bit currently being processed */ int status; /* processing status */ }; static struct bitq_state bitq_in_state; @@ -43,10 +43,6 @@ static struct bitq_state bitq_in_state; */ void bitq_in_proc(void) { - /* static information preserved between calls to increase performance */ - static int in_idx; /* index of byte being scanned */ - static uint8_t in_mask; /* mask of next bit to be scanned */ - struct scan_field* field; int tdo; @@ -62,16 +58,14 @@ void bitq_in_proc(void) field = &bitq_in_state.cmd->cmd.scan->fields[bitq_in_state.field_idx]; if (field->in_value) { - if (bitq_in_state.bit_pos == 0) - { - /* initialize field scanning */ - in_mask = 0x01; - in_idx = 0; - } - /* field scanning */ while (bitq_in_state.bit_pos < field->num_bits) { + /* index of byte being scanned */ + int in_idx = bitq_in_state.bit_pos / 8; + /* mask of next bit to be scanned */ + uint8_t in_mask = 1 << (bitq_in_state.bit_pos % 8); + if ((tdo = bitq_interface->in()) < 0) { #ifdef _DEBUG_JTAG_IO_ @@ -83,13 +77,6 @@ void bitq_in_proc(void) field->in_value[in_idx] = 0; if (tdo) field->in_value[in_idx] |= in_mask; - if (in_mask == 0x80) - { - in_mask = 0x01; - in_idx++; - } - else - in_mask <<= 1; bitq_in_state.bit_pos++; } } |