hololink::emulation::RegisterMemory

View as Markdown
#include <hololink/emulation/address_memory.hpp>

Inherits from: hololink::emulation::AddressMemory (public)


Constructors

RegisterMemory

hololink::emulation::RegisterMemory::RegisterMemory() = default

Methods

write

int hololink::emulation::RegisterMemory::write(
AddressValuePair &address_value
) override

Write a value to a register.

Returns: 0 on success, 1 on failure

Parameters

address_value
AddressValuePair &

Pair of address and value to write

read

int hololink::emulation::RegisterMemory::read(
AddressValuePair &address_value
) override

Read a value from a register.

Returns: 0 on success, 1 on failure

Parameters

address_value
AddressValuePair &

Pair of address and value to read

write_many

int hololink::emulation::RegisterMemory::write_many(
AddressValuePair *address_values,
int num_addresses
) override

Convenience function to write multiple values to registers under a single lock.

Returns: 0 on success, 1 on failure

Parameters

address_values
AddressValuePair *

Pointer to array of pairs of register addresses and values to write

num_addresses
int

Number of address-value pairs

read_many

int hololink::emulation::RegisterMemory::read_many(
AddressValuePair *address_values,
int num_addresses
) override

Convenience function to read multiple values from registers under a single lock.

Returns: 0 on success, 1 on failure

Parameters

address_values
AddressValuePair *

Pointer to array of pairs of register addresses and values to read (caller must allocate at least num_addresses elements)

num_addresses
int

Number of addresses to read

write_range

int hololink::emulation::RegisterMemory::write_range(
uint32_t start_address,
uint32_t *values,
int num_addresses,
int stride = 2
) override

Write a range of values to registers. Allow optimizations if it is known that the addresses are contiguous.

Returns: 0 on success, 1 on failure

Parameters

start_address
uint32_t

The first register address in the range.

values
uint32_t *

Pointer to the array of values to write (caller must allocate at least num_addresses elements).

num_addresses
int

The number of addresses to write.

stride
intDefaults to 2

The address increment between consecutive registers in the range (defaults to 2).

read_range

int hololink::emulation::RegisterMemory::read_range(
uint32_t start_address,
uint32_t *values,
int num_addresses,
int stride = 2
) override

Read a range of values from registers. Allow optimizations if it is known that the addresses are contiguous.

Returns: 0 on success, 1 on failure

Parameters

start_address
uint32_t

The first register address in the range.

values
uint32_t *

Pointer to the array that receives the values read (caller must allocate at least num_addresses elements).

num_addresses
int

The number of addresses to read.

stride
intDefaults to 2

The address increment between consecutive registers in the range (defaults to 2).

set_ctxt

void hololink::emulation::RegisterMemory::set_ctxt(
HSBEmulatorCtxt *ctxt
)

Member variables

NameTypeDescription
ctxt_struct HSBEmulatorCtxt *