x86_address_query interface is used to query information
about an address for the x86 architecture and should be used from a
cpu_memory_address_cb_t callback.
SIM_INTERFACE(x86_address_query) {
x86_seg_t (*segment)(
conf_object_t *cpu, address_handle_t *handle);
page_crossing_info_t (*get_page_crossing_info)(
conf_object_t *cpu, address_handle_t *handle);
};
#define X86_ADDRESS_QUERY_INTERFACE "x86_address_query"
The segment is used to get the segment register used in the address calculation. The handle is the address handle passed to cpu_memory_address_cb_t.
If the access crosses a page boundary the access will be split into two
calls. The get_page_crossing_info can be used to distinguish the
different cases from each other. The value returned is of type
page_crossing_info_t and is one of:
Sim_Page_Crossing_None (no crossing access),
Sim_Page_Crossing_First (first part of a crossing access),
Sim_Page_Crossing_Second (second part of a crossing access).
address_handle_t.