OpenOCD
binarybuffer.h File Reference

Support functions to access arbitrary bits in a byte array. More...

Include dependency graph for binarybuffer.h:

Go to the source code of this file.

Data Structures

struct  bit_copy_queue
 
struct  bit_copy_queue_entry
 

Functions

static void bit_copy (uint8_t *dst, unsigned dst_offset, const uint8_t *src, unsigned src_offset, unsigned bit_count)
 
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)
 
void * buf_cpy (const void *from, void *to, unsigned size)
 Copies size bits out of from and into to. More...
 
static uint32_t buf_get_u32 (const uint8_t *_buffer, unsigned first, unsigned num)
 Retrieves num bits from _buffer, starting at the first bit, returning the bits in a 32-bit word. More...
 
static uint64_t buf_get_u64 (const uint8_t *_buffer, unsigned first, unsigned num)
 Retrieves num bits from _buffer, starting at the first bit, returning the bits in a 64-bit word. 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...
 
static void buf_set_u32 (uint8_t *_buffer, unsigned first, unsigned num, uint32_t value)
 Sets num bits in _buffer, starting at the first bit, using the bits in value. More...
 
static void buf_set_u64 (uint8_t *_buffer, unsigned first, unsigned num, uint64_t value)
 Sets num bits in _buffer, starting at the first bit, using the bits in value. More...
 
char * buf_to_hex_str (const void *buf, unsigned size)
 
void buffer_shr (void *_buf, unsigned buf_len, unsigned count)
 
static uint32_t fast_target_buffer_get_u32 (const void *p, bool le)
 
