aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Fritiofson <andreas.fritiofson@gmail.com>2011-11-16 00:10:44 +0100
committerSpencer Oliver <spen@spen-soft.co.uk>2011-11-16 23:46:35 +0000
commitaef1fe6024ba5f16557b92436ffb970dabe5c18c (patch)
tree77da83b9eab3eb43f4abc723956e67fefa46b7ac
parent287ba1888b3dc95d805d054c5c9f2d1dd231a1b2 (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>
-rw-r--r--src/jtag/drivers/bitq.c25
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++;
}
}