OpenOCD
binarybuffer.c File Reference
Include dependency graph for binarybuffer.c:

Go to the source code of this file.

Functions

void bit_copy_discard (struct bit_copy_queue *q)
 
void bit_copy_execute (struct bit_copy_queue *q)
 
void bit_copy_queue_init (struct bit_copy_queue *q)
 
int bit_copy_queued (struct bit_copy_queue *q, uint8_t *dst, unsigned dst_offset, const uint8_t *src, unsigned src_offset, unsigned bit_count)
 
bool buf_cmp (const void *_buf1, const void *_buf2, unsigned size)
 
bool buf_cmp_mask (const void *_buf1, const void *_buf2, const void *_mask, unsigned size)
 
static bool buf_cmp_masked (uint8_t a, uint8_t b, uint8_t m)
 
static bool buf_cmp_trailing (uint8_t a, uint8_t b, uint8_t m, unsigned trailing)
 
void * buf_cpy (const void *from, void *_to, unsigned size)
 Copies size bits out of from and into to. More...
 
void * buf_set_buf (const void *_src, unsigned src_start, void *_dst, unsigned dst_start, unsigned len)
 
void * buf_set_ones (void *_buf, unsigned size)
 Set the contents of buf with count bits, all set to 1. More...
 
char * buf_to_hex_str (const void *_buf, unsigned buf_len)
 
void buffer_shr (void *_buf, unsigned buf_len, unsigned count)
 
static int ceil_f_to_u32 (float x)
 
uint32_t flip_u32 (uint32_t value, unsigned int num)
 
size_t hexify (char *hex, const uint8_t *bin, size_t count, size_t length)
 Convert binary data into a string of hexadecimal pairs. More...
 
static void str_radix_guess (const char **_str, unsigned *_str_len, unsigned *_radix)
 identify radix, and skip radix-prefix (0, 0x or 0X) More...
 
int str_to_buf (const char *str, unsigned str_len, void *_buf, unsigned buf_len, unsigned radix)
 
size_t unhexify (uint8_t *bin, const char *hex, size_t count)
 Convert a string of hexadecimal pairs into its binary representation. More...
 

Variables

static const unsigned char bit_reverse_table256 []
 
static const char hex_digits []
 

Function Documentation

◆ bit_copy_discard()

void bit_copy_discard ( struct bit_copy_queue q)

◆ bit_copy_execute()

◆ bit_copy_queue_init()

void bit_copy_queue_init ( struct bit_copy_queue q)

Definition at line 299 of file binarybuffer.c.

References INIT_LIST_HEAD(), and bit_copy_queue::list.

Referenced by mpsse_open().

◆ bit_copy_queued()

int bit_copy_queued ( struct bit_copy_queue q,
uint8_t *  dst,
unsigned  dst_offset,
const uint8_t *  src,
unsigned  src_offset,
unsigned  bit_count 
)

◆ buf_cmp()

bool buf_cmp ( const void *  _buf1,
const void *  _buf2,
unsigned  size 
)

Definition at line 70 of file binarybuffer.c.

References buf_cmp_trailing(), and size.

Referenced by jtag_check_value_inner().

◆ buf_cmp_mask()

bool buf_cmp_mask ( const void *  _buf1,
const void *  _buf2,
const void *  _mask,
unsigned  size 
)

Definition at line 87 of file binarybuffer.c.

References buf_cmp_masked(), buf_cmp_trailing(), mask, and size.

Referenced by jtag_check_value_inner(), and svf_check_tdo().

◆ buf_cmp_masked()

static bool buf_cmp_masked ( uint8_t  a,
uint8_t  b,
uint8_t  m 
)
static

Definition at line 60 of file binarybuffer.c.

Referenced by buf_cmp_mask(), and buf_cmp_trailing().

◆ buf_cmp_trailing()

static bool buf_cmp_trailing ( uint8_t  a,
uint8_t  b,
uint8_t  m,
unsigned  trailing 
)
static

Definition at line 64 of file binarybuffer.c.

References buf_cmp_masked(), and mask.

Referenced by buf_cmp(), and buf_cmp_mask().

◆ buf_cpy()

void* buf_cpy ( const void *  from,
void *  to,
unsigned  size 
)