uint32_t flip_u32 (uint32_t value, unsigned width)
 Inverts the ordering of bits inside a 32-bit word (e.g. More...
 
size_t hexify (char *hex, const uint8_t *bin, size_t count, size_t out_maxlen)
 Convert binary data into a string of hexadecimal pairs. More...
 
int str_to_buf (const char *str, unsigned len, void *bin_buf, unsigned buf_size, 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...
 

Detailed Description

Support functions to access arbitrary bits in a byte array.

Definition in file binarybuffer.h.

Function Documentation

◆ bit_copy()

static void bit_copy ( uint8_t *  dst,
unsigned  dst_offset,
const uint8_t *  src,
unsigned  src_offset,
unsigned  bit_count 
)
inlinestatic

◆ 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_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_get_u32()

static uint32_t buf_get_u32 ( const uint8_t *  _buffer,
unsigned  first,
unsigned  num 
)
inlinestatic

Retrieves num bits from _buffer, starting at the first bit, returning the bits in a 32-bit word.

This routine fast-paths reads of little-endian, byte-aligned, 32-bit words.

Parameters
_bufferThe buffer whose bits will be read.
firstThe bit offset in _buffer to start reading (0-31).
numThe number of bits from _buffer to read (1-32).
Returns
Up to 32-bits that were read from _buffer.

Definition at line 99 of file binarybuffer.h.

References buffer.

Referenced by adapter_debug_entry(), adapter_poll(), adapter_resume(), adapter_step(), aduc702x_write_block(), aducm360_write_block_async(), aducm360_write_block_sync(), amt_jtagaccel_scan(), arc_jtag_enque_write_ir(), arc_jtag_read_memory(), arc_jtag_read_registers(), arc_jtag_status(), arc_reg_get_field(), arc_step(), arm11_add_ir(), arm11_nextpc(), arm720t_soft_reset_halt(), arm7_9_bulk_write_memory(), arm7_9_debug_entry(), arm7_9_enable_eice_step(), arm7_9_execute_sys_speed(), arm7_9_full_context(), arm7_9_handle_target_request(), arm7_9_poll(), arm7_9_read_core_reg(), arm7_9_read_memory(), arm7_9_restore_context(), arm7_9_resume(), arm7_9_soft_reset_halt(), arm7_9_step(), arm7_9_write_core_reg(), arm7_9_write_memory(), arm7tdmi_branch_resume_thumb(), arm920t_soft_reset_halt(), arm926ejs_cp15_read(), arm926ejs_cp15_write(), arm926ejs_examine_debug_reason(), arm926ejs_soft_reset_halt(), arm9tdmi_branch_resume_thumb(), arm_arch_state(), arm_blank_check_memory(), arm_checksum_memory(), arm_dpm_modeswitch(), arm_jtag_set_instr(), arm_semihosting(), armjtagew_get_status(), armjtagew_speed(), armjtagew_tap_execute(), armv4_5_get_cpsr(), armv4_5_get_reg(), armv4_5_get_reg_mode(), armv4_5_run_algorithm_completion(), armv4_5_run_algorithm_inner(), armv7m_arch_state(), armv7m_checksum_memory(), armv7m_start_algorithm(), armv7m_wait_algorithm(), armv7m_write_core_reg(), armv8_aarch64_state(), armv8_dpm_modeswitch(), avr32_ap7k_resume(), avr32_jtag_mwa_read_data(), avr32_jtag_mwa_set_address(), avr32_jtag_mwa_write_data(), avr32_jtag_nexus_read_data(), avr32_jtag_nexus_set_address(), avr32_jtag_nexus_write_data(), avr32_jtag_set_instr(), avr32_write_core_reg(), bitbang_swd_read_reg(), bitbang_swd_write_reg(), bluenrgx_write(), calcaddr_physfromlin(), cc3220sf_write(), cfi_intel_write_block(), cfi_spansion_write_block(), cfi_spansion_write_block_mips(), COMMAND_HANDLER(), cortex_a_internal_restore(), cortex_a_step(), cortex_m_debug_entry(), cortex_m_dwt_set_reg(), cortex_m_restore_one(), cortex_m_step(), dbus_scan(), dmi_scan(), dpm_write_pc_core_state(), dpm_write_reg(), dpm_write_reg_u64(), dsp563xx_read_memory(), dsp563xx_read_memory_core(), dsp563xx_run_algorithm(), dsp563xx_write_core_reg(), dsp563xx_write_memory(), dtmcontrol_scan(), dtmcontrol_scan_via_bscan(), efm32x_write_block(), em357_write_block(), embeddedice_build_reg_cache(), embeddedice_handshake(), embeddedice_set_reg_w_exec(), embeddedice_store_reg(), esirisc_arch_state(), esirisc_debug_entry(), esirisc_jtag_set_instr(), esirisc_resume_or_step(), esirisc_trace_buf_get_u32(), esirisc_write_csr(), esirisc_write_memory(), esirisc_write_reg(), esp_xtensa_apptrace_status_reg_read(), esp_xtensa_semihosting(), etb_getbuf(), etb_init(), etb_read_trace(), etb_set_instr(), etb_set_reg_w_exec(), etb_status(), etm_build_reg_cache(), etm_set_reg_w_exec(), etm_setup(), etm_store_reg(), feroceon_branch_resume_thumb(), feroceon_bulk_write_memory(), fm3_write_block(), fm4_flash_erase(), fm4_flash_write(), ftdi_swd_run_queue(), gatemate_connect_spi_to_jtag(), gatemate_disconnect_spi_from_jtag(), get_tapstatus(), gw16012_scan(), halt_prep(), idcode_scan(), ipdbg_jtag_transfer_bytes(), ipdbg_shift_data(), ipdbg_shift_empty_data(), ipdbg_shift_instr(), jlink_swd_run_queue(), jtag_examine_chain(), jtag_examine_chain_end(), kinetis_ke_write_words(), kinetis_write_block(), lakemont_arch_state(), lakemont_get_core_reg(), lakemont_poll(), lakemont_resume(), lakemont_step(), lattice_certus_connect_spi_to_jtag(), lattice_ecp5_connect_spi_to_jtag(), log_dap_cmd(), lpc2000_write(), ls1_sap_set_instr(), mdr_write_block(), mips32_arch_state(), mips32_blank_check_memory(), mips32_checksum_memory(), mips32_pracc_queue_exec(), mips32_run_algorithm(), mips32_run_and_wait(), mips32_set_core_reg(), mips32_write_core_reg(), mips_ejtag_drscan_32(), mips_ejtag_set_instr(), mips_m4k_debug_entry(), mips_m4k_internal_restore(), mips_m4k_step(), niietcm4_write_block(), nulink_usb_write_mem32(), nulink_usb_write_mem8(), or1k_resume_or_step(), or1k_write_core_reg(), osbdm_swap(), pic32mx_write_block(), post_result(), qn908x_write(), qspi_read_write_block(), qspi_verify(), read_hw_reg(), read_mem(), read_rtt_channel(), riscv_address_translate(), riscv_batch_get_dmi_read_data(), riscv_batch_get_dmi_read_op(), riscv_checksum_memory(), rp2040_call_rom_func(), rsl10_ll_flash_erase(), rsl10_ll_flash_write(), rsl10_mass_erase(), scans_get_u32(), set_debug_regs(), sim3x_write_block(), stlink_usb_xfer_v1_get_status(), stm32x_write_block(), stm32x_write_block_async(), stm32x_write_block_riscv(), stm8_arch_state(), stm8_debug_entry(), stm8_resume(), stm8_run_algorithm(), stm8_run_and_wait(), stm8_set_core_reg(), stm8_step(), stm8_write_core_reg(), str7x_write_block(), str9x_write_block(), str9xpec_blank_check(), str9xpec_protect_check(), str9xpec_set_instr(), str9xpec_write(), target_profiling_default(), target_rtt_read_control_block(), unset_debug_regs(), write_hw_reg(), write_hw_reg_from_cache(), write_mem(), x86_32_common_read_io(), x86_32_common_virt2phys(), x86_32_common_write_io(), x86_32_get_gdb_reg_list(), xlnx_pcie_xvc_execute_scan(), xlnx_pcie_xvc_execute_tms(), xlnx_pcie_xvc_swd_sequence(), xscale_debug_entry(), xscale_disable_mmu_caches(), xscale_enable_mmu_caches(), xscale_enable_single_step(), xscale_get_ttb(), xscale_getbuf(), xscale_jtag_set_instr(), xscale_read_memory(), xscale_read_trace(), xscale_receive(), xscale_restore_banked(), xscale_resume(), xscale_set_reg(), xscale_set_watchpoint(), xscale_step(), xscale_step_inner(), xscale_unset_watchpoint(), xscale_write_memory(), xtensa_canonical_to_windowbase_offset(), xtensa_dm_core_status_read(), xtensa_dm_device_id_read(), xtensa_dm_perfmon_dump(), xtensa_dm_power_status_read(), xtensa_dm_read(), xtensa_dm_trace_config_read(), xtensa_dm_trace_status_read(), xtensa_dm_trace_stop(), xtensa_fetch_all_regs(), xtensa_fileio_detect_proc(), xtensa_pc_in_winexc(), xtensa_reg_get_value(), xtensa_smpbreak_read(), xtensa_start_algorithm(), xtensa_wait_algorithm(), xtensa_window_state_save(), xtensa_write_dirty_registers(), and xtensa_write_memory().

◆ buf_get_u64()

static uint64_t buf_get_u64 ( const uint8_t *  _buffer,
unsigned  first,
unsigned  num 
)
inlinestatic

Retrieves num bits from _buffer, starting at the first bit, returning the bits in a 64-bit word.

This routine fast-paths reads of little-endian, byte-aligned, 64-bit words.

Parameters
_bufferThe buffer whose bits will be read.
firstThe bit offset in _buffer to start reading (0-63).
numThe number of bits from _buffer to read (1-64).
Returns
Up to 64-bits that were read from _buffer.

Definition at line 128 of file binarybuffer.h.

References buffer.

Referenced by aarch64_restore_one(), arm_semihosting(), armv7m_read_core_reg(), armv7m_write_core_reg(), armv8_aarch64_state(), dbus_scan(), dpmv8_write_reg(), dump_field(), execute_resume(), fespi_write(), jtag_validate_ircapture(), mips32_set_core_reg(), mips32_write_core_reg(), mips64_arch_state(), mips64_set_core_reg(), mips64_write_core_reg(), mips_ejtag_drscan_64(), mips_mips64_debug_entry(), mips_mips64_resume(), mips_mips64_step(), post_result(), reg_cache_get(), register_set(), riscv013_set_register_buf(), riscv_address_translate(), riscv_get_register(), riscv_run_algorithm(), scans_get_u64(), virtex2_set_instr(), write_memory_abstract(), write_memory_bus_v0(), write_memory_progbuf(), and xtensa_wait_algorithm().

◆ 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_set_u32()

static void buf_set_u32 ( uint8_t *  _buffer,
unsigned  first,
unsigned  num,
uint32_t  value 
)
inlinestatic

Sets num bits in _buffer, starting at the first bit, using the bits in value.

This routine fast-paths writes of little-endian, byte-aligned, 32-bit words.

Parameters
_bufferThe buffer whose bits will be set. Do not use uninitialized buffer or clang static analyzer emits a warning.
firstThe bit offset in _buffer to start writing (0-31).
numThe number of bits from value to copy (1-32).
valueUp to 32 bits that will be copied to _buffer.

Definition at line 31 of file binarybuffer.h.

References buffer.

Referenced by aarch64_set_breakpoint(), adapter_resume(), adapter_step(), adi_jtag_dp_scan_cmd(), adi_jtag_dp_scan_u32(), aduc702x_write_block(), aducm360_write_block_async(), aducm360_write_block_sync(), amt_jtagaccel_scan(), angie_queue_pathmove(), arc_jtag_enque_set_transaction(), arc_jtag_enque_write_dr(), arc_jtag_enque_write_ir(), arc_set_register_value(), arc_step(), arm11_nextpc(), arm720t_scan_cp15(), arm720t_soft_reset_halt(), arm7_9_bulk_write_memory(), arm7_9_clear_halt(), arm7_9_debug_entry(), arm7_9_execute_fast_sys_speed(), arm7_9_full_context(), arm7_9_halt(), arm7_9_read_core_reg(), arm7_9_resume(), arm7_9_setup_semihosting(), arm7_9_soft_reset_halt(), arm7_9_step(), arm7_9_write_memory(), arm7tdmi_clock_out_inner(), arm920t_execute_cp15(), arm920t_soft_reset_halt(), arm920t_write_cp15_physical(), arm926ejs_cp15_read(), arm926ejs_cp15_write(), arm926ejs_soft_reset_halt(), arm946e_write_cp15(), arm966e_write_cp15(), arm9tdmi_clock_out(), arm9tdmi_disable_single_step(), arm9tdmi_enable_single_step(), arm_blank_check_memory(), arm_checksum_memory(), arm_dpm_read_reg(), arm_jtag_scann_inner(), arm_jtag_set_instr_inner(), arm_nandread(), arm_nandwrite(), arm_set_cpsr(), armjtagew_speed(), armjtagew_tap_execute(), armv4_5_run_algorithm_inner(), armv4_5_set_reg(), armv4_5_set_reg_mode(), armv7m_blank_check_memory(), armv7m_checksum_memory(), armv7m_read_core_reg(), armv7m_start_algorithm(), armv7m_wait_algorithm(), armv8_set_cpsr(), avr32_jtag_mwa_set_address(), avr32_jtag_mwa_write_data(), avr32_jtag_nexus_set_address(), avr32_jtag_nexus_write_data(), avr32_jtag_set_instr(), avr32_read_core_reg(), bitbang_swd_write_reg(), bluenrgx_write(), buspirate_swd_write_reg(), cc26xx_erase(), cc26xx_mass_erase(), cc26xx_write(), cc3220sf_write(), cfi_intel_write_block(), cfi_spansion_write_block(), cfi_spansion_write_block_mips(), COMMAND_HANDLER(), cortex_a_internal_restore(), cortex_a_set_breakpoint(), cortex_a_step(), cortex_m_dwt_get_reg(), cortex_m_fast_read_all_regs(), cortex_m_restore_one(), cortex_m_set_breakpoint(), cortex_m_step(), dmi_scan(), dpm_read_reg_u64(), dsp563xx_read_core_reg(), dsp563xx_read_memory(), dsp563xx_run_algorithm(), dsp563xx_write_memory(), dtmcontrol_scan(), dtmcontrol_scan_via_bscan(), efinix_set_instr(), efm32x_write_block(), em357_write_block(), embeddedice_send(), embeddedice_set_reg(), embeddedice_setup(), embeddedice_write_reg_inner(), esirisc_jtag_set_instr(), esirisc_read_csr(), esirisc_read_reg(), esirisc_resume_or_step(), esp32_queue_tdi_idle(), esp_algorithm_user_arg_set_uint(), esp_xtensa_algo_regs_init_start(), etb_read_ram(), etb_read_reg_w_check(), etb_scann(), etb_set_instr(), etb_set_reg(), etb_write_reg(), etm_read_reg_w_check(), etm_set_reg(), etm_setup(), etm_write_reg(), feroceon_bulk_write_memory(), feroceon_dummy_clock_out(), feroceon_set_dbgrq(), fill_buffer(), FLASH_BANK_COMMAND_HANDLER(), fm3_chip_erase(), fm3_erase(), fm3_write_block(), fm4_flash_erase(), fm4_flash_write(), ftdi_execute_pathmove(), ftdi_swd_queue_cmd(), gatemate_set_instr(), gdb_read_smp_packet(), gowin_set_instr(), gw16012_scan(), intel_set_instr(), ipdbg_create_hub(), ipdbg_jtag_transfer_bytes(), ipdbg_shift_data(), ipdbg_shift_instr(), jtag_examine_chain_execute(), jtag_tap_init(), jtag_vpi_path_move(), jtagdp_overrun_check(), jtagspi_set_user_ir(), kinetis_disable_wdog_algo(), kinetis_ke_write_words(), kinetis_write_block(), lakemont_poll(), lakemont_resume(), lakemont_step(), lattice_set_instr(), lpc2000_iap_call(), lpc2000_write(), lpc2900_write(), lpcspifi_erase(), lpcspifi_set_hw_mode(), lpcspifi_write(), ls1_sap_set_addr_high(), ls1_sap_set_instr(), max32xxx_write_block(), mdr_read(), mdr_write_block(), mips32_blank_check_memory(), mips32_checksum_memory(), mips32_read_core_reg(), mips32_run_algorithm(), mips32_set_core_reg(), mips_ejtag_add_scan_96(), mips_ejtag_drscan_32_queued(), mips_ejtag_fastdata_scan(), mips_ejtag_set_instr(), mips_m4k_internal_restore(), mips_m4k_step(), mrvlqspi_flash_write(), msp432_erase(), msp432_exec_cmd(), msp432_init(), msp432_init_params(), msp432_mass_erase(), msp432_write(), niietcm4_write_block(), nrf5_ll_flash_write(), numicro_writeblock(), or1k_read_core_reg(), or1k_resume_or_step(), or1k_tap_vjtag_init(), osbdm_add_pathmove(), osbdm_add_scan(), osbdm_add_statemove(), osbdm_swap(), pic32mx_write_block(), post_result(), psoc4_sysreq(), qspi_read_write_block(), qspi_verify(), read_hw_reg(), read_memory_bus_v0(), read_memory_bus_v1(), read_memory_bus_word(), riscv_add_breakpoint(), rp2040_call_rom_func(), rsl10_ll_flash_erase(), rsl10_ll_flash_write(), rsl10_mass_erase(), same5_modify_user_row(), same5_protect(), set_debug_regs(), sh_qspi_read(), sh_qspi_write(), sim3x_write_block(), sromalgo_prepare(), stellaris_write_block(), stlink_usb_set_cbw_transfer_datalength(), stlink_usb_xfer_v1_create_cmd(), stm32l4_write_block(), stm32lx_write_half_pages(), stm32x_write_block(), stm32x_write_block_async(), stm32x_write_block_riscv(), stm8_blank_check_memory(), stm8_read_core_reg(), stm8_resume(), stm8_run_algorithm(), stm8_set_core_reg(), stm8_step(), stmqspi_blank_check(), str7x_write_block(), str9x_write_block(), str9xpec_blank_check(), str9xpec_erase_area(), str9xpec_protect(), str9xpec_set_instr(), str9xpec_write_options(), ulink_queue_pathmove(), unset_debug_regs(), vdebug_jtag_path_move(), virtex2_send_32(), write_hw_reg(), xlnx_pcie_xvc_execute_scan(), xmc1xxx_erase(), xmc1xxx_erase_check(), xmc1xxx_write(), xscale_assert_reset(), xscale_deassert_reset(), xscale_debug_entry(), xscale_full_context(), xscale_invalidate_ic_line(), xscale_jtag_set_instr(), xscale_load_ic(), xscale_read_dcsr(), xscale_resume(), xscale_send(), xscale_send_u32(), xscale_set_reg(), xscale_set_reg_u32(), xscale_step(), xscale_write_dcsr(), xscale_write_dcsr_sw(), xtensa_dm_add_set_ir(), xtensa_reg_set_value(), and xtensa_wait_algorithm().

◆ buf_set_u64()

static void buf_set_u64 ( uint8_t *  _buffer,
unsigned  first,
unsigned  num,
uint64_t  value 
)
inlinestatic

Sets num bits in _buffer, starting at the first bit, using the bits in value.

This routine fast-paths writes of little-endian, byte-aligned, 64-bit words.

Parameters
_bufferThe buffer whose bits will be set. Do not use uninitialized buffer or clang static analyzer emits a warning.
firstThe bit offset in _buffer to start writing (0-63).
numThe number of bits from value to copy (1-64).
valueUp to 64 bits that will be copied to _buffer.

Definition at line 61 of file binarybuffer.h.

References buffer.

Referenced by aarch64_restore_one(), add_dbus_scan(), COMMAND_HANDLER(), dbus_scan(), dpmv8_read_reg(), esp_algorithm_user_arg_set_uint(), fespi_write(), interface_jtag_add_ir_scan(), ls1_sap_memory_cmd(), mips32_read_core_reg(), mips32_set_core_reg(), mips64_ejtag_fastdata_scan(), mips64_read_core_reg(), mips64_set_core_reg(), mips_ejtag_drscan_64(), mips_mips64_resume(), mips_mips64_step(), post_result(), read_memory_abstract(), read_memory_progbuf(), read_memory_progbuf_inner(), read_memory_progbuf_one(), reg_cache_set(), register_get(), register_read(), register_write_direct(), riscv013_fill_dmi_nop_u64(), riscv013_fill_dmi_read_u64(), riscv013_fill_dmi_write_u64(), riscv013_get_register_buf(), riscv_checksum_memory(), riscv_run_algorithm(), riscv_set_register(), sample_memory_bus_v1(), submit_pir(), and virtex2_set_instr().

◆ 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().

◆ fast_target_buffer_get_u32()

static uint32_t fast_target_buffer_get_u32 ( const void *  p,
bool  le 
)
inlinestatic

Definition at line 197 of file binarybuffer.h.

References be_to_h_u32(), and le_to_h_u32().

Referenced by arm7_9_dcc_completion(), and embeddedice_write_dcc().

◆ flip_u32()

uint32_t flip_u32 ( uint32_t  value,
unsigned  width 
)

Inverts the ordering of bits inside a 32-bit word (e.g.

31..0 -> 0..31). This routine can be used to flip smaller data types by using smaller values for width.

Parameters
valueThe word to flip.
widthThe number of bits in value (2-32).
Returns
A 32-bit word with value in reversed bit-order.

◆ 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_to_buf()

int str_to_buf ( const char *  str,
unsigned  len,
void *  bin_buf,
unsigned  buf_size,
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().