translator
interface is implemented by
objects which perform address translations or map
memory transactions to devices or address spaces.
The translate method takes a physical address
addr and returns a value of the type
translation_t
which describes the translation for
an address range which must include addr. Please
refer to the translation_t
documentation for a complete
description of the return value and more information regarding
the implementation of translator objects.
A translator can translate read transactions, write transactions
and instruction fetches differently. The access parameter
is set to all requested access types in the form of a bitmask.
The translator should return null in the target field
if a translation valid for all requested accesses cannot be performed;
when this happens, the requestor is expected to repeat the interface call
with just a single bit set in the access mask,
e.g. Sim_Access_Read
.
The default_target parameter is a default target, which can be NULL, of the translator mapping (i.e., the target field of the respective memory-space's map entry specifying mapping).
SIM_INTERFACE(translator) { translation_t (*translate)(conf_object_t *NOTNULL obj, physical_address_t addr, access_t access, const map_target_t *default_target); }; #define TRANSLATOR_INTERFACE "translator"