Copies size bits out of from and into to.

Any extra bits in the final byte will be set to zero.

Parameters
fromThe buffer to copy into to.
toThe buffer that will receive the copy of from.
sizeThe number of bits to copy.

Definition at line 43 of file binarybuffer.c.

References DIV_ROUND_UP, NULL, and size.

Referenced by armv7m_read_core_reg(), armv7m_set_core_reg(), armv7m_write_core_reg(), cortex_m_fast_read_all_regs(), esirisc_read_memory(), interface_add_tms_seq(), interface_jtag_add_ir_scan(), jtag_add_plain_scan(), jtag_read_buffer(), jtag_scan_field_clone(), riscv_run_algorithm(), rtos_generic_stack_read(), xscale_get_reg(), xtensa_canonical_to_windowbase_offset(), xtensa_fetch_all_regs(), xtensa_start_algorithm(), xtensa_wait_algorithm(), zephyr_get_arc_state(), and zephyr_get_arm_state().

◆ buf_set_buf()

void* buf_set_buf ( const void *  _src,
unsigned  src_start,
void *  _dst,
unsigned  dst_start,
unsigned  len 
)

◆ buf_set_ones()

void* buf_set_ones ( void *  buf,
unsigned  size 
)

Set the contents of buf with count bits, all set to 1.

Parameters
bufThe buffer to fill with ones.
sizeThe number of bits.
Returns
The original buffer (buf).

Definition at line 106 of file binarybuffer.c.

References NULL, and size.

Referenced by interface_jtag_add_ir_scan(), jtag_reset_callback(), jtag_tap_init(), and jtag_validate_ircapture().

◆ buf_to_hex_str()

◆ buffer_shr()

void buffer_shr ( void *  _buf,
unsigned  buf_len,
unsigned  count 
)

Definition at line 410 of file binarybuffer.c.

References count.

Referenced by adbg_wb_burst_read(), dmi_scan(), and riscv_batch_run().

◆ ceil_f_to_u32()

static int ceil_f_to_u32 ( float  x)
static

Definition at line 179 of file binarybuffer.c.

Referenced by str_to_buf().

◆ flip_u32()

◆ hexify()

size_t hexify ( char *  hex,
const uint8_t *  bin,
size_t  count,
size_t  length 
)

Convert binary data into a string of hexadecimal pairs.

Parameters
[out]hexBuffer to store string of hexadecimal pairs. The buffer size must be at least length.
[in]binBuffer with binary data to convert into hexadecimal pairs.
[in]countNumber of bytes to convert.
[in]lengthMaximum number of characters, including null-terminator, to store into hex.
Returns
The length of the converted string excluding null-terminator.

Definition at line 392 of file binarybuffer.c.

References count, hex_digits, and length.

Referenced by COMMAND_HANDLER(), gdb_output_con(), gdb_query_packet(), gdb_read_memory_packet(), gdb_read_smp_packet(), icdi_send_remote_cmd(), icdi_usb_write_reg(), linux_thread_extra_info(), rtos_put_gdb_reg_list(), rtos_qsymbol(), rtos_thread_packet(), and tcl_target_callback_trace_handler().

◆ str_radix_guess()

static void str_radix_guess ( const char **  _str,
unsigned *  _str_len,
unsigned *  _radix 
)
static

identify radix, and skip radix-prefix (0, 0x or 0X)

Definition at line 210 of file binarybuffer.c.

Referenced by str_to_buf().

◆ str_to_buf()

int str_to_buf ( const char *  str,
unsigned  str_len,
void *  _buf,
unsigned  buf_len,
unsigned  radix 
)

◆ unhexify()

size_t unhexify ( uint8_t *  bin,
const char *  hex,
size_t  count 
)

Convert a string of hexadecimal pairs into its binary representation.

Parameters
[out]binBuffer to store binary representation. The buffer size must be at least count.
[in]hexString with hexadecimal pairs to convert into its binary representation.
[in]countNumber of hexadecimal pairs to convert.
Returns
The number of converted hexadecimal pairs.

Definition at line 354 of file binarybuffer.c.

References count.

Referenced by COMMAND_HANDLER(), efinix_read_bit_file(), gatemate_read_cfg_line(), gdb_query_packet(), gdb_write_memory_packet(), icdi_get_cmd_result(), icdi_usb_read_reg(), icdi_usb_version(), next_hex_encoded_field(), and rtos_qsymbol().

Variable Documentation

◆ bit_reverse_table256

const unsigned char bit_reverse_table256[]
static
Initial value:
= {
0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0, 0x10, 0x90, 0x50, 0xD0, 0x30, 0xB0, 0x70, 0xF0,
0x08, 0x88, 0x48, 0xC8, 0x28, 0xA8, 0x68, 0xE8, 0x18, 0x98, 0x58, 0xD8, 0x38, 0xB8, 0x78, 0xF8,
0x04, 0x84, 0x44, 0xC4, 0x24, 0xA4, 0x64, 0xE4, 0x14, 0x94, 0x54, 0xD4, 0x34, 0xB4, 0x74, 0xF4,
0x0C, 0x8C, 0x4C, 0xCC, 0x2C, 0xAC, 0x6C, 0xEC, 0x1C, 0x9C, 0x5C, 0xDC, 0x3C, 0xBC, 0x7C, 0xFC,
0x02, 0x82, 0x42, 0xC2, 0x22, 0xA2, 0x62, 0xE2, 0x12, 0x92, 0x52, 0xD2, 0x32, 0xB2, 0x72, 0xF2,
0x0A, 0x8A, 0x4A, 0xCA, 0x2A, 0xAA, 0x6A, 0xEA, 0x1A, 0x9A, 0x5A, 0xDA, 0x3A, 0xBA, 0x7A, 0xFA,
0x06, 0x86, 0x46, 0xC6, 0x26, 0xA6, 0x66, 0xE6, 0x16, 0x96, 0x56, 0xD6, 0x36, 0xB6, 0x76, 0xF6,
0x0E, 0x8E, 0x4E, 0xCE, 0x2E, 0xAE, 0x6E, 0xEE, 0x1E, 0x9E, 0x5E, 0xDE, 0x3E, 0xBE, 0x7E, 0xFE,
0x01, 0x81, 0x41, 0xC1, 0x21, 0xA1, 0x61, 0xE1, 0x11, 0x91, 0x51, 0xD1, 0x31, 0xB1, 0x71, 0xF1,
0x09, 0x89, 0x49, 0xC9, 0x29, 0xA9, 0x69, 0xE9, 0x19, 0x99, 0x59, 0xD9, 0x39, 0xB9, 0x79, 0xF9,
0x05, 0x85, 0x45, 0xC5, 0x25, 0xA5, 0x65, 0xE5, 0x15, 0x95, 0x55, 0xD5, 0x35, 0xB5, 0x75, 0xF5,
0x0D, 0x8D, 0x4D, 0xCD, 0x2D, 0xAD, 0x6D, 0xED, 0x1D, 0x9D, 0x5D, 0xDD, 0x3D, 0xBD, 0x7D, 0xFD,
0x03, 0x83, 0x43, 0xC3, 0x23, 0xA3, 0x63, 0xE3, 0x13, 0x93, 0x53, 0xD3, 0x33, 0xB3, 0x73, 0xF3,
0x0B, 0x8B, 0x4B, 0xCB, 0x2B, 0xAB, 0x6B, 0xEB, 0x1B, 0x9B, 0x5B, 0xDB, 0x3B, 0xBB, 0x7B, 0xFB,
0x07, 0x87, 0x47, 0xC7, 0x27, 0xA7, 0x67, 0xE7, 0x17, 0x97, 0x57, 0xD7, 0x37, 0xB7, 0x77, 0xF7,
0x0F, 0x8F, 0x4F, 0xCF, 0x2F, 0xAF, 0x6F, 0xEF, 0x1F, 0x9F, 0x5F, 0xDF, 0x3F, 0xBF, 0x7F, 0xFF
}

Definition at line 19 of file binarybuffer.c.

Referenced by flip_u32().

◆ hex_digits

const char hex_digits[]
static
Initial value:
= {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f'
}

Definition at line 38 of file binarybuffer.c.

Referenced by buf_to_hex_str(), and hexify().