You are on page 1of 2766

Simics Reference

Manual
PAL

Simics Version

3.0

Revision
Date

1406
2008-02-19

VIRTUTECH CONFIDENTIAL

19982006 Virtutech AB
Drottningholmsv. 14, SE-112 42 STOCKHOLM, Sweden
Trademarks
Virtutech, the Virtutech logo, Simics, and Hindsight are trademarks or registered trademarks
of Virtutech AB or Virtutech, Inc. in the United States and/or other countries.
The contents herein are Documentation which are a subset of Licensed Software pursuant
to the terms of the Virtutech Simics Software License Agreement (the Agreement), and
are being distributed under the Agreement, and use of this Documentation is subject to the
terms the Agreement.
This Publication is provided as is without warranty of any kind, either express or implied,
including, but not limited to, the implied warranties of merchantability, fitness for a particular
purpose, or non-infringement.
This Publication could include technical inaccuracies or typographical errors. Changes are
periodically added to the information herein; these changes will be incorporated in new editions of the Publication. Virtutech may make improvements and/or changes in the product(s)
and/or the program(s) described in this Publication at any time.
The proprietary information contained within this Publication must not be disclosed to others
without the written consent of Virtutech.

VIRTUTECH CONFIDENTIAL

Contents
1

About Simics Documentation


1.1
Conventions . . . . . . . . . . . . . . . . . . . . . . . .
1.2
Simics Guides and Manuals . . . . . . . . . . . . . . .
Simics Installation Guide for Unix and for Windows
Simics User Guide for Unix and for Windows . . . .
Simics Eclipse User Guide . . . . . . . . . . . . . . . .
Simics Target Guides . . . . . . . . . . . . . . . . . . .
Simics Programming Guide . . . . . . . . . . . . . . .
DML Tutorial . . . . . . . . . . . . . . . . . . . . . . .
DML Reference Manual . . . . . . . . . . . . . . . . .
Simics Reference Manual . . . . . . . . . . . . . . . .
Simics Micro-Architectural Interface . . . . . . . . . .
RELEASENOTES and LIMITATIONS files . . . . . .
Simics Technical FAQ . . . . . . . . . . . . . . . . . .
Simics Support Forum . . . . . . . . . . . . . . . . . .
Other Interesting Documents . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

58
58
58
58
59
59
59
59
59
59
59
59
60
60
60
60

Invoking Simics (Startup Flags)


2.1
Startup Flags . . . . . . . . . . .
-E, -expire <time> (advanced)
-L . . . . . . . . . . . . . . . . .
-batch-mode (advanced) . . . .
-c <file> . . . . . . . . . . . . .
-central <address[:port]> . . .
-central :<file> . . . . . . . . .
-central-time-out <time> . . .
-dstc (advanced) . . . . . . . .
-e <command> . . . . . . . . .
-echo . . . . . . . . . . . . . . .
-fast . . . . . . . . . . . . . . . .
-h . . . . . . . . . . . . . . . . .
-istc (advanced) . . . . . . . . .
-license . . . . . . . . . . . . . .
-license-file <file> (advanced)
-log-file <file> . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

61
62
62
62
62
62
62
63
63
63
63
63
63
63
63
63
63
64

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

VIRTUTECH CONFIDENTIAL

CONTENTS

-ma . . . . . . . . . . . . . . . . . . . . .
-n . . . . . . . . . . . . . . . . . . . . . .
-no-copyright (advanced) . . . . . . . .
-no-dstc (advanced) . . . . . . . . . . .
-no-istc (advanced) . . . . . . . . . . . .
-no-log . . . . . . . . . . . . . . . . . . .
-no-stc (advanced) . . . . . . . . . . . .
-no-use-cygpath (advanced) . . . . . . .
-no-win . . . . . . . . . . . . . . . . . .
-obscure . . . . . . . . . . . . . . . . . .
-p <file> . . . . . . . . . . . . . . . . .
-product <productname> (advanced) .
-q or -quiet . . . . . . . . . . . . . . . . .
-readme . . . . . . . . . . . . . . . . . .
-stall . . . . . . . . . . . . . . . . . . . .
-stc (advanced) . . . . . . . . . . . . . .
-use-cygpath (advanced) . . . . . . . . .
-v, -version, --version, -v-short . . . . .
-verbose . . . . . . . . . . . . . . . . . .
-werror (advanced) . . . . . . . . . . . .
-workspace <workspace> . . . . . . .
-x <file> . . . . . . . . . . . . . . . . . .
3

API
3.1
3.2

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

64
64
64
64
64
64
64
64
65
65
65
65
65
65
65
65
66
66
66
66
66
66

Frontend Exceptions . . . . . . . . . . . . . . . . . . . . .
Simics API Data Types . . . . . . . . . . . . . . . . . . .
3.2.1 Generic Data Types . . . . . . . . . . . . . . . . .
addr_prof_iter_t . . . . . . . . . . . . . . . . . .
attr_value_t, attr_kind_t, attr_list_t, attr_data_t
class_data_t, class_kind_t . . . . . . . . . . . . .
conf_object_t . . . . . . . . . . . . . . . . . . . .
data_or_instr_t . . . . . . . . . . . . . . . . . . .
dbuffer_t . . . . . . . . . . . . . . . . . . . . . .
endianness_t . . . . . . . . . . . . . . . . . . . .
event_handler_t . . . . . . . . . . . . . . . . . .
exception_type_t . . . . . . . . . . . . . . . . . .
firewire_async_transfer_t . . . . . . . . . . . . .
firewire_iso_transfer_t . . . . . . . . . . . . . . .
generic_transaction_t . . . . . . . . . . . . . . .
hap_flags_t . . . . . . . . . . . . . . . . . . . . .
hap_type_t . . . . . . . . . . . . . . . . . . . . .
instr_type_t . . . . . . . . . . . . . . . . . . . . .
instruction_error_t . . . . . . . . . . . . . . . . .
instruction_phase_t . . . . . . . . . . . . . . . .
instruction_status_t . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

67
67
68
69
69
70
72
73
74
75
76
77
78
79
81
82
86
87
88
89
90
91

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

VIRTUTECH CONFIDENTIAL

3.2.2

3.2.3

CONTENTS

int8, int16, int32, int64, uint8, uint16, uint32, uint64, intptr_t, uintptr_
t, integer_t, uinteger_t . . . . . . . . . . . . . . . . . . . . . . 92
lang_void . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
log_object_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
log_type_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
logical_address_t, physical_address_t, generic_address_t, linear_address_t 96
map_info_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
map_list_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
mem_op_type_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
pci_memory_transaction_t . . . . . . . . . . . . . . . . . . . . . . . . 100
processor_mode_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
processor_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
pseudo_exceptions_t . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
read_or_write_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
register_type_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
set_error_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
simtime_t, cycles_t, pc_step_t, nano_secs_t . . . . . . . . . . . . . . . 109
socket_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Architecture Specific Data Types . . . . . . . . . . . . . . . . . . . . . 111
alpha_cpu_mode_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
alpha_memory_transaction_t . . . . . . . . . . . . . . . . . . . . . . . 112
arm_memory_transaction_t . . . . . . . . . . . . . . . . . . . . . . . 113
ia64_fp_register_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
ia64_interruption_type_t . . . . . . . . . . . . . . . . . . . . . . . . . 115
ia64_interruption_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
ia64_iva_offset_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
ia64_memory_transaction_t . . . . . . . . . . . . . . . . . . . . . . . 119
mips_memory_transaction_t . . . . . . . . . . . . . . . . . . . . . . . 120
palcode_memop_flags_t . . . . . . . . . . . . . . . . . . . . . . . . . 121
ppc_mem_instr_origin_t . . . . . . . . . . . . . . . . . . . . . . . . . 122
ppc_memory_transaction_t . . . . . . . . . . . . . . . . . . . . . . . . 124
register_id_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
v9_exception_type_t . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
v9_memory_transaction_t . . . . . . . . . . . . . . . . . . . . . . . . 131
x86_memory_transaction_t . . . . . . . . . . . . . . . . . . . . . . . . 132
x86_sync_instruction_type_t . . . . . . . . . . . . . . . . . . . . . . . 134
Internal Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

VIRTUTECH CONFIDENTIAL

3.3

CONTENTS

addr_type_t, assoc_table_t, attr_initiator_t, attr_set_t, binary_heap_


compare_func_t, binary_heap_t, byte_string_t, struct dmacache,
event_queue_type_t, for_all_assoc_table_func_t, ht_entry_
t, ht_for_each_entry_func_t, ht_iter_t, ht_sorted_entries_func_
t, ht_table_t, icode_mode_group_t, icode_mode_t, icode_
page_t, image_spage_t, instruction_trace_callback_t, interface_
list_t, intervals_func_t, interval_set_t, interval_set_iter_t, io_
trace_t, mmu_error_info_t, os_time_t, struct os_tm, page_
info_t, prof_data_t, prof_data_address_t, prof_data_counter_
t, prof_data_func_t, prof_data_iter_t, radix_bottom_t, radix_
middle_t, radix_top_t, rand_state_t, range_node_t, set_error_
t, sim_ic_type_t, simics_internal_counters_t, simics_symbol_
lookup_t, source_python_func_t, source_python_module_
func_t, st_do_all_func_t, st_for_all_func_t, enum st_lookup_
approx_result, stall_id_num_t, stall_id_t, state_save_kind_
t, strbuf_t, string_tree_t, struct simcontext, struct symtable,
table_t, table_func_t, turbo_exit_case_t, struct ucontext, vtmem_
inform_opcode_t, . . . . . . . . . . . . . . . . . . . . . . . . 135
3.2.4 Simics Types in Python . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Simics API Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
3.3.1 Complete List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
3.3.2 Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Attribute Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
SIM_alloc_attr_dict() . . . . . . . . . . . . . . . . . . . . . . 148
SIM_alloc_attr_list() . . . . . . . . . . . . . . . . . . . . . . 149
SIM_ascanf() . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
SIM_make_attr_boolean() . . . . . . . . . . . . . . . . . . . 151
SIM_make_attr_data() . . . . . . . . . . . . . . . . . . . . . 152
SIM_make_attr_floating() . . . . . . . . . . . . . . . . . . . 153
SIM_make_attr_integer() . . . . . . . . . . . . . . . . . . . . 154
SIM_make_attr_invalid() . . . . . . . . . . . . . . . . . . . . 155
SIM_make_attr_list() . . . . . . . . . . . . . . . . . . . . . . 156
SIM_make_attr_nil() . . . . . . . . . . . . . . . . . . . . . . 157
SIM_make_attr_object() . . . . . . . . . . . . . . . . . . . . 158
SIM_make_attr_string() . . . . . . . . . . . . . . . . . . . . 159
Breakpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
SIM_break_cycle() . . . . . . . . . . . . . . . . . . . . . . . 160
SIM_break_step() . . . . . . . . . . . . . . . . . . . . . . . . 161
SIM_breakpoint() . . . . . . . . . . . . . . . . . . . . . . . . 162
SIM_breakpoint_remove() . . . . . . . . . . . . . . . . . . . 164
SIM_delete_breakpoint() . . . . . . . . . . . . . . . . . . . . 165
Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
SIM_add_configuration() . . . . . . . . . . . . . . . . . . . 166
SIM_alloc_conf_object() . . . . . . . . . . . . . . . . . . . . 167
SIM_attribute_error() . . . . . . . . . . . . . . . . . . . . . . 168

VIRTUTECH CONFIDENTIAL

CONTENTS

SIM_change_attribute_attribute() . .
SIM_class_has_attribute() . . . . . .
SIM_create_object() . . . . . . . . . .
SIM_delete_object() . . . . . . . . . .
SIM_ensure_partial_attr_order() . .
SIM_free_attribute() . . . . . . . . .
SIM_get_all_classes() . . . . . . . . .
SIM_get_all_objects() . . . . . . . . .
SIM_get_attribute() . . . . . . . . . .
SIM_get_attribute_attributes() . . . .
SIM_get_class() . . . . . . . . . . . .
SIM_get_class_name() . . . . . . . .
SIM_get_configuration_file_prefix()
SIM_get_interface() . . . . . . . . . .
SIM_get_object() . . . . . . . . . . .
SIM_initial_configuration_ok() . . .
SIM_new_object() . . . . . . . . . . .
SIM_object_constructor() . . . . . . .
SIM_object_is_processor() . . . . . .
SIM_read_configuration() . . . . . .
SIM_register_attribute() . . . . . . .
SIM_register_class() . . . . . . . . . .
SIM_register_class_alias() . . . . . .
SIM_register_interface() . . . . . . .
SIM_register_typed_attribute() . . .
SIM_set_attribute() . . . . . . . . . .
SIM_set_configuration() . . . . . . .
SIM_write_configuration_to_file() .
Documentation . . . . . . . . . . . . . . . . . .
SIM_register_copyright() . . . . . . .
SIM_version() . . . . . . . . . . . . .
Errors and Exceptions . . . . . . . . . . . . . .
SIM_clear_exception() . . . . . . . .
SIM_command_has_problem() . . .
SIM_frontend_exception() . . . . . .
SIM_get_pending_exception() . . . .
SIM_last_error() . . . . . . . . . . . .
Haps . . . . . . . . . . . . . . . . . . . . . . . .
SIM_c_hap_occurred() . . . . . . . .
SIM_get_all_hap_types() . . . . . . .
SIM_hap_add_callback() . . . . . . .
SIM_hap_add_type() . . . . . . . . .
SIM_hap_callback_exists() . . . . . .
SIM_hap_delete_callback() . . . . .
SIM_hap_get_name() . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

169
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
193
194
195
198
199
201
202
202
203
204
204
205
206
207
208
209
209
210
211
213
215
216
217

VIRTUTECH CONFIDENTIAL

CONTENTS

SIM_hap_get_number() . . . . . . . . . . .
SIM_hap_is_active() . . . . . . . . . . . . .
SIM_hap_occurred() . . . . . . . . . . . . .
SIM_hap_remove_type() . . . . . . . . . . .
Logging . . . . . . . . . . . . . . . . . . . . . . . . . . .
SIM_get_quiet() . . . . . . . . . . . . . . . .
SIM_get_verbose() . . . . . . . . . . . . . .
SIM_log_constructor() . . . . . . . . . . . .
SIM_log_info() . . . . . . . . . . . . . . . . .
SIM_log_message() . . . . . . . . . . . . . .
SIM_log_register_groups() . . . . . . . . . .
SIM_set_quiet() . . . . . . . . . . . . . . . .
SIM_set_verbose() . . . . . . . . . . . . . . .
Memory . . . . . . . . . . . . . . . . . . . . . . . . . .
SIM_for_all_memory_pages() . . . . . . . .
SIM_load_binary() . . . . . . . . . . . . . .
SIM_load_file() . . . . . . . . . . . . . . . .
SIM_logical_to_physical() . . . . . . . . . .
SIM_read_byte() . . . . . . . . . . . . . . . .
SIM_read_phys_memory() . . . . . . . . . .
SIM_read_phys_memory_tags() . . . . . .
SIM_write_phys_memory() . . . . . . . . .
Memory Transactions . . . . . . . . . . . . . . . . . . .
SIM_alpha_mem_trans_from_generic() . .
SIM_c_get_mem_op_value_buf() . . . . . .
SIM_c_set_mem_op_value_buf() . . . . . .
SIM_get_mem_op_type() . . . . . . . . . .
SIM_get_mem_op_type_name() . . . . . . .
SIM_get_unique_memory_transaction_id()
SIM_mem_op_is_control() . . . . . . . . . .
SIM_mem_op_is_data() . . . . . . . . . . .
SIM_mem_op_is_from_cache() . . . . . . .
SIM_mem_op_is_from_cpu() . . . . . . . .
SIM_mem_op_is_from_cpu_arch() . . . . .
SIM_mem_op_is_from_device() . . . . . . .
SIM_mem_op_is_prefetch() . . . . . . . . .
SIM_mem_op_is_read() . . . . . . . . . . .
SIM_set_mem_op_type() . . . . . . . . . . .
Modules . . . . . . . . . . . . . . . . . . . . . . . . . .
SIM_get_all_failed_modules() . . . . . . . .
SIM_get_all_modules() . . . . . . . . . . . .
SIM_load_module() . . . . . . . . . . . . . .
SIM_module_list_refresh() . . . . . . . . . .
Output . . . . . . . . . . . . . . . . . . . . . . . . . . .
SIM_add_output_handler() . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

218
219
220
221
222
222
223
224
225
226
227
228
229
230
230
231
232
233
234
235
236
237
238
238
240
242
243
244
245
246
247
248
249
250
251
252
253
254
255
255
256
257
258
259
259

VIRTUTECH CONFIDENTIAL

CONTENTS

SIM_remove_output_handler() .
SIM_write() . . . . . . . . . . . .
Path . . . . . . . . . . . . . . . . . . . . . . .
SIM_add_directory() . . . . . . .
SIM_clear_directories() . . . . . .
SIM_get_directories() . . . . . . .
SIM_lookup_file() . . . . . . . . .
SIM_native_path() . . . . . . . .
Processor . . . . . . . . . . . . . . . . . . . .
SIM_current_processor() . . . . .
SIM_disassemble() . . . . . . . .
SIM_enable_processor() . . . . .
SIM_get_all_processors() . . . . .
SIM_get_all_registers() . . . . . .
SIM_get_exception_name() . . .
SIM_get_processor() . . . . . . .
SIM_get_processor_number() . .
SIM_get_program_counter() . . .
SIM_get_register_number() . . .
SIM_number_processors() . . . .
SIM_processor_enabled() . . . .
SIM_processor_privilege_level()
SIM_read_register() . . . . . . . .
SIM_register_arch_decoder() . .
SIM_register_decoder() . . . . . .
SIM_reset_processor() . . . . . .
SIM_write_register() . . . . . . .
Profiling . . . . . . . . . . . . . . . . . . . .
SIM_iter_next() . . . . . . . . . .
Simulation Control . . . . . . . . . . . . . .
SIM_break_message() . . . . . .
SIM_break_simulation() . . . . .
SIM_continue() . . . . . . . . . .
SIM_postponing_continue() . . .
SIM_simics_is_running() . . . . .
Simulation Independent Services . . . . . .
SIM_cancel_realtime_event() . .
SIM_notify_on_socket() . . . . .
SIM_realtime_event() . . . . . . .
SIM_thread_safe_callback() . . .
Simulator Translation Caches . . . . . . . .
SIM_STC_flush_cache() . . . . .
SIM_flush_all_caches() . . . . . .
Stalling . . . . . . . . . . . . . . . . . . . . .
SIM_release_stall() . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

260
261
263
263
264
265
266
267
268
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
286
289
290
291
291
292
292
293
294
295
296
297
297
298
300
301
302
302
304
305
305

VIRTUTECH CONFIDENTIAL

3.3.3

CONTENTS

SIM_stall_count() . . . . . . . . . . . . . .
SIM_stall_cycle() . . . . . . . . . . . . . .
SIM_stalled_until() . . . . . . . . . . . . .
Step and Time Events . . . . . . . . . . . . . . . . . .
SIM_cycle_count() . . . . . . . . . . . . .
SIM_next_queue() . . . . . . . . . . . . . .
SIM_stacked_post() . . . . . . . . . . . . .
SIM_step_clean() . . . . . . . . . . . . . .
SIM_step_count() . . . . . . . . . . . . . .
SIM_step_next_occurrence() . . . . . . . .
SIM_step_post() . . . . . . . . . . . . . . .
SIM_time_clean() . . . . . . . . . . . . . .
SIM_time_next_occurrence() . . . . . . . .
SIM_time_post() . . . . . . . . . . . . . . .
User Interface . . . . . . . . . . . . . . . . . . . . . .
SIM_get_batch_mode() . . . . . . . . . . .
SIM_is_interactive() . . . . . . . . . . . . .
SIM_post_command() . . . . . . . . . . .
SIM_quit() . . . . . . . . . . . . . . . . . .
SIM_run_command_file() . . . . . . . . .
SIM_set_prompt() . . . . . . . . . . . . . .
SIM_source_python() . . . . . . . . . . . .
PCI . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Function List . . . . . . . . . . . . . . . . . . . . . . .
PCIE_send_message() . . . . . . . . . . .
PCI_add_config_register() . . . . . . . . .
PCI_bridge_default_access_not_taken() .
PCI_bridge_default_interrupt_lowered()
PCI_bridge_default_interrupt_raised() . .
PCI_bridge_default_system_error() . . . .
PCI_bridge_init() . . . . . . . . . . . . . .
PCI_bridge_map_setup() . . . . . . . . . .
PCI_config_register_name() . . . . . . . .
PCI_config_register_size() . . . . . . . . .
PCI_configuration_access() . . . . . . . .
PCI_data_from_memory() . . . . . . . . .
PCI_default_configuration_read_access()
PCI_default_configuration_write_access()
PCI_default_device_reset() . . . . . . . .
PCI_device_init() . . . . . . . . . . . . . .
PCI_get_bus_address() . . . . . . . . . . .
PCI_get_config_register_mask() . . . . . .
PCI_handle_mapping32() . . . . . . . . .
PCI_raise_interrupt() . . . . . . . . . . . .
PCI_read_sized_config_register() . . . . .

10

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

306
307
308
309
309
310
311
312
313
314
315
316
317
318
320
320
321
322
323
324
325
326
327
328
328
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349

VIRTUTECH CONFIDENTIAL

3.4

CONTENTS

PCI_register_bridge_attributes() . . . .
PCI_register_device_attributes() . . . .
PCI_set_config_register_mask() . . . . .
PCI_set_map_base() . . . . . . . . . . .
PCI_set_may_stall() . . . . . . . . . . . .
PCI_system_error() . . . . . . . . . . . .
PCI_value_from_memory() . . . . . . .
PCI_write_sized_config_register() . . .
3.3.4 Micro-Architecture Interface . . . . . . . . . . . . .
Function List . . . . . . . . . . . . . . . . . . . . . .
SIM_instruction_begin() . . . . . . . . .
3.3.5 DBuffer Interface . . . . . . . . . . . . . . . . . . .
Function List . . . . . . . . . . . . . . . . . . . . . .
dbuffer_append() . . . . . . . . . . . . .
dbuffer_append_external_data() . . . .
dbuffer_append_value() . . . . . . . . .
dbuffer_clone() . . . . . . . . . . . . . .
dbuffer_copy_append() . . . . . . . . .
dbuffer_free() . . . . . . . . . . . . . . .
dbuffer_len() . . . . . . . . . . . . . . . .
dbuffer_read() . . . . . . . . . . . . . . .
dbuffer_remove() . . . . . . . . . . . . .
dbuffer_replace() . . . . . . . . . . . . .
dbuffer_split() . . . . . . . . . . . . . . .
dbuffer_update() . . . . . . . . . . . . .
new_dbuffer() . . . . . . . . . . . . . . .
3.3.6 VTMEM . . . . . . . . . . . . . . . . . . . . . . . .
VTmem Overview . . . . . . . . . . . . . . . . . . .
Creating and Deleting Objects . . . . . . . . . . . .
Exported Interface . . . . . . . . . . . . . . . . . . .
VTMEM Macros . . . . . . . . . . . . . .
3.3.7 Python-specific Functions . . . . . . . . . . . . . .
Function List . . . . . . . . . . . . . . . . . . . . . .
cli.arg() . . . . . . . . . . . . . . . . . . .
cli.eval_cli_line() . . . . . . . . . . . . .
cli.get_available_object_name() . . . . .
cli.new_command() . . . . . . . . . . . .
cli.number_str() . . . . . . . . . . . . . .
cli.object_expander() . . . . . . . . . . .
cli.quiet_run_command() . . . . . . . .
cli.run_command() . . . . . . . . . . . .
sim_commands.new_info_command() .
sim_commands.new_status_command()
Backwards Compatibility . . . . . . . . . . . . . . . . . . .
3.4.1 SIM_BC_NO_STDOUT_REDEFINE . . . . . . . .

11

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

350
351
352
353
355
356
357
358
359
360
360
365
366
366
367
368
369
370
371
372
373
374
375
376
377
378
379
379
379
379
380
385
386
386
387
388
389
390
391
392
393
394
395
396
396

VIRTUTECH CONFIDENTIAL
3.4.2

3.4.3

CONTENTS

Obsolete API Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398


event_poster_interface_describe_event_t, event_poster_interface_get_
event_info_t, event_poster_interface_set_event_info_t . . . 398
Obsolete API Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
SIM_add_mode_counter() . . . . . . . . . . . . . . . . . . . . . . . . 399
SIM_all_classes() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
SIM_all_objects() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
SIM_breakpoint_action() . . . . . . . . . . . . . . . . . . . . . . . . . 402
SIM_c_frontend_exception() . . . . . . . . . . . . . . . . . . . . . . . 403
SIM_check_exception() . . . . . . . . . . . . . . . . . . . . . . . . . . 404
SIM_clear_atomic_reservation_bit() . . . . . . . . . . . . . . . . . . . 405
SIM_cpu_by_mid() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
SIM_cpu_enabled() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
SIM_cpu_issue_cycles() . . . . . . . . . . . . . . . . . . . . . . . . . . 408
SIM_cpu_privilege_level() . . . . . . . . . . . . . . . . . . . . . . . . 409
SIM_device_log() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
SIM_disassemble_physical() . . . . . . . . . . . . . . . . . . . . . . . 411
SIM_dump_caches() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
SIM_exception_has_occurred() . . . . . . . . . . . . . . . . . . . . . . 413
SIM_for_all_hap_types() . . . . . . . . . . . . . . . . . . . . . . . . . 414
SIM_for_all_modules() . . . . . . . . . . . . . . . . . . . . . . . . . . 415
SIM_for_all_modules_failed() . . . . . . . . . . . . . . . . . . . . . . 416
SIM_for_all_processors() . . . . . . . . . . . . . . . . . . . . . . . . . 417
SIM_get_No_Exception() . . . . . . . . . . . . . . . . . . . . . . . . . 418
SIM_get_base_pointer() . . . . . . . . . . . . . . . . . . . . . . . . . . 419
SIM_get_control_register_name() . . . . . . . . . . . . . . . . . . . . 420
SIM_get_control_register_number() . . . . . . . . . . . . . . . . . . . 421
SIM_get_current_proc_no() . . . . . . . . . . . . . . . . . . . . . . . . 422
SIM_get_file_size() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
SIM_get_history_match() . . . . . . . . . . . . . . . . . . . . . . . . . 424
SIM_get_mmu_data() . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
SIM_get_mode_counter() . . . . . . . . . . . . . . . . . . . . . . . . . 426
SIM_get_proc_no() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
SIM_get_simics_home() . . . . . . . . . . . . . . . . . . . . . . . . . . 428
SIM_get_stack_pointer() . . . . . . . . . . . . . . . . . . . . . . . . . 429
SIM_get_trap_time() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
SIM_hap_install_callback() . . . . . . . . . . . . . . . . . . . . . . . . 431
SIM_hap_install_callback_idx() . . . . . . . . . . . . . . . . . . . . . 432
SIM_hap_install_callback_range() . . . . . . . . . . . . . . . . . . . . 433
SIM_hap_new_type() . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
SIM_hap_register_callback() . . . . . . . . . . . . . . . . . . . . . . . 435
SIM_hap_register_callback_idx() . . . . . . . . . . . . . . . . . . . . . 436
SIM_hap_register_callback_range() . . . . . . . . . . . . . . . . . . . 437
SIM_hap_remove_callback() . . . . . . . . . . . . . . . . . . . . . . . 438
SIM_hap_unregister_callback() . . . . . . . . . . . . . . . . . . . . . . 439

12

VIRTUTECH CONFIDENTIAL

CONTENTS

SIM_inc_cur_mode_counter() . . .
SIM_inc_mode_counter() . . . . . .
SIM_install_default_ASI_handler()
SIM_install_user_ASI_handler() . .
SIM_instruction_info() . . . . . . .
SIM_no_windows() . . . . . . . . .
SIM_num_control_registers() . . . .
SIM_object_by_id() . . . . . . . . .
SIM_proc_no_2_ptr() . . . . . . . .
SIM_processor_break() . . . . . . .
SIM_raise_general_exception() . . .
SIM_read_control_register() . . . .
SIM_read_fp_register() . . . . . . .
SIM_read_fp_register_d() . . . . . .
SIM_read_fp_register_i() . . . . . .
SIM_read_fp_register_s() . . . . . .
SIM_read_fp_register_x() . . . . . .
SIM_read_global_register() . . . . .
SIM_read_window_register() . . . .
SIM_set_mode_counter() . . . . . .
SIM_sparc_ASI_info() . . . . . . . .
SIM_void_to_processor_t() . . . . .
SIM_write_control_register() . . . .
SIM_write_fp_register() . . . . . . .
SIM_write_fp_register_d() . . . . .
SIM_write_fp_register_i() . . . . . .
SIM_write_fp_register_s() . . . . . .
SIM_write_fp_register_x() . . . . .
SIM_write_global_register() . . . .
SIM_write_window_register() . . .
4

Commands
4.1
Complete List . . . . . . .
4.2
By Categories . . . . . . . .
Breakpoints . . . . . . . .
CD-ROM . . . . . . . . .
Changing Simulated State
Command-Line Interface
Components . . . . . . . .
Configuration . . . . . . .
Debugging . . . . . . . .
Disk . . . . . . . . . . . .
Distributed Simulation . .
Ethernet . . . . . . . . . .
Execution . . . . . . . . .
Files and Directories . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

13

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

470
470
514
514
515
515
515
517
522
523
524
524
524
525
526

VIRTUTECH CONFIDENTIAL

4.3

CONTENTS

Haps . . . . . . . . . . . . . . .
Help . . . . . . . . . . . . . . .
Inspecting Simulated State . .
Logging . . . . . . . . . . . . .
Memory . . . . . . . . . . . . .
Modules . . . . . . . . . . . . .
Networking . . . . . . . . . . .
Output . . . . . . . . . . . . . .
Profiling . . . . . . . . . . . . .
Python . . . . . . . . . . . . . .
Real Network . . . . . . . . . .
Registers . . . . . . . . . . . . .
Reverse Execution . . . . . . .
Serial . . . . . . . . . . . . . . .
Simics Search Path . . . . . . .
Speed . . . . . . . . . . . . . . .
Symbolic Debugging . . . . . .
Test . . . . . . . . . . . . . . . .
Tracing . . . . . . . . . . . . . .
Global Command Descriptions

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

526
526
527
527
528
528
528
530
530
531
531
532
532
532
532
533
533
534
534
534

Modules

700

Classes
ADM1031 . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
agp-voodoo3 . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
alpha-ev5 . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
alpha-lx164-system . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
AM29F016 . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
AM79C960 . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
AM79C960-dml . . . . . . . .

781
782
782
783
784
784
784
784
786
786
793
794
794
795
795
796
796
796
797
797
801
801
803

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

14

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

VIRTUTECH CONFIDENTIAL
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
AM79C973 . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
apic . . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
apic-bus . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
apm . . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
arm-sa1110-system . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
armv5te . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
artesyn-pm-ppc . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
AT24C164 . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
AT24CS256 . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
base-trace-mem-hier . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
BCM5703C . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
BCM5704C . . . . . . . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

15

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

803
807
808
809
809
816
816
818
818
821
821
822
822
822
823
824
824
824
825
826
826
826
827
828
828
835
836
836
837
838
838
839
839
840
840
841
842
842
844
844
846
846
863
864
865

VIRTUTECH CONFIDENTIAL
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
bitmask-translator . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
branch_recorder . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
cassini . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
cassini_sub . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
central-client . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
central-server . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
cheerio-e2bus . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
cheerio-hme . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
cheetah-mmu . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
cheetah-plus-mmu . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
CL-PD6729 . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

16

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

865
883
883
885
885
885
885
887
887
888
888
889
889
906
907
908
908
909
910
910
911
911
913
913
914
914
915
915
916
916
917
917
925
925
927
927
932
932
935
935
940
940
943
943
945

VIRTUTECH CONFIDENTIAL
Command Descriptions
clock . . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
component . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
conf-object . . . . . . . . . . .
Attributes . . . . . . . .
consistency-controller . . . . .
Attributes . . . . . . . .
Command List . . . . .
context . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
context-switcher . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
cpc700-gpt . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
cpc700-iic . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
cpc700-mc . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
cpc700-pci . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
cpc700-pi . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
cpc700-uic . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

17

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

945
946
946
947
948
948
949
949
951
951
953
953
954
955
955
955
957
966
966
967
967
969
969
970
970
971
971
973
973
974
974
976
977
978
978
980
980
981
981
981
981
983
983
984
984

VIRTUTECH CONFIDENTIAL
cpu-group . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
cpu-mode-tracker . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
CS8900A . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
CY82C693_0 . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
CY82C693_1 . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
CY82C693_2 . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
data-profiler . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ddr-memory-module . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ddr2-memory-module . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
DEC21041 . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
DEC21140A . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
DEC21140A-dml . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
DEC21143 . . . . . . . . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

18

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

985
985
985
985
986
986
986
987
988
988
991
991
993
993
993
994
994
994
995
995
995
996
996
997
997
998
998
999
999
1001
1001
1002
1002
1004
1004
1008
1008
1010
1010
1014
1014
1016
1016
1021
1022

VIRTUTECH CONFIDENTIAL
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
DS12887 . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
DS12887-dml . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
DS1621 . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
DS1743P . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
DS17485 . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
dummy-component . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ebony-board . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ebony-fpga . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
empty-device . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
enchilada-system . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
etg . . . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

19

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1022
1026
1026
1028
1028
1030
1030
1033
1033
1035
1036
1039
1039
1039
1040
1040
1041
1041
1042
1042
1044
1044
1047
1047
1047
1047
1049
1049
1050
1050
1051
1051
1051
1052
1052
1052
1052
1054
1054
1055
1055
1058
1058
1061
1061

VIRTUTECH CONFIDENTIAL
eth-transceiver . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ethernet-link . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
FAS366U . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
fc-disk . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
fiesta-system . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
fiesta-tomatillo . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
file-cdrom . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
flash-memory . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
floppy-drive . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
fourport . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
frontend-server . . . . . . . . .
Attributes . . . . . . . .
ftp-alg . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
g-cache . . . . . . . . . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

20

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1063
1063
1064
1065
1066
1066
1068
1068
1072
1072
1077
1077
1078
1078
1081
1081
1084
1084
1084
1085
1086
1086
1088
1089
1091
1091
1091
1092
1093
1093
1095
1096
1096
1097
1097
1099
1099
1100
1100
1101
1101
1102
1102
1102
1103

VIRTUTECH CONFIDENTIAL
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
g-cache-ooo . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
gdb-remote . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
generic-flash-memory . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
gfx-console . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
GT64120 . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
GT64120-pci . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
host-cdrom . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
hostfs . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
i21150 . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
i21152 . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
i21554-prim . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
i21554-scnd . . . . . . . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

21

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1103
1107
1107
1110
1110
1114
1114
1116
1116
1118
1118
1120
1120
1124
1124
1125
1125
1128
1129
1133
1133
1161
1162
1162
1163
1164
1164
1164
1165
1166
1166
1167
1168
1169
1169
1170
1170
1172
1172
1173
1173
1175
1175
1176
1177

VIRTUTECH CONFIDENTIAL
Attributes . . . . . . . .
Command List . . . . .
i21555-prim . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
i21555-scnd . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
i2c-bus . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
i386-cpu . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
i486dx2-cpu . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
i486sx-cpu . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
i8042 . . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
i82077 . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
i8237x2 . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
i82443bx . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
i82443bx_agp . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
i82461GX . . . . . . . . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

22

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1177
1178
1179
1179
1180
1181
1181
1182
1183
1183
1184
1184
1185
1185
1185
1186
1187
1187
1187
1188
1189
1189
1189
1190
1191
1191
1197
1198
1201
1201
1204
1204
1206
1206
1208
1208
1209
1209
1210
1210
1211
1211
1212
1212
1213

VIRTUTECH CONFIDENTIAL
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
i82468GX_0 . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
i8254 . . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
i8259x2 . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ia64-460gx-system . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ia64-itanium . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
ia64-itanium2 . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
ICS951601 . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
id-splitter . . . . . . . . . . . .
Attributes . . . . . . . .
ide . . . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ide-cdrom . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ide-disk . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
image . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

23

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1213
1213
1214
1215
1215
1215
1216
1216
1219
1219
1220
1220
1222
1222
1223
1223
1224
1224
1225
1225
1231
1232
1232
1238
1239
1239
1240
1241
1241
1242
1242
1243
1243
1245
1245
1249
1250
1251
1251
1255
1256
1261
1261
1263
1263

VIRTUTECH CONFIDENTIAL
io-apic . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ISA . . . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
isa-lance . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
isa-vga . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ISP1040 . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ISP2200 . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
itanium-cpu . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
jaguar-mmu . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
jalapeno-mmu . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
legacy-pc-devices . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
leon2 . . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
leon2-simple . . . . . . . . . .
Attributes . . . . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

24

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1265
1265
1266
1266
1267
1267
1268
1268
1269
1269
1269
1270
1271
1271
1271
1272
1273
1273
1277
1277
1278
1278
1281
1282
1283
1283
1283
1284
1285
1285
1290
1290
1293
1293
1297
1298
1300
1300
1300
1300
1302
1302
1310
1311
1311

VIRTUTECH CONFIDENTIAL
Command List . . . . .
Command Descriptions
leon2_cfg . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
leon2_ioport . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
leon2_irq . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
leon2_timer . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
leon2_uart . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
linux-process-tracker . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
local-space-mapper . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
log-object . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
logical-memory-translator . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
LX164-IRQ-PLD . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
LX164-NVRAM . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
M5823 . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
malta . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

25

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1312
1312
1313
1313
1314
1315
1315
1315
1316
1316
1317
1318
1318
1319
1320
1320
1321
1322
1322
1323
1323
1325
1325
1325
1326
1327
1327
1328
1329
1329
1330
1330
1332
1332
1333
1334
1334
1335
1336
1336
1338
1338
1341
1341
1341

VIRTUTECH CONFIDENTIAL
malta-system . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
MD1535D-acpi . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
MD1535D-cfg . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
MD1535D-ide . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
MD1535D-isa . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
MD1535D-power . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
MD1535D-smb . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
MD1535D-unknown . . . . . .
Attributes . . . . . . . .
Command List . . . . .
memory-space . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
microwire-eeprom . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
mii-management-bus . . . . .
Attributes . . . . . . . .
Command List . . . . .
mii-transceiver . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
mips-4kc . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
mips-5kc . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

26

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1342
1342
1343
1343
1344
1344
1344
1345
1345
1346
1347
1347
1349
1350
1350
1351
1352
1352
1353
1354
1354
1354
1355
1355
1355
1356
1356
1357
1358
1362
1362
1363
1364
1364
1365
1366
1366
1369
1369
1371
1371
1380
1381
1381
1390

VIRTUTECH CONFIDENTIAL
MK48T08 . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
msp430 . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
niagara-core-mmu . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
niagara-dram-ctl . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
niagara-iob . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
niagara-l2c . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
niagara-simple-system . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
niagara-strand-mmu . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
north-bridge-443bx . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
north-bridge-443bx-agp . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
north-bridge-875p . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
north-bridge-e7520 . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
north-bridge-k8 . . . . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

27

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1391
1391
1392
1392
1394
1394
1398
1399
1400
1400
1401
1402
1402
1402
1403
1403
1403
1404
1404
1404
1405
1405
1406
1406
1408
1408
1412
1413
1415
1415
1415
1415
1417
1417
1417
1417
1419
1419
1419
1419
1421
1421
1421
1421
1423

VIRTUTECH CONFIDENTIAL
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
NS16450 . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
NS16550 . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
nvci . . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ooo_micro_arch . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
open-pic . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
opencores_eth . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
opteron-cpu . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
panther-mmu . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pc-config . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
pc-dual-serial-ports . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pc-floppy-controller . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pc-quad-serial-ports . . . . . .
Attributes . . . . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

28

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1423
1423
1423
1425
1425
1428
1428
1429
1429
1432
1432
1433
1433
1436
1436
1438
1438
1438
1439
1439
1440
1441
1441
1443
1444
1444
1445
1445
1446
1446
1451
1451
1454
1454
1454
1455
1455
1455
1455
1457
1457
1457
1457
1459
1459

VIRTUTECH CONFIDENTIAL
Command List . . . . .
Command Descriptions
pc-shadow . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pc-single-parallel-port . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
PCF8582C . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
PCF8584 . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
PCF8587 . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
pci-am79c973 . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pci-backplane . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pci-bcm5703c . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pci-bcm5704c . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pci-bus . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pci-dec21041 . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pci-dec21140a . . . . . . . . . .
Attributes . . . . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

29

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1459
1459
1461
1461
1461
1462
1463
1463
1463
1463
1465
1465
1466
1467
1467
1468
1469
1469
1469
1470
1470
1470
1471
1472
1472
1472
1472
1474
1474
1474
1475
1476
1476
1476
1477
1478
1478
1479
1479
1480
1480
1480
1481
1482
1482

VIRTUTECH CONFIDENTIAL
Command List . . . . .
Command Descriptions
pci-dec21140a-dml . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pci-dec21143 . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pci-i21152 . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pci-i82543gc . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pci-i82546bg . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pci-isp1040 . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pci-isp2200 . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pci-pd6729 . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pci-pmc1553-bc . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pci-rage-pm-mobility-pci . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pci-ragexl . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

30

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1482
1483
1484
1484
1484
1485
1486
1486
1486
1487
1488
1488
1488
1488
1490
1490
1490
1491
1492
1492
1492
1493
1494
1494
1494
1495
1496
1496
1496
1497
1498
1498
1498
1498
1500
1500
1500
1500
1502
1502
1502
1502
1504
1504
1504

VIRTUTECH CONFIDENTIAL
Command Descriptions
pci-sil680a . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pci-sym53c810 . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pci-sym53c875 . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pci-sym53c876 . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pci-vga . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pci-voodoo3 . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
PCI0646 . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
pcie-pex8524 . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pcie-switch . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pentium-4-cpu . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pentium-4e-2ht-cpu . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pentium-4e-4ht-cpu . . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

31

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1504
1506
1506
1506
1506
1508
1508
1508
1509
1510
1510
1510
1511
1512
1512
1512
1512
1514
1514
1514
1515
1516
1516
1516
1516
1518
1518
1518
1519
1519
1519
1520
1521
1521
1522
1522
1523
1523
1524
1524
1525
1525
1526
1526
1527

VIRTUTECH CONFIDENTIAL
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pentium-4e-cpu . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pentium-cpu . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pentium-ii-cpu . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pentium-iii-cpu . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pentium-m-cpu . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pentium-mmx-cpu . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pentium-pro-cpu . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
perfanalyze . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
perfanalyze-client . . . . . . .
Attributes . . . . . . . .
persistent-ram . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
phy-mii-transceiver . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
piix4_ide . . . . . . . . . . . .
Attributes . . . . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

32

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1527
1528
1528
1529
1529
1530
1530
1531
1531
1532
1532
1533
1533
1534
1534
1535
1535
1536
1536
1537
1537
1538
1538
1539
1539
1540
1540
1541
1541
1542
1542
1543
1543
1544
1545
1545
1546
1546
1546
1547
1547
1547
1548
1549
1549

VIRTUTECH CONFIDENTIAL
Command List . . . . .
Command Descriptions
piix4_isa . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
piix4_power . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
piix4_usb . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
piix4_usb_dummy . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
pmppc-board . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
port-forward-incoming-server
Attributes . . . . . . . .
Command List . . . . .
port-forward-outgoing-server
Attributes . . . . . . . .
Command List . . . . .
port-space . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc-broadcast-bus . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc-of . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc-simple . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc32-linux-process-tracker .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

33

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1550
1551
1552
1552
1553
1553
1554
1554
1556
1556
1557
1557
1561
1562
1563
1563
1564
1564
1565
1565
1566
1566
1567
1567
1568
1569
1569
1570
1571
1571
1572
1572
1574
1574
1574
1575
1576
1576
1577
1577
1578
1578
1579
1579
1580

VIRTUTECH CONFIDENTIAL
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc405gp . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc405gp-cpc . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
ppc405gp-ebc . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
ppc405gp-emac . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc405gp-gpio . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
ppc405gp-iic . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
ppc405gp-mal . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
ppc405gp-mc . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
ppc405gp-pci . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
ppc405gp-uic . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
ppc440gp . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc440gp-cpc . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc440gp-dma . . . . . . . . .
Attributes . . . . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

34

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1580
1581
1581
1582
1582
1595
1595
1596
1596
1597
1598
1598
1600
1601
1601
1606
1606
1608
1608
1608
1609
1609
1611
1612
1612
1615
1616
1616
1617
1618
1618
1620
1621
1621
1623
1624
1624
1640
1641
1642
1642
1644
1644
1645
1645

VIRTUTECH CONFIDENTIAL
Command List . . . . .
Command Descriptions
ppc440gp-ebc . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc440gp-emac . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc440gp-gpio . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc440gp-iic . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc440gp-mal . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc440gp-mc . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc440gp-pci . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc440gp-plb . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
ppc440gp-sram . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
ppc440gp-uic . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc440gp-zmii . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc440gx . . . . . . . . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

35

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1649
1649
1650
1650
1654
1655
1656
1656
1661
1661
1663
1663
1663
1664
1665
1665
1667
1668
1669
1669
1672
1672
1673
1673
1675
1676
1677
1677
1684
1685
1686
1686
1687
1688
1688
1689
1690
1690
1692
1692
1693
1693
1694
1694
1695

VIRTUTECH CONFIDENTIAL
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc440gx-cpc . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc440gx-cpr . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
ppc440gx-dma . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc440gx-ebc . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc440gx-emac . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc440gx-gpio . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc440gx-iic . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc440gx-l2c . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
ppc440gx-mal . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc440gx-opb . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
ppc440gx-pci . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc440gx-plb . . . . . . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

36

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1695
1711
1712
1714
1714
1716
1716
1717
1717
1718
1719
1719
1723
1723
1724
1724
1728
1729
1730
1730
1735
1735
1737
1737
1737
1738
1739
1739
1741
1742
1743
1743
1744
1745
1745
1748
1749
1750
1750
1751
1752
1752
1759
1760
1761

VIRTUTECH CONFIDENTIAL
Attributes . . . . . . . .
Command List . . . . .
ppc440gx-rgmii . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
ppc440gx-sdr . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
ppc440gx-sdram . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
ppc440gx-sram . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
ppc440gx-uic . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc440gx-zmii . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc603e . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc64-linux-process-tracker .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc7400 . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc7447 . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc7450 . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc7457 . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

37

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1761
1762
1763
1763
1763
1764
1764
1767
1768
1768
1770
1771
1771
1772
1773
1773
1775
1775
1776
1776
1777
1777
1778
1778
1791
1791
1793
1793
1793
1794
1795
1795
1809
1809
1811
1811
1827
1827
1829
1829
1843
1844
1845
1845
1862

VIRTUTECH CONFIDENTIAL
Command Descriptions
ppc750 . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc750fx . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc750gx . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc970-simple . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ppc970fx . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
preferences . . . . . . . . . . .
Attributes . . . . . . . .
ps2-keyboard-mouse . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
python . . . . . . . . . . . . . .
Attributes . . . . . . . .
pyxis . . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ragexl . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
ram . . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
recorder . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

38

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1862
1863
1863
1876
1877
1878
1878
1893
1893
1894
1894
1909
1909
1910
1910
1911
1911
1912
1912
1925
1925
1927
1927
1929
1929
1929
1929
1931
1931
1932
1932
1933
1933
1934
1934
1938
1939
1941
1941
1942
1942
1943
1943
1944
1944

VIRTUTECH CONFIDENTIAL
rev-execution . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
rn-eth-bridge-raw . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
rn-eth-bridge-tap . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
rn-eth-proxy-raw . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
rn-eth-proxy-tap . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
rn-ip-router-raw . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
rn-ip-tunnel-tun . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
rom . . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
rom-device . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
SA1110-device . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sample-device . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sample-device-python . . . . .
Attributes . . . . . . . .
Command List . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

39

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1946
1946
1947
1948
1948
1949
1950
1951
1951
1953
1953
1955
1955
1957
1957
1958
1958
1960
1961
1962
1962
1964
1964
1965
1965
1967
1967
1969
1969
1970
1970
1971
1971
1971
1972
1972
1973
1973
1974
1974
1974
1975
1976
1976
1976

VIRTUTECH CONFIDENTIAL
Command Descriptions
sample-gcache . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sample-i2c-device . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
sample-ma-model . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sample-memhier . . . . . . . .
Attributes . . . . . . . .
sample-ooo-model . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sample-pci-device . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
sample-x86-ma-model . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sample_micro_arch . . . . . .
Attributes . . . . . . . .
Command List . . . . .
sample_micro_arch_x86 . . . .
Attributes . . . . . . . .
Command List . . . . .
sapic-bus . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
sb16 . . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
sbbc-pci . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sbus-hme . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

40

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1976
1978
1978
1978
1978
1980
1980
1981
1982
1982
1982
1982
1984
1984
1985
1985
1985
1985
1987
1987
1988
1989
1989
1989
1989
1991
1991
1992
1993
1993
1994
1995
1995
1995
1996
1996
1997
1998
1998
2000
2000
2002
2002
2009
2010

VIRTUTECH CONFIDENTIAL
scsi-bus . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
scsi-cdrom . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
scsi-disk . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sdram-memory-module . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
serengeti-3800-chassis . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
serengeti-4800-chassis . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
serengeti-4810-chassis . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
serengeti-6800-chassis . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
serengeti-cluster-chassis . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
serengeti-console . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
serengeti-console-old . . . . .
Attributes . . . . . . . .
Command List . . . . .
serengeti-cpci4-board . . . . .
Attributes . . . . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

41

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

2011
2011
2012
2012
2014
2014
2018
2019
2020
2020
2024
2025
2029
2029
2030
2030
2032
2032
2033
2033
2036
2036
2037
2037
2040
2040
2041
2041
2044
2044
2045
2045
2048
2048
2049
2049
2052
2052
2055
2055
2056
2056
2059
2060
2060

VIRTUTECH CONFIDENTIAL
Command List . . . . . .
Command Descriptions .
serengeti-pci8-board . . . . . . .
Attributes . . . . . . . . .
Command List . . . . . .
Command Descriptions .
serengeti-schizo . . . . . . . . .
Attributes . . . . . . . . .
Command List . . . . . .
Command Descriptions .
serengeti-sp-cpci6-board . . . .
Attributes . . . . . . . . .
Command List . . . . . .
Command Descriptions .
serengeti-system . . . . . . . . .
Attributes . . . . . . . . .
Command List . . . . . .
Command Descriptions .
serengeti-us-iii-cpu-board . . . .
Attributes . . . . . . . . .
Command List . . . . . .
Command Descriptions .
serengeti-us-iii-plus-cpu-board .
Attributes . . . . . . . . .
Command List . . . . . .
Command Descriptions .
serengeti-us-iv-cpu-board . . . .
Attributes . . . . . . . . .
Command List . . . . . .
Command Descriptions .
serengeti-us-iv-plus-cpu-board .
Attributes . . . . . . . . .
Command List . . . . . .
Command Descriptions .
serial-link . . . . . . . . . . . . .
Attributes . . . . . . . . .
Command List . . . . . .
Command Descriptions .
server-console . . . . . . . . . .
Attributes . . . . . . . . .
Command List . . . . . .
Command Descriptions .
service-node . . . . . . . . . . .
Attributes . . . . . . . . .
Command List . . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

42

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

2060
2060
2062
2062
2062
2062
2064
2064
2067
2067
2069
2069
2069
2069
2071
2071
2072
2072
2073
2073
2073
2074
2075
2075
2075
2076
2077
2077
2077
2078
2079
2079
2079
2080
2081
2081
2082
2082
2084
2084
2086
2086
2091
2091
2094

VIRTUTECH CONFIDENTIAL
Command Descriptions
service-node-device . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
set-memory . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
signal-bus . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sim . . . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
simple-byte-dump . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
simple-fc-disk . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sio-lpc47m172 . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sio-w83627hf . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
SIO82378ZB . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
south-bridge-6300esb . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
south-bridge-amd8111 . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
south-bridge-md1535d . . . .
Attributes . . . . . . . .
Command List . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

43

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

2094
2098
2098
2099
2099
2100
2100
2100
2101
2101
2102
2102
2103
2103
2110
2111
2111
2111
2111
2113
2113
2114
2114
2115
2115
2115
2116
2117
2117
2117
2117
2119
2119
2119
2120
2120
2120
2121
2122
2122
2122
2122
2124
2124
2124

VIRTUTECH CONFIDENTIAL
Command Descriptions
south-bridge-piix4 . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
south-bridge-saturn . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
south-bridge-sun-md1535d . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sparc-irq-bus . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
spitfire-mmu . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
state-assertion . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
std-etg . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
std-ethernet-link . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
std-graphics-console . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
std-host-serial-console . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
std-ide-cdrom . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

44

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

2124
2126
2126
2126
2126
2128
2128
2128
2128
2130
2130
2130
2130
2132
2132
2132
2133
2134
2134
2137
2137
2140
2140
2142
2142
2144
2144
2145
2145
2146
2146
2146
2147
2148
2148
2148
2149
2150
2150
2150
2150
2152
2152
2152
2152

VIRTUTECH CONFIDENTIAL
std-ide-disk . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
std-ms1553-link . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
std-pcmcia-flash-disk . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
std-scsi-bus . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
std-scsi-cdrom . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
std-scsi-disk . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
std-serial-link . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
std-server-console . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
std-service-node . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
std-super-io . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
std-text-console . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
std-text-graphics-console . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

45

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

2154
2154
2154
2155
2156
2156
2156
2156
2158
2158
2158
2159
2160
2160
2160
2160
2162
2162
2162
2163
2164
2164
2164
2165
2166
2166
2166
2166
2168
2168
2168
2169
2170
2170
2170
2171
2172
2172
2172
2173
2174
2174
2175
2175
2176

VIRTUTECH CONFIDENTIAL
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
store_queue . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
strata-flash . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
sun-cpci-hme-isp . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sun-cpci-isp-isp . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sun-cpci-qlc-qlc . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sun-keyboard . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sun-mouse . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sun-pci-ce . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sun-pci-hme . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sun-pci-hme-isp . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sun-pci-pgx64 . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

46

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

2176
2176
2176
2178
2178
2178
2179
2179
2180
2181
2181
2181
2182
2183
2183
2183
2184
2185
2185
2185
2186
2187
2187
2188
2188
2189
2189
2190
2190
2193
2193
2193
2194
2195
2195
2195
2196
2197
2197
2197
2198
2199
2199
2199
2199

VIRTUTECH CONFIDENTIAL
sun-pci-qlc . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sun-pci-qlc-qlc . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sun-sbus-fas-hme . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sun-type5-keyboard . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sun-type5-mouse . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sun4u-ac . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
sun4u-clockregs . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sun4u-counter . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sun4u-fasdma . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
sun4u-fhc . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sun4u-sbus-speed . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
sun4u-simm-status . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

47

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

2201
2201
2201
2202
2203
2203
2203
2204
2205
2205
2205
2206
2207
2207
2207
2207
2209
2209
2209
2209
2211
2211
2212
2213
2213
2213
2214
2215
2215
2216
2217
2218
2218
2219
2220
2220
2222
2222
2223
2223
2223
2224
2224
2224
2224

VIRTUTECH CONFIDENTIAL
sun4u-systemregs . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sun4u-temperature . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sun4u-trans2 . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
sun4v-rtc . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sunfire-3500-backplane . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sunfire-4500-backplane . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sunfire-6500-backplane . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sunfire-cpu-board . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sunfire-pci-board . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sunfire-psycho . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sunfire-sbus-board . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
sunfire-sysio . . . . . . . . . .
Attributes . . . . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

48

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

2226
2226
2227
2227
2229
2229
2229
2229
2231
2231
2233
2234
2234
2234
2234
2236
2236
2237
2237
2240
2240
2241
2241
2244
2244
2245
2245
2248
2248
2248
2249
2250
2250
2250
2251
2252
2252
2255
2256
2257
2257
2257
2258
2259
2259

VIRTUTECH CONFIDENTIAL
Command List . . . . .
Command Descriptions
sunfire-system . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
SYM53C810 . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
SYM53C875 . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
symtable . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
taco-system . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
telos-basic-clock . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
telos-button . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
telos-environment . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
telos-io-ports . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
telos-mote . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
telos-sfr . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
telos-timer . . . . . . . . . . .
Attributes . . . . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

49

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

2262
2262
2264
2264
2265
2265
2267
2267
2269
2269
2270
2270
2272
2272
2273
2273
2276
2276
2280
2280
2281
2281
2284
2284
2284
2285
2285
2285
2286
2286
2287
2287
2288
2288
2291
2291
2292
2292
2293
2293
2294
2294
2295
2296
2296

VIRTUTECH CONFIDENTIAL
Command List . . . . .
telos-usart . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
text-console . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
top-component . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
trace-mem-hier . . . . . . . . .
Attributes . . . . . . . .
trans-sorter . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
trans-splitter . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
trans-splitter-ooo . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
trans-staller . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
ultrasparc-ii . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
ultrasparc-iii . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
ultrasparc-iii-i . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
ultrasparc-iii-plus . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
ultrasparc-iv . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
ultrasparc-iv-plus . . . . . . .
Attributes . . . . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

50

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

2298
2299
2299
2301
2302
2302
2307
2308
2315
2315
2315
2316
2317
2317
2318
2318
2319
2319
2320
2320
2321
2322
2322
2323
2323
2324
2324
2324
2325
2325
2333
2334
2334
2342
2344
2344
2352
2354
2354
2362
2364
2364
2372
2374
2374

VIRTUTECH CONFIDENTIAL
Command List . . . . .
ultrasparc-t1 . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
unresolved_object_class . . . .
Attributes . . . . . . . .
uPD66566S1016 . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
v9-sol9-idle-opt . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
vga . . . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
vga_pci . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
voodoo3 . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
voodoo3-agp . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
wire . . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
x86-486sx . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
x86-apic-bus-system . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
x86-apic-system . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
x86-e7520-system . . . . . . .
Attributes . . . . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

51

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

2382
2384
2384
2393
2394
2394
2395
2395
2396
2397
2397
2398
2398
2400
2400
2403
2403
2405
2405
2409
2409
2411
2411
2416
2417
2420
2420
2425
2426
2428
2428
2428
2429
2429
2446
2447
2447
2448
2448
2451
2451
2452
2452
2455
2455

VIRTUTECH CONFIDENTIAL
Command List . . . . .
Command Descriptions
x86-hammer . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
x86-hammer-cpu . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
x86-linux-process-tracker . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
x86-p2 . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
x86-p4 . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
x86-reset-bus . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
x86-separate-mem-io-system .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
x86-system . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
x86-tlb . . . . . . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
x87_exception . . . . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
xeon-prestonia-cpu . . . . . .
Attributes . . . . . . . .
Command List . . . . .
Command Descriptions
Z8530 . . . . . . . . . . . . . .
Attributes . . . . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

52

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

2456
2456
2459
2459
2491
2492
2492
2493
2493
2494
2494
2494
2495
2496
2496
2520
2522
2522
2558
2559
2559
2559
2560
2561
2561
2562
2562
2565
2565
2566
2566
2569
2569
2570
2570
2571
2571
2572
2572
2573
2573
2574
2574
2575
2575

VIRTUTECH CONFIDENTIAL

CONTENTS

Command List . . . . .
Command Descriptions
Z8530-port . . . . . . . . . . .
Attributes . . . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

2576
2576
2577
2577

Interfaces
a20 . . . . . . . . . . . . . . . .
address_profiler . . . . . . . .
Command Descriptions
apic_cpu . . . . . . . . . . . . .
arm . . . . . . . . . . . . . . .
Command Descriptions
branch_arc . . . . . . . . . . .
breakpoint . . . . . . . . . . .
Command Descriptions
bridge . . . . . . . . . . . . . .
cache_miss . . . . . . . . . . .
component . . . . . . . . . . .
ethernet_device . . . . . . . .
ethernet_link . . . . . . . . . .
event_poster . . . . . . . . . .
exception . . . . . . . . . . . .
extended_serial . . . . . . . . .
ieee_802_3_mac . . . . . . . .
ieee_802_3_phy . . . . . . . . .
image . . . . . . . . . . . . . .
int_register . . . . . . . . . . .
interrupt_ack . . . . . . . . . .
interrupt_cpu . . . . . . . . . .
io_memory . . . . . . . . . . .
keyboard . . . . . . . . . . . .
log_object . . . . . . . . . . . .
Command Descriptions
map_demap . . . . . . . . . .
memory_space . . . . . . . . .
microwire . . . . . . . . . . . .
mips . . . . . . . . . . . . . . .
Command Descriptions
mmu . . . . . . . . . . . . . . .
mouse . . . . . . . . . . . . . .
pci_bridge . . . . . . . . . . . .
pci_bus . . . . . . . . . . . . .
pci_device . . . . . . . . . . . .
pci_express . . . . . . . . . . .
pci_interrupt . . . . . . . . . .
pin . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

2578
2579
2580
2581
2583
2584
2584
2585
2587
2588
2591
2592
2593
2594
2595
2597
2599
2600
2601
2602
2603
2604
2606
2607
2608
2610
2611
2613
2615
2616
2618
2619
2619
2621
2622
2623
2624
2625
2626
2628
2629

53

VIRTUTECH CONFIDENTIAL
port_space . . . . . . . . . . .
ppc . . . . . . . . . . . . . . . .
processor . . . . . . . . . . . .
Command Descriptions
ram . . . . . . . . . . . . . . .
rom . . . . . . . . . . . . . . .
rs232_device . . . . . . . . . .
serial_device . . . . . . . . . .
serial_link . . . . . . . . . . . .
signal . . . . . . . . . . . . . .
simple_interrupt . . . . . . . .
snoop_memory . . . . . . . . .
sparc_interrupt . . . . . . . . .
sparc_irq_bus . . . . . . . . . .
sparc_u3 . . . . . . . . . . . . .
sparc_v9 . . . . . . . . . . . . .
Command Descriptions
symtable . . . . . . . . . . . .
timing_model . . . . . . . . . .
tracker . . . . . . . . . . . . . .
Command Descriptions
tracker_settings . . . . . . . .
tracker_unix . . . . . . . . . .
translate . . . . . . . . . . . . .
x86 . . . . . . . . . . . . . . . .
Command Descriptions
x86_tlb . . . . . . . . . . . . . .
8

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

2630
2631
2633
2636
2652
2653
2654
2655
2656
2657
2658
2659
2660
2662
2663
2665
2667
2669
2670
2671
2672
2674
2675
2676
2677
2677
2680

Haps
CLI_Variable_Write . . . . . . .
Core_Address_Not_Mapped . .
Core_Asynchronous_Trap . . .
Core_At_Exit . . . . . . . . . . .
Core_Back_To_Front . . . . . . .
Core_Breakpoint . . . . . . . . .
Core_Breakpoint_Memop . . . .
Core_Conf_Class_Register . . .
Core_Conf_Class_Unregister . .
Core_Conf_Object_Create . . . .
Core_Conf_Object_Delete . . . .
Core_Conf_Object_Pre_Delete .
Core_Configuration_Loaded . .
Core_Connect_Central . . . . .
Core_Console_Owner_Changed
Core_Context_Activate . . . . .
Core_Context_Change . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

2682
2682
2682
2682
2683
2683
2683
2684
2684
2685
2685
2685
2685
2686
2686
2686
2687
2687

54

VIRTUTECH CONFIDENTIAL
Core_Context_Deactivate . . . . . .
Core_Continuation . . . . . . . . . .
Core_Control_Register_Read . . . .
Core_Control_Register_Write . . .
Core_Cpu_Switch_Time_Changed
Core_Cycle_Count . . . . . . . . . .
Core_Device_Access_Memop . . .
Core_Device_Access_Read . . . . .
Core_Device_Access_Write . . . . .
Core_Disable_Breakpoints . . . . .
Core_Discard_Future . . . . . . . .
Core_Disconnect_Central . . . . . .
Core_DSTC_Flush_Counter . . . .
Core_Exception . . . . . . . . . . .
Core_Exception_Return . . . . . . .
Core_External_Interrupt . . . . . .
Core_Fence . . . . . . . . . . . . . .
Core_Frontend_Line_Done . . . . .
Core_Hap_Callback_Installed . . .
Core_Hap_Callback_Removed . . .
Core_Hap_Type_Added . . . . . .
Core_Initial_Configuration . . . . .
Core_Instruction_Squashed . . . . .
Core_Interrupt_Status . . . . . . . .
Core_Log_Message . . . . . . . . .
Core_Magic_Instruction . . . . . . .
Core_MC_Loaded . . . . . . . . . .
Core_Memory_Barrier . . . . . . . .
Core_Misplaced_Rex . . . . . . . .
Core_Mode_Change . . . . . . . . .
Core_Mode_Switch . . . . . . . . .
Core_Module_Loaded . . . . . . . .
Core_Not_Implemented . . . . . .
Core_Periodic_Event . . . . . . . .
Core_Pre_Central_Configuration .
Core_Preferences_Changed . . . . .
Core_Processor_Schedule_Changed
Core_Profiling_Mode_Change . . .
Core_Prompt_Changed . . . . . . .
Core_Pseudo_Exception . . . . . .
Core_Recent_Files_Changed . . . .
Core_Rexec_Active . . . . . . . . .
Core_Screen_Resized . . . . . . . .
Core_Simulation_Stopped . . . . .
Core_Source_Step . . . . . . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

55

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

2687
2687
2688
2688
2689
2689
2689
2690
2690
2690
2691
2691
2691
2692
2692
2693
2693
2693
2694
2694
2694
2695
2695
2695
2696
2696
2697
2697
2697
2697
2698
2698
2699
2699
2699
2699
2700
2700
2700
2701
2701
2701
2701
2702
2702

VIRTUTECH CONFIDENTIAL
Core_Step_Count . . . . . . . . . .
Core_Sync_Instruction . . . . . . .
Core_TD_Changed . . . . . . . . .
Core_Time_Transition . . . . . . . .
Core_Trackee_Active . . . . . . . .
Core_Trackee_Exec . . . . . . . . .
Core_Workspace_Changed . . . . .
Core_Write_Configuration . . . . .
ETG_New_Arp_Entry . . . . . . . .
Ethernet_Frame . . . . . . . . . . .
Ethernet_Link . . . . . . . . . . . .
Ethernet_Receive . . . . . . . . . . .
Ethernet_Transmit . . . . . . . . . .
FC_SCSI_Command . . . . . . . . .
GDB_Stopped . . . . . . . . . . . .
Gfx_Break_String . . . . . . . . . .
MIPS_Processor_Reset . . . . . . .
MMU_Context_Register_Write . . .
MMU_Data_TLB_Demap . . . . . .
MMU_Data_TLB_Map . . . . . . .
MMU_Data_TLB_Overwrite . . . .
MMU_Data_TLB_Replace . . . . .
MMU_Instruction_TLB_Demap . .
MMU_Instruction_TLB_Map . . . .
MMU_Instruction_TLB_Overwrite
MMU_Instruction_TLB_Replace . .
MMU_Register_Write . . . . . . . .
ppc64_sfmode_change . . . . . . .
PPC_Attention . . . . . . . . . . . .
PPC_Processor_Reset . . . . . . . .
PPC_TLB_Invalidate_Entry . . . . .
Python_Tab_Completion . . . . . .
Rexec_Limit_Exceeded . . . . . . .
RTC_Nvram_Update . . . . . . . .
SCSI_CDROM_Command . . . . .
SCSI_Disk_Command . . . . . . . .
TLB_Fill_Data . . . . . . . . . . . .
TLB_Fill_Instruction . . . . . . . . .
TLB_Invalidate_Data . . . . . . . .
TLB_Invalidate_Instruction . . . . .
TLB_Miss_Data . . . . . . . . . . .
TLB_Miss_Instruction . . . . . . . .
TLB_Replace_Data . . . . . . . . . .
TLB_Replace_Instruction . . . . . .
Turbo_New_Code_Block . . . . . .

CONTENTS
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

56

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

2702
2703
2703
2703
2704
2704
2704
2705
2705
2705
2705
2706
2706
2706
2707
2707
2707
2708
2708
2708
2709
2709
2709
2710
2710
2711
2711
2711
2712
2712
2712
2713
2713
2713
2714
2714
2714
2715
2715
2716
2716
2716
2717
2717
2717

VIRTUTECH CONFIDENTIAL
X86_Descriptor_Change
X86_Enter_SMM . . . . .
X86_Leave_SMM . . . . .
X86_Processor_Reset . .
Xterm_Break_String . . .
9

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

2718
2718
2718
2719
2719

Craff
2720
9.1
Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2720

Index

2723

57

VIRTUTECH CONFIDENTIAL

Chapter 1

About Simics Documentation


1.1

Conventions

Let us take a quick look at the conventions used throughout the Simics documentation.
Scripts, screen dumps and code fragments are presented in a monospace font. In screen
dumps, user input is always presented in bold font, as in:
Welcome to the Simics prompt
simics> this is something that you should type
Sometimes, artificial line breaks may be introduced to prevent the text from being too
wide. When such a break occurs, it is indicated by a small arrow pointing down, showing
that the interrupted text continues on the next line:
This is an artificial
line break that shouldnt be there.
The directory where Simics is installed is referred to as [simics], for example when
mentioning the [simics]/README file. In the same way, the shortcut [workspace] is
used to point at the users workspace directory.

1.2

Simics Guides and Manuals

Simics comes with several guides and manuals, which will be briefly described here. All
documentation can be found in [simics]/doc as Windows Help files (on Windows),
HTML files (on Unix) and PDF files (on both platforms). The new Eclipse-based interface
also includes Simics documentation in its own help system.

Simics Installation Guide for Unix and for Windows


These guides describe how to install Simics and provide a short description of an installed
Simics package. They also cover the additional steps needed for certain features of Simics
to work (connection to real network, building new Simics modules, . . . ).
58

VIRTUTECH CONFIDENTIAL

1.2. Simics Guides and Manuals

Simics User Guide for Unix and for Windows


These guides focus on getting a new user up to speed with Simics, providing information on
Simics features such as debugging, profiling, networks, machine configuration and scripting.

Simics Eclipse User Guide


This is an alternative User Guide describing Simics and its new Eclipse-based graphical user
interface.

Simics Target Guides


These guides provide more specific information on the different architectures simulated by
Simics and the example machines that are provided. They explain how the machine configurations are built and how they can be changed, as well as how to install new operating
systems. They also list potential limitations of the models.

Simics Programming Guide


This guide explains how to extend Simics by creating new devices and new commands. It
gives a broad overview of how to work with modules and how to develop new classes and
objects that fit in the Simics environment. It is only available when the DML add-on package
has been installed.

DML Tutorial
This tutorial will give you a gentle and practical introduction to the Device Modeling Language (DML), guiding you through the creation of a simple device. It is only available when
the DML add-on package has been installed.

DML Reference Manual


This manual provides a complete reference of DML used for developing new devices with
Simics. It is only available when the DML add-on package has been installed.

Simics Reference Manual


This manual provides complete information on all commands, modules, classes and haps
implemented by Simics as well as the functions and data types defined in the Simics API.

Simics Micro-Architectural Interface


This guide describes the cycle-accurate extensions of Simics (Micro-Architecture Interface
or MAI) and provides information on how to write your own processor timing models. It is
only available when the DML add-on package has been installed.

59

VIRTUTECH CONFIDENTIAL

1.2. Simics Guides and Manuals

RELEASENOTES and LIMITATIONS files


These files are located in Simicss main directory (i.e., [simics]). They list limitations,
changes and improvements on a per-version basis. They are the best source of information
on new functionalities and specific bug fixes.

Simics Technical FAQ


This document is available on the Virtutech website at http://www.simics.net/support.
It answers many questions that come up regularly on the support forums.

Simics Support Forum


The Simics Support Forum is the main support tool for Simics. You can access it at http://
www.simics.net.

Other Interesting Documents


Simics uses Python as its main script language. A Python tutorial is available at http://
www.python.org/doc/2.4/tut/tut.html. The complete Python documentation is located at http://www.python.org/doc/2.4/.

60

VIRTUTECH CONFIDENTIAL

Chapter 2

Invoking Simics (Startup Flags)


Simics is started using the simics script in the workspace directory. The simics script
takes the following arguments:
./simics [simics options]
Simics can be started with a variety of command line flag arguments, called simics options
above. A summary of these can be found in the Simics User Guide. The rest of this chapters
describes each of these, in alphabetical order.
If you want to run another host version of Simics than the default, set the SIMICS_HOST
environment variable. The following shows how you can do that in different shells.
# Bourne shell
SIMICS_HOST=x86-linux ./simics
# C shell
setenv SIMICS_HOST x86-linux
./simics
By default, Simics executes the startup-commands files in the [simics]/config/
directory and in the current directory as Simics scripts after having interpreted all the commandline arguments. This allow you to specify commands that are run whenever Simics start,
where the file in [simics]/config/ is run for all users sharing the same Simics installation. To prevent this behavior, use the -n simics option.

61

VIRTUTECH CONFIDENTIAL

2.1

2.1. Startup Flags

Startup Flags

-E, -expire <time> (advanced)


Check out licenses with an expire time, for off-line use. Valid formats are:
dd-mmm-yyyy[:hh:mm] where:
dd
day number in month
mmm
abbreviated name of month
yyyy
year including century
hh
hour in 24-hour format
mm
minutes.
+<num>h setting the license to expire <num> hours from now.
+<num>d setting the license to expire <num> days from now.

-L
Add a path to the directory list that Simics searches for modules.

-batch-mode (advanced)
Run in batch mode. This means that Simics will exit when all commands and scripts given
on the command line have executed, or as soon as an error occurs.
When an error has occurred, Simics will immediately exit with a non-zero status. If all
commands run to completion, Simics exits with status 0, indicating success.
Simics will not use the command history file in batch mode.

-c <file>
Load a configuration file. This is equivalent to issuing a read-configuration command after
Simics has started.
If this flag is the last on the command line, -c may be omitted.

-central <address[:port]>
Connect to Simics Central. Simics Central may be running on another host, and this argument to this flag is an IP address and an optional port number where Simics Central is
listening. The port number defaults to 1909 if omitted.
If the local hosts address is supplied, and the port number is left out, Simics will try to
connect to the default Unix file socket (/tmp/simics-central).
Also see the -central :<file> flag.
62

VIRTUTECH CONFIDENTIAL

2.1. Startup Flags

-central :<file>
Connect to Simics Central using a Unix file socket. This variant of the -central flag lets
you specify a socket file.

-central-time-out <time>
Simics will wait time seconds trying to connect to a central server every second before giving
up and starting without the central connection.

-dstc (advanced)
Force the D-STC to be enabled. See the -no-stc flag for more information.

-e <command>
Execute a CLI command. Equivalent of typing in the command at the command line prompt.

-echo
Enable command echoing. When echoing is enabled, Simics will echo all commands executed by startup scripts. Note that this only affects any startup scripts loaded after the
-echo flag on the command line.

-fast
For backwards compatibility only. Fast mode is the default mode of execution.

-h
Makes Simics print a brief help screen and exit.

-istc (advanced)
Force the I-STC to be enabled. See the -no-stc flag for more information.

-license
Print the Simics license text and exit. This is the default license and is also included in the
LICENSE file.

-license-file <file> (advanced)


Specify the FLEXlm license file to use. This will make Simics ignore the VTECH_LICENSE_
FILE and LM_LICENSE_FILE environment variables. On Unix systems the $HOME/.flexlmlc
file is ignored, as well as the Registry on Windows hosts. The $HOME/.flexlmrc, and the
Registry are not updated when Simics is started with this flag.

63

VIRTUTECH CONFIDENTIAL

2.1. Startup Flags

-log-file <file>
Use a different log file than the default .simics-log.

-ma
Start micro-architect version of Simics if available. For more information about the microarchitect version, see the Simics User Guide. If you use this option, you typically want to run
a micro-architect specific configuration and/or script as well.

-n
Do not run the commands from the startup-commands script files.

-no-copyright (advanced)
Do not print out copyright notices when starting Simics. See also the -verbose and -quiet
flags.

-no-dstc (advanced)
Force the D-STC to be disabled. See the -no-stc flag for more information.

-no-istc (advanced)
Force the I-STC to be disabled. See the -no-stc flag for more information.

-no-log
Turns off logging to .simics-log (or any other file specified by -log-file).

-no-stc (advanced)
Disable the Simics internal caches for memory operations and instruction fetches (STC:s)
that Simics uses to speed up the simulation.
Disabling the STC:s (this flag disables both the D-STC and the I-STC) can be useful for
debugging plug-ins such as cache models, since it will ensure that all memory accesses are
fully visible.
It is possible to selectively disable the data and instruction STC:s using the -no-dstc
and -no-istc flags, respectively. The STC:s are typically enabled by default, although in
some versions of Simics they may be disabled. See also the -stc flag.

-no-use-cygpath (advanced)
Disable Cygwin path translation. with this option set, Simics will not be able to load files
specified with Cygwin syntax, or to follow symlinks created by Cygwin. Windows host
only.

64

VIRTUTECH CONFIDENTIAL

2.1. Startup Flags

-no-win
Disable external windows. This will prevent Simics from opening target console windows
or any other external windows.
Disabling a target console only makes it invisible. It does not change its simulated functionality. Disabling it is useful when running in batch mode or when the target console
isnt needed, since it doesnt require access to a graphical environment, and running with
windows disabled is usually somewhat faster.

-obscure
Prints out a summary of advanced command-line flags and exit.

-p <file>
Run code from a Python file.

-product <productname> (advanced)


Specify the licensed product to use. The chosen product specifies which models and capabilities you can use with Simics.

-q or -quiet
Make Simics less verbose. This makes Simics output less information, which is useful for
batch execution. The opposite effect can be obtained with the -verbose flag. The quiet and
verbose flags turn off each other. If you want Simics to be really quiet you can also give the
-no-copyright flag.
Note that Simics is rather quiet by default, so this flag usually doesnt do all that much.

-readme
Print the Simics README information and exit.

-stall
Start the stall version of Simics if available. For more information about this version and its
limitations, see the Simics User Guide.

-stc (advanced)
Force the I-STC and D-STC to be enabled (default). See the -no-stc flag for more information. The STC:s are typically enabled by default, although in some versions of Simics they
may be disabled.

65

VIRTUTECH CONFIDENTIAL

2.1. Startup Flags

-use-cygpath (advanced)
Enable Cygwin path translation. This is the default, and enables Simics to understand Cygwin paths (/cygdrive/c/, for example), and translate them into native Windows form
(C:\).
The translation is done internally, and behaves similar to the Cygwin cygpath utility.
See the documentation for the SIM_native_path() API call for further details.

-v, -version, --version, -v-short


Print the Simics version number and exit. Other information printed include the compilers
used and the compile-time options applied to this specific build. -v-short only prints out
Simics version.

-verbose
Make Simics more verbose. This makes Simics give ample details about the execution. This
is the opposite of the -quiet flag. The quiet and verbose flags turn off each other. The
default is somewhere in the middle with a reasonable output level.
Setting the verbose flag can be useful to figure out problems that you may be having
with Simics. Some friendly warnings are not printed unless verbose is turned on.
Note that there will be quite a bit of information printed, most of which isnt usually
needed.

-werror (advanced)
Treat many warnings in Simics as errors and exit.

-workspace <workspace>
Specify the workspace directory to run Simics in.

-x <file>
Run commands from a script file. The script file is usually named with a .simics suffix.
If this flag is the last on the command line, -x may be omitted.

66

VIRTUTECH CONFIDENTIAL

Chapter 3

API
The Simics API is a set of functions that provide access to Simics functionality from script
languages in the frontend and from extensions, usually written in C/C++. The Simics API
is the same in all languages but the syntax of the types and functions declarations will of
course differ.

3.1

Frontend Exceptions

Whenever an error occurs in a Simics API function, that function will raise an exception. An
exception consists of an exception type and an error message.
The following exception types are defined in the Simics API:
typedef enum sim_exception {
SimExc_No_Exception,
SimExc_General,
SimExc_Arithmetic,
SimExc_Lookup,
SimExc_Attribute,
SimExc_IOError,
SimExc_Index,
SimExc_Memory,
SimExc_Inquiry,
SimExc_InquiryOutsideMemory,
SimExc_InquiryUnhandled,
SimExc_Overflow,
SimExc_Syntax,
SimExc_Type,
SimExc_ZeroDivision,
SimExc_RuntimeError,
SimExc_Break,
SimExc_PythonTranslation,
SimExc_IllegalValue,
SimExc_ObjectNotFound,
SimExc_InterfacedNotFound,

67

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

SimExc_AttrNotFound,
SimExc_AttrNotReadable,
SimExc_AttrNotWritable,
SimExc_NeedInteger,
SimExc_NeedFloating,
SimExc_NeedBoolean,
SimExc_NeedString,
SimExc_NeedList,
SimExc_NeedDict,
SimExc_NeedData,
SimExc_NeedObject,
SimExc_InternalRevexecBreak,
} sim_exception_t;

Note that API users writing in C must use SIM_clear_exception() and SIM_last_error()
since C does not support exceptions. In Python, the Simics API exceptions will trigger actual
Python exceptions, which you can capture using try ... except.
To raise exceptions from C, use SIM_frontend_exception(). From Python, use the normal
raise statement.

3.2

Simics API Data Types

68

VIRTUTECH CONFIDENTIAL

3.2.1

3.2. Simics API Data Types

Generic Data Types

addr_prof_iter_t
NAME
addr_prof_iter_t
DESCRIPTION
An address profile iterator will iterate over a specified portion of the address space in
some unspecified order, and return every nonzero counter value exactly once. When
done, it will return 0.

69

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

attr_value_t, attr_kind_t, attr_list_t, attr_data_t


NAME
attr_value_t, attr_kind_t, attr_list_t, attr_data_t
SYNOPSIS
struct attr_value {
attr_kind_t
kind;
union {
const char
*string;
integer_t
integer;
integer_t
boolean;
double
floating;
attr_list_t
list;
attr_dict_t
dict;
attr_data_t
data;
conf_object_t *object;
} u;
};

/*
/*
/*
/*
/*
/*
/*
/*

Sim_Val_String
Sim_Val_Integer
Sim_Val_Boolean
Sim_Val_Floating
Sim_Val_List
Sim_Val_Dict
Sim_Val_Data
Sim_Val_Object

typedef struct attr_value attr_value_t;


typedef enum {
Sim_Val_Invalid
Sim_Val_String
Sim_Val_Integer
Sim_Val_Floating
Sim_Val_List
Sim_Val_Data
Sim_Val_Nil
Sim_Val_Object
Sim_Val_Dict
Sim_Val_Boolean
} attr_kind_t;

=
=
=
=
=
=
=
=
=
=

0,
1,
2,
3,
4,
5,
6,
7,
8,
9

typedef struct attr_list attr_list_t;


struct attr_list {
integer_t
struct attr_value
};

size;
*vector; /* [size] */

typedef struct {
integer_t
size;
struct attr_dict_pair *vector; /* [size] */
} attr_dict_t;

70

*/
*/
*/
*/
*/
*/
*/
*/

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

typedef struct attr_dict_pair attr_dict_pair_t;


struct attr_dict_pair {
struct attr_value
struct attr_value
};

key;
value;

typedef struct attr_data attr_data_t;


struct attr_data {
integer_t
uint8
};

size;
*data; /* [size] */

DESCRIPTION
The attr_value_t is the type used for all values in the configuration system. All but the
Sim_Val_Data kind are stored as text when taking checkpoints.
The following table shows how the different types of values are to be interpreted in C
and Python, respectively:

Kind
Sim_Val_Invalid
Sim_Val_String
Sim_Val_Integer
Sim_Val_Boolean
Sim_Val_Floating
Sim_Val_List
Sim_Val_Dict
Sim_Val_Data
Sim_Val_Nil

C
n/a
const char
integer_t
integer_t
double
attr_list_t
attr_dict_t
attr_data_t
n/a

Python
raises exception
String
Integer
Bool
Float
List
Dictionary
Tuple
None

Use the SIM_make_attr_XXX functions to create these data types.


SEE ALSO
SIM_make_attr_integer, SIM_make_attr_boolean, SIM_make_attr_string, SIM_make_
attr_floating, SIM_make_attr_object, SIM_make_attr_invalid, SIM_make_attr_nil, SIM_
make_attr_list, SIM_alloc_attr_list, SIM_alloc_attr_dict

71

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

class_data_t, class_kind_t
NAME
class_data_t, class_kind_t
SYNOPSIS
typedef enum {
Sim_Class_Kind_Vanilla, /*
Sim_Class_Kind_Session, /*
*
Sim_Class_Kind_Pseudo
/*
} class_kind_t;

object is saved at checkpoints */


object is saved as part of a
session only */
object is never saved */

typedef struct class_data {


conf_object_t *(*new_instance)(parse_object_t *parse_obj);
int (*delete_instance)(conf_object_t *obj);
void (*finalize_instance)(conf_object_t *obj);
attr_value_t (*default_get_attr)(const char *name,
conf_object_t *obj,
attr_value_t *idx);
set_error_t (*default_set_attr)(const char *name,
conf_object_t *obj,
attr_value_t *val,
attr_value_t *idx);
conf_class_t
*parent;
const char
*description;
class_kind_t
kind;
} class_data_t;

DESCRIPTION
The class_data_t type is used when a new class is registered. The only mandatory
field is new_instance. Make sure that uninitialized fields are set to zero before the
structure is passed to SIM_register_class(). The optional finalize_instance function is
called when all attributes have been initialized in an object, and in all other objects
that are created at the same time.

72

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

conf_object_t
NAME
conf_object_t
SYNOPSIS
struct conf_object {
conf_class_t *class_data;
const char *name;
struct conf_object *queue;
lang_void *object_data;
int object_id;
int configured;
};

/*
/*
/*
/*
/*
/*

class data */
instance name */
queue */
internal to class implementation */
deprecated, do not use */
set when configuration ready */

typedef struct conf_object conf_object_t;

DESCRIPTION
All classes must inherit the conf_object_t type by including it first in the subclass
structure. Always initialize the conf_object_t part of an object structure using the
SIM_object_constructor() function.

73

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

data_or_instr_t
NAME
data_or_instr_t
SYNOPSIS
typedef enum {
Sim_DI_Instruction
Sim_DI_Data
} data_or_instr_t;

= 0,
= 1

DESCRIPTION
This type is used in several API functions and structures to indicate if data or instructions is used.

74

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

dbuffer_t
NAME
dbuffer_t
SYNOPSIS
typedef struct dbuffer dbuffer_t;

DESCRIPTION
This type is used to store blocks of binary data. It is optimized for fast adding and
removing of data, and does fast copying between buffers using copy-on-write semantics.

75

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

endianness_t
NAME
endianness_t
SYNOPSIS
typedef enum {
Sim_Endian_Target,
Sim_Endian_Host_From_BE,
Sim_Endian_Host_From_LE,
Sim_Endian_Host
/* Obsolete. Do not use */
} endianness_t;

DESCRIPTION
Specifies the endianness to use for certain memory operations. When Sim_Endian_
Target is used, the data from memory is copied without any endian conversion.
Sim_Endian_Host_From_BE and Sim_Endian_Host_From_LE copies data between
a big-endian, or little-endian, memory and a host buffer. Sim_Endian_Host is obsolete and should not be used.

76

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

event_handler_t
NAME
event_handler_t
SYNOPSIS
typedef void (*event_handler_t)(conf_object_t *obj,
lang_void *parameter);
typedef event_handler_t event_function_t;

DESCRIPTION
The event_handler_t data type is used for event handler functions. event_function_t
is a deprecated data type used for the same purpose.
SEE ALSO
SIM_step_clean, SIM_step_post, SIM_time_clean, SIM_time_clean

77

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

exception_type_t
NAME
exception_type_t
SYNOPSIS
typedef int exception_type_t;

DESCRIPTION
Accommodate all kinds of exceptions and pseudo-exceptions in a single type.

78

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

firewire_async_transfer_t
NAME
firewire_async_transfer_t
SYNOPSIS
typedef uint16 firewire_id_t;
typedef uint64 firewire_address_t;

typedef enum {
Firewire_Async_Write_Quadlet
Firewire_Async_Write_Block
Firewire_Async_Read_Quadlet
Firewire_Async_Read_Block
Firewire_Async_Lock
Firewire_Iso_Streaming
} firewire_transaction_type_t;
typedef enum {
Firewire_Lock_Maskswap
Firewire_Lock_Compareswap
Firewire_Lock_Fetchadd
Firewire_Lock_Littleadd
Firewire_Lock_Boundedadd
Firewire_Lock_Wrapadd
Firewire_Lock_Vendor
} firewire_async_lock_type_t;

=
=
=
=
=
=
=

=
=
=
=
=
=

0x0,
0x1,
0x4,
0x5,
0x9,
0xa

1,
2,
3,
4,
5,
6,
7

typedef struct {
firewire_id_t destination_id;
firewire_id_t source_id;
firewire_address_t destination_offset;
firewire_transaction_type_t transaction_type;
firewire_async_lock_type_t lock_type;
union {
uint32 *quadlet;
dbuffer_t *buf;
struct {
uint64 argument;
uint64 data;
uint64 *old_value;
} lock;
} data;
} firewire_async_transfer_t;

79

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

DESCRIPTION
firewire_async_transfer_t is the basic means of communication between firewire
devices. A device that whishes to communicate with another device prepares the request by filling in the necessary data and then sends it to the firewire bus which then
routes it to the destination. The destination device fills in any return data (e.g. return
value for read requests) and returns a response code.
destination_id is the 16-bit ID of the destination device; it is made up of a 10-bit bus
number and a 6-bit node ID (i.e. top 10 bits represent the bus number and the low 6
bits represent the node ID).
source_id is the ID of the device starting the transfer.
destination_offset is the register address to access within the destination node.
The transaction_type parameter specifies the type of request. The validity of the remaining elements of the firewire_async_transfer_t struct depends on what it
is set to.
If transaction_type is set to Firewire_Async_Read_Quadlet or Firewire_Async_
Write_Quadlet, then the data.quadlet must be a valid pointer.
If, on the other hand, transaction_type is set to Firewire_Async_Read_Block or
Firewire_Async_Write_Block, then data.buf must be set instead.
Finally, if transaction_type is set to Firewire_Async_Lock, then both lock_type and
the data.lock structure must be filled in. data.lock.argument contains the second argument for two argument lock functions. data.lock.data contains the first argument (and
the only one, in case of single argument lock functions). Lastly, data.lock.old_value is
set by the destination device, and will contain the old register value before updated
by the lock function.
Note: Firewire_Iso_Streaming is an invalid value for transaction_type in an asynchronous transfer.
SEE ALSO

80

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

firewire_iso_transfer_t
NAME
firewire_iso_transfer_t
SYNOPSIS
typedef enum {
Firewire_Async_Write_Quadlet
Firewire_Async_Write_Block
Firewire_Async_Read_Quadlet
Firewire_Async_Read_Block
Firewire_Async_Lock
Firewire_Iso_Streaming
} firewire_transaction_type_t;

=
=
=
=
=
=

0x0,
0x1,
0x4,
0x5,
0x9,
0xa

typedef enum {
Firewire_Tag_Unformatted = 0
/* All others currently reserved */
} firewire_iso_tag_t;
typedef struct {
firewire_transaction_type_t transaction_type;
firewire_iso_tag_t tag;
uint32 channel;
uint32 sync_code;
dbuffer_t *buf;
} firewire_iso_transfer_t;

DESCRIPTION
The firewire_iso_transfer_t transfer type is used for isochronous transfers.
They are simpler than asynchronous transfers and only work in one direction; they
do not return anything at all.
transaction_type must be set to Firewire_Iso_Streaming.
tag should be set to Firewire_Tag_Unformatted as there are currently no other
tags available.
channel should be set to the channel number this transfer is targetting. All devices listening to that channel number will receive this transfer. Allocation of channel number
should be done as specified in the firewire specification.
sync_code is an application specific field.
buf must be set to a buffer containg the data to transfer.

81

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

generic_transaction_t
NAME
generic_transaction_t
SYNOPSIS
struct generic_transaction {
logical_address_t
logical_address;
physical_address_t physical_address;
unsigned int
size;
/* size in bytes */
mem_op_type_t
type;
/* opaque */
unsigned int
atomic:1;
/* trans is part of an atomic
sequence of mem ops */
unsigned int

inquiry:1;

unsigned int

speculative:1;

unsigned int

ignore:1;

unsigned int
unsigned int

unsigned int

unsigned int

unsigned int

/* set to 1 to indicate inquiry


access */
/* access is speculative,
may not be committed */

/* set to 1 to signal no-op


(dont do access) */
may_stall:1;
/* when set to 0, any stall time
returned is ignored */
ma_no_reissue:1; /* if the transactions
instruction is rolled back
during a stall the memory
hierarchy should not be called
again */
reissue:1;
/* If this is 1, the transaction
will be reissued if a stall
greater than 0 is returned */
block_STC:1;
/* set to 1 iff anybody (MMU,
memory hierarchy, etc) wants
to see future accesses of this
type */
use_page_cache:1; /* internal - do not change */

unsigned int

inverse_endian:1; /* data transfer is


byte-reversed */

unsigned int

page_cross:2;

/* page crossing
0 - no crossing
1 - first access
2 - second access */

unsigned int
unsigned int

use_iostc:1;
iostc_blocked:1;

/* may be added to iostc */


/* was blocked from iostc */

ini_type_t
conf_object_t

ini_type;
*ini_ptr;

int

id;

exception_type_t

exception;

82

/* cpu, device, or other */


/* will be different for
simultaneously outstanding
transactions */
/* set if memhier throws

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types


exception, otherwise
Sim_PE_No_Exception */
/* user pointer that Simics never
touches */

void

*user_ptr;

char

*real_address;

/* data pointer for the


initiator */

int

space_count;

/* internal, # of memory space


transitions */

page_t *page;
page_t *tag_page;
unsigned tag_page_ofs;
physical_address_t
arc_type_t
int

stall_id_t

/* internal: page if RAM access */


/* internal: tag page if any */
/* internal: start of page in tag page */

source_physical_address; /* if arc_type
== Arc_Taken_Branch */
arc_type;
/* filled for fetches from
branch targets */
allocation_size; /* The size of the transaction
(including local part) only
valid if > 0 */
stall_id;

};
typedef struct generic_transaction generic_transaction_t;
typedef enum {
/* Arc caused by a regular branch instruction. */
Arc_None,
Arc_Taken_Branch,
Arc_Init,
Arc_Cache_Line_Start,
Arc_User,
Arc_Compensate,
Arc_Interrupt,
Arc_Page_Start,
/* Arm */
/* Arc caused by a software interrupt instruction. */
Arc_Exception_Counted,
/* Arc caused by some other exception than software interrupt. This
kind of branch arc is special in that it is not subtracted from the
number of times the instruction has been executed. */
Arc_Exception_Not_Counted,
/* Arc caused by an ALU instruction with pc as rd and the s bit set,
i.e, probably a return from an exception. */
Arc_Return_From_Exception,
/* Arc caused by the execution entering or leaving the interpreter. */
Arc_To_From_Interpreter,
/* Arc caused by a fall through from one storage page to the next. */
Arc_End_Of_Page,
/* Just to avoid comma problems with the ifdefs... */
Arc_Dummy
} arc_type_t;

83

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

typedef struct page page_t;

DESCRIPTION
Used to communicate information about memory operations. Not all info is complete/correct in all uses. For an example of how a memory hierarchy can use a memory transaction, see example memory hierarchy.
The transaction parameters are divided into a generic part shown below and an architecture specific part. The generic struct is included as the first component of the
memory_transaction_t struct, where the architecture-specific parameters are declared.
Normally the logical address and most control flags are set before the mmu is called.
The host_address is a host pointer to the start of the simulated memory the transaction
loads from or stores to.
real_address points to the destination for a load or source of a store operation.
The ini_ptr points to the object initiating the operation, this is either a processor or a
device depending on the ini_type field.
typedef enum {
Sim_Initiator_Illegal
Sim_Initiator_CPU
Sim_Initiator_CPU_V9
Sim_Initiator_CPU_UII
Sim_Initiator_CPU_UIII
Sim_Initiator_CPU_UIV
Sim_Initiator_CPU_UT1
Sim_Initiator_CPU_X86
Sim_Initiator_CPU_PPC
Sim_Initiator_CPU_Alpha
Sim_Initiator_CPU_IA64
Sim_Initiator_CPU_MIPS
Sim_Initiator_CPU_MIPS_RM7000
Sim_Initiator_CPU_MIPS_E9000
Sim_Initiator_CPU_ARM
Sim_Initiator_Device
Sim_Initiator_PCI_Device
Sim_Initiator_Cache

Sim_Initiator_Other
} ini_type_t;

=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=

0x0,
/* catch uninitialized */
0x1000,
0x1100,
0x1101,
0x1102,
0x1103,
0x1104, /* 1105, 1106 internal */
0x1200,
0x1300,
0x1400,
0x1500,
0x1600,
0x1601,
0x1602,
0x1700,
0x2000,
0x2010,
0x3000, /* The transaction is a cache
transaction as defined by
g-cache */
= 0x4000 /* initiator == NULL */

The mmu sets the physical_address and possibly set some more control flags. The memory hierarchy only reads the memory transaction to decide what stall time to return.
The block_STC bit functions as a veto flag for various modules. Any code can set
this to 1, but it should not be set to zero. When set to one, the next access to the same
STC line will be passed to the memory hierarchy.
The may_stall bit is set to zero for a few types of references where the simulator kernel
cannot deal with stalling. A memory hierarchy must return stall time zero when the
flag is clear. A memory hierarchy that wants to stall anyway should accumulate stall
time, and trigger the total stall time when a stall-capable access comes along (which is
84

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

not guaranteed to happen but most probably will). For atomic read/write instructions
(swap) any access may stall. If an instruction is stalled the entire instruction will be
executed after the stalltime is up. The may_stall bit may be cleared by the mmu.
The ignore flag can be set to 1 by the MMU. When set no memory operation will be
performed. This is useful for instructions coded as a memory operation but which
really only modify mmu internal state.
The inverse_endian flag may be changed by the MMU. If set, the data involved in the
access will be transferred in the opposite order. If not set, the bytes will be transferred
in the same order they occur in the memory space. A memory object should not set this
bit to a hard value, only toggle it. It may have been set by Simics for implementation
reasons.
The page_cross field is used to indicate when Simics has split a memory transaction in
two. It is normally 0, but when a transaction crosses an MMU page boundary, it will be
converted into two separate transactions, one for each accessed page. The addresses
and sizes are adjusted to confine them to their respective pages. The first of these
transaction will have page_cross set to 1, and the second will have it set to 2.
The atomic is read only. It may be read by any module. The atomic flag is set for any
data memory transaction caused by an atomic instruction; i.e., an instruction whose
memory references must be performed without any intervening memory references
(from other processors). The atomic sequence is a read followed by a write.
The use_page_cache is used internally. Do not change its value.
The user_ptr may be used to pass information between user defined modules that use
memory transactions. Simics does not use this field.
The type field should not be used directly; use the SIM_mem_op_is_xxx() predicate
functions, where xxx can be instruction, data, read, or write. SIM_set_mem_
op_type() function is used to set the type of a memory operation (see the mem_op_
type_t enum definition), and SIM_get_mem_op_type() is used to read it.
id is a unique number for all currently outstanding memory transactions. In an inorder version of Simics, this field is zero. See the SIM_get_unique_memory_transaction_
id() function.
When activated, instruction fetches set arc_type to indicate if the fetch is the result of
sequential execution or a branch. In case of a branch, the source_physical_address is set
to the address where the branch was made from.
SEE ALSO
mem_op_type_t

85

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

hap_flags_t
NAME
hap_flags_t
SYNOPSIS
typedef enum {
Sim_Hap_Simulation
Sim_Hap_Old_Format
Sim_Hap_Added
Sim_Hap_Deleted
Sim_Hap_Attr
} hap_flags_t;

=
=
=
=
=

1,
2,
4,
8,
16

/*
/*
/*
/*

internal
internal
internal
internal

use
use
use
use

*/
*/
*/
*/

DESCRIPTION
The hap_flags_t is used to specify additional information about a hap. Sim_Hap_
Simulation signals that the hap is used to model simulated behavior. All other
values are currently for Simics internal use only.
SEE ALSO
SIM_hap_add_callback

86

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

hap_type_t
NAME
hap_type_t
SYNOPSIS
typedef int hap_type_t;

DESCRIPTION
This data type is used to represent hap (occurrence) types. This is a runtime number
that may change between different Simics invocations. Haps are normally identified
by strings, but by calling SIM_hap_get_number(), a lookup from such a name to a
hap_type_t can be made.
SEE ALSO
SIM_hap_get_number, SIM_hap_add_type, SIM_for_all_hap_types

87

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

instr_type_t
NAME
instr_type_t
SYNOPSIS
typedef uint64 instr_type_t;
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define

It_Other
It_Alu
It_Relbranch
It_Load
It_Store
It_Sethi
It_Popc
It_Fp_Triop
It_Fp_Diop
It_Fp_Unop
It_Fp_Cmp
It_Swap
It_Vis
It_Flush
It_Call
It_Return
It_Trap
It_Trap_Ret
It_Idle
It_User_Decoder_Defined
It_Varbranch
It_Absbranch
It_Fstsw
It_Fp
It_Membar
It_Prefetch
It_Convert
It_Cmov
It_String
It_Mov
It_SSE
It_MMX
It_Cond

UINT64_C(0x1)
UINT64_C(0x2)
UINT64_C(0x4)
UINT64_C(0x8)
UINT64_C(0x10)
UINT64_C(0x20)
UINT64_C(0x40)
UINT64_C(0x80)
UINT64_C(0x100)
UINT64_C(0x200)
UINT64_C(0x400)
UINT64_C(0x800)
UINT64_C(0x1000)
UINT64_C(0x2000)
UINT64_C(0x4000)
UINT64_C(0x8000)
UINT64_C(0x10000)
UINT64_C(0x20000)
UINT64_C(0x40000)
UINT64_C(0x80000)
UINT64_C(0x100000) /*
UINT64_C(0x200000) /*
UINT64_C(0x400000) /*
UINT64_C(0x800000) /*
UINT64_C(0x1000000)
UINT64_C(0x2000000)
UINT64_C(0x4000000)
UINT64_C(0x8000000)
UINT64_C(0x10000000)
UINT64_C(0x20000000)
UINT64_C(0x40000000)
UINT64_C(0x80000000)
UINT64_C(0x100000000)

Branchtarget is dynamic
branch to an immidiate a
fstsw */
floating point instructi

/* Conditional, i.e it m
the sequentially next

DESCRIPTION
This encodes the type of an instruction, which is composed of ORing together the It_
constants.

88

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

instruction_error_t
NAME
instruction_error_t
SYNOPSIS
typedef enum instruction_error {
Sim_IE_OK = 0,
Sim_IE_Unresolved_Dependencies,
Sim_IE_Speculative,
Sim_IE_Stalling,
Sim_IE_Not_Inserted,
/* trying to execute or squash an
instruction that is inserted. */
Sim_IE_Exception,
/* (SPARC-V9 only) */
Sim_IE_Fault = Sim_IE_Exception,
Sim_IE_Trap,
/* (X86 only) Returned if a trap is
encountered */
Sim_IE_Interrupt,
/* (X86 only) Returned if an interrupt is
waiting and interrupts are enabled */
Sim_IE_Sync_Instruction,

/* Returned if sync instruction is


not allowd to execute */
Sim_IE_No_Exception,
/* Returned by SIM_instruction_
handle_exception */
Sim_IE_Illegal_Interrupt_Point,
Sim_IE_Illegal_Exception_Point,
Sim_IE_Illegal_Address,
Sim_IE_Illegal_Phase,
Sim_IE_Interrupts_Disabled,
Sim_IE_Illegal_Id,
Sim_IE_Instruction_Tree_Full,
Sim_IE_Null_Pointer,
Sim_IE_Illegal_Reg,
Sim_IE_Invalid,
Sim_IE_Out_of_Order_Commit,
Sim_IE_Retired_Instruction, /* try to squash a retiring instruction */
Sim_IE_Not_Committed,
/* Returned by SIM_instruction_end */
Sim_IE_Code_Breakpoint,
Sim_IE_Mem_Breakpoint,
Sim_IE_Step_Breakpoint,
Sim_IE_Hap_Breakpoint
} instruction_error_t;

DESCRIPTION
This type is used by the Micro Architecture Interface and documented in the Simics
Out Of Order Guide.

89

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

instruction_phase_t
NAME
instruction_phase_t
SYNOPSIS
typedef enum instruction_phase {
Sim_Phase_Initiated,
Sim_Phase_Fetched,
Sim_Phase_Decoded,
Sim_Phase_Executed,
Sim_Phase_Retired,
Sim_Phase_Committed,
Sim_Phases
} instruction_phase_t;

DESCRIPTION
This type is used by the Micro Architecture Interface and documented in the Simics
Out Of Order Guide.

90

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

instruction_status_t
NAME
instruction_status_t
SYNOPSIS
typedef enum {
Sim_IS_Waiting = 0x1,
Sim_IS_Ready
= 0x2,
Sim_IS_Stalling = 0x4,
Sim_IS_Executed = 0x8,
Sim_IS_Faulting = 0x10,
Sim_IS_Branch_Taken = 0x20,
Sim_IS_Trap

= 0x40,

Sim_IS_Interrupt = 0x80,

Sim_IS_Retired = 0x100
} instruction_status_t;

/* Not all inputs are ready */


/* All inputs are ready */
/* Waiting for memory to
finish the operation */
/* Done */
/* Has raised an exception a fault in x86 case */
/* The branch is taken for
branch instructions */
/* (x86) this instruction
generated a trap */
/* (x86) this instruction can not
be executed because the interrupt
must be taken first */
/* All stores are retired */

DESCRIPTION
This type is used by the Micro Architecture Interface and documented in the Simics
Out Of Order Guide.

91

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

int8, int16, int32, int64, uint8, uint16, uint32, uint64, intptr_t, uintptr_t, integer_t, uinteger_t
NAME
int8, int16, int32, int64, uint8, uint16, uint32, uint64, intptr_t, uintptr_t, integer_t,
uinteger_t
SYNOPSIS
These data types have host-dependent definitions. Use the api-help Simics command
line command to get their exact definition.
DESCRIPTION
These are basic integer data types defined by the Simics headers (unless defined by
system header files).
The intn types are defined to be signed integers of exactly n bits. The uintn types
are their unsigned counterparts.
intptr_t and uintptr_t are signed and unsigned integer types of a size that lets
any pointer to void be cast to it and then cast back to a pointer to void, and the result
will compare equal to the original pointer. This typically means that the two types are
32 bits wide on 32-bit machines and 64 bits on 64-bit machines.
integer_t and uinteger_t are the largest integers (signed and unsigned, respectively) used by the Simics API. They are currently defined to be 64 bits.

92

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

lang_void
NAME
lang_void
SYNOPSIS
typedef void lang_void;
typedef void typed_lang_void;

DESCRIPTION
In some places in the Simics API, arguments of type lang_void * are used. This data
type is used to allow transparent passing of any data type in the current programming
language as argument. In C, this works exactly like a void * and in Python, it is any
Python object. The type typed_lang_void is equivalent to lang_void in the Simics
API.
Typically, this is used by iterator functions in the API which take callback functions
as arguments. The callback function is later called with the lang_void data and the
object being iterated over.
SEE ALSO
SIM_for_all_processors, SIM_register_typed_attribute, SIM_hap_add_callback

93

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

log_object_t
NAME
log_object_t
SYNOPSIS
struct log_object {
conf_object_t
uint32
int

obj;
access_cnt;

/*
*
access_active; /*
*

io_trace_log_t *active_trace;
io_trace_t
int
int
int
int
int
int

number of IO transactions
performed */
set while an access is in
progress */

/* temporary log list during


* the access */

*trace_buffer;
trace_next;
trace_wrap;
trace_size;
log_level;
group_mask;
type_mask;

};
typedef struct log_object log_object_t;

DESCRIPTION
The log_object_t structure directly inherits conf_object_t, and it extends that
class with logging functionality. Use SIM_log_constructor() to initialize new instances.
The constructor automatically adds attributes to save and restore the members in the
log_object_t structure.
Since the internal representation of this structure may change between releases, classes
using the structure should not inspect the members directly (except for obj), but rather
use the attributes. New entries should be added with the SIM_log_message() function.
From C/C++ the SIM_log_. . . helper functions are recommended.
SEE ALSO
SIM_log_constructor, SIM_log_message

94

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

log_type_t
NAME
log_type_t
SYNOPSIS
typedef enum {
Sim_Log_Info,
Sim_Log_Error,
Sim_Log_Undefined,
Sim_Log_Spec_Violation,
Sim_Log_Target_Error,
Sim_Log_Unimplemented,
Sim_Log_Num_Types
} log_type_t;

//
//
//
//
//
//
//

Normal informational message


Simics error
use of undefined target behavior
target program violates the specification
error state in target (not in Simics)
not implemented in Simics
Do not use

DESCRIPTION
This type defines different log types that are used by the logging facility to categorise
messages.

95

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

logical_address_t, physical_address_t, generic_address_t, linear_address_t


NAME
logical_address_t, physical_address_t, generic_address_t, linear_address_t,
SYNOPSIS
These data types are target architecture independent, and always large enough to hold
64-bit addresses.
DESCRIPTION
These are integer data types defined to reflect the nature of the simulated architecture.
logical_address_t is an unsigned integer sufficiently large to contain logical (virtual) addresses on the target machine. define.
physical_address_t is an unsigned integer sufficiently large to contain physical
addresses on the target machine.
generic_address_t is defined to be the largest of the logical_address_t and
physical_address_t types.
linear_address_t is used for linear addresses used on x86 machines after segmentation but before paging.

96

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

map_info_t
NAME
map_info_t
SYNOPSIS
typedef struct map_info {
physical_address_t
physical_address_t
physical_address_t
int
uint8
int
swap_mode_t
} map_info_t;

base;
start;
length;
function;
priority;
align_size;
reverse_endian;

typedef enum swap_mode {


Sim_Swap_None
Sim_Swap_Bus
Sim_Swap_Bus_Trans
Sim_Swap_Trans
} swap_mode_t;

=
=
=
=

0,
1,
2,
3

DESCRIPTION
The map_info_t structure members have the following meaning:
base: The base address of the device mapping in the memory space.
start: The address inside the device memory space where the mapping starts.
length: The length of the mapped memory, in bytes.
function: Used to mapped the same object several times with different functionality. Corresponds to the function argument used when mapping devices
into a memory space.
If the map target does not support large accesses, then align-size can be set to
the maximum allowed size. Accesses spanning align boundaries will be split info
several smaller transactions. By default, the align size is set to 4 for port space
devices, 8 for other devices and 8192 for memory.
Mappings with an align size of 2, 4 and 8 may set the reverse_endian field to
a non zero value. This can be used to model bridges that perform byte swapping
on a specific bus width.

97

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

map_list_t
NAME
map_list_t
SYNOPSIS
typedef enum {
Sim_Map_Ram,
Sim_Map_Rom,
Sim_Map_IO,
Sim_Map_Port,
Sim_Map_Translate = 0x100, /* pseudo - do not use */
Sim_Map_Translate_To_Space,
Sim_Map_Translate_To_Ram,
Sim_Map_Translate_To_Rom
} map_type_t;
struct map_list {
map_type_t
conf_object_t
void
void
void
void
conf_object_t
conf_object_t
map_info_t

map_type;
*object;
*interface_ptr;
*target_interface;
*breakpoint_interface;
*bridge_interface;
*target_object;
*bridge;
map_info;

physical_address_t map_size; /* not constant, use with caution */


int

deleted;

/* internal flag - should always be 0 ! */

};
typedef struct map_list map_list_t;

DESCRIPTION
This data structure is used to pass information about the set of mappings a particular
address in an address space contains.

98

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

mem_op_type_t
NAME
mem_op_type_t
SYNOPSIS
typedef enum {
Sim_Trans_Load
Sim_Trans_Store
Sim_Trans_Instr_Fetch
Sim_Trans_Prefetch
Sim_Trans_Cache
} mem_op_type_t;

=
=
=
=
=

0,
Sim_Trn_Write,
Sim_Trn_Instr,
Sim_Trn_Prefetch | Sim_Trn_Control,
Sim_Trn_Control

DESCRIPTION
This enum is used to identify the type of a memory operation. The function SIM_
get_mem_op_type() returns the type of a generic_transaction_t, and SIM_set_
mem_op_type() is used to set it.
SEE ALSO
SIM_get_mem_op_type, SIM_set_mem_op_type, generic_transaction_t, SIM_get_mem_
op_type_name

99

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

pci_memory_transaction_t
NAME
pci_memory_transaction_t
SYNOPSIS
typedef struct pci_memory_transaction {
generic_transaction_t s;
/* The original_size field will probably be moved to the
generic_transaction_t structure in the future */
uint32 original_size;
int bus_address;
} pci_memory_transaction_t;

DESCRIPTION
The pci_memory_transaction_t is used for memory accesses initiated by PCI devices. It is based on a generic memory transaction struct, followed by two PCI specific
fields. The first, original_size, should not be accessed if possible since it may be changed
in future Simics versions. It specifies the size of the original memory access before possible split up. The bus_address field is the address of the initiating PCI device in a PCI
Type 1 address format, i.e. bus << 16 | device << 11 | function << 8.
A generic_transaction_t can be converted to a pci_memory_transaction_t
if the ini_type field has the value Sim_Initiator_PCI_Device.
SEE ALSO
generic_transaction_t, PCI_data_from_memory

100

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

processor_mode_t
NAME
processor_mode_t
SYNOPSIS
typedef enum {
Sim_CPU_Mode_User
= 0,
Sim_CPU_Mode_Supervisor = 1,
Sim_CPU_Mode_Hypervisor
} processor_mode_t;

DESCRIPTION
The processor_mode_t data type is used to specify if a CPU is running in user mode
or in a privileged mode (often called supervisor mode). For processor architectures
with several privilege levels, the non-user levels are all identified as Sim_CPU_Mode_
Supervisor.

101

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

processor_t
NAME
processor_t
SYNOPSIS
typedef struct conf_object processor_t;

DESCRIPTION
Equivalent to a conf_object_t, but usually used when the expected object is a processor.

102

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

pseudo_exceptions_t
NAME
pseudo_exceptions_t
SYNOPSIS
typedef enum {
Sim_PE_No_Exception = 1025,
Sim_PE_Code_Break,
Sim_PE_Silent_Break,
Sim_PE_Inquiry_Outside_Memory,
Sim_PE_Inquiry_Unhandled,
Sim_PE_IO_Not_Taken,
Sim_PE_IO_Error,
Sim_PE_Interrupt_Break,
Sim_PE_Interrupt_Break_Take_Now,
Sim_PE_Exception_Break,
Sim_PE_Hap_Exception_Break,
Sim_PE_Stall_Cpu,
Sim_PE_Locked_Memory,
Sim_PE_Return_Break,
Sim_PE_Instruction_Finished,
Sim_PE_Default_Semantics,
Sim_PE_Ignore_Semantics,
Sim_PE_Speculation_Failed,
Sim_PE_Invalid_Address,
Sim_PE_MAI_Return,
Sim_PE_Last
} pseudo_exceptions_t;

DESCRIPTION
Used to signal simulator exceptions for memory accesses. Memory access functions
in Simics use exception_type_t to return errors. Errors usually corresponds to
hardware exceptions, but in some cases additional return values are needed, and then
pseudo exceptions are used. The most common is Sim_PE_No_Exception, indicating that no error has occurred. Most pseudo exceptions are Simics internals, but some
are used by devices and memory spaces.
Sim_PE_No_Exception
No exception.
Sim_PE_IO_Not_Taken
Access to unmapped memory. In the PCI memory spaces interpreted as master
abort.
Sim_PE_IO_Error
Accessed device returned error. In the PCI memory spaces interpreted as target
abort.
103

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

Sim_PE_Inquiry_Outside_Memory
Same as Sim_PE_IO_Not_Taken, but for inquiry accesses.
Sim_PE_Inquiry_Unhandled
The accessed device does not support inquiry operations.
Sim_PE_Stall_Cpu
Timing model requested stall
Sim_PE_Default_Semantics
Used by ASI handlers on SPARC, and for user decoders to signal that the default
semantics should be run.
Sim_PE_Ignore_Semantics
Used by ASI handlers on SPARC to signal no update of destination registers.
Internal:
Sim_PE_Silent_Break, Sim_PE_Return_Break, Sim_PE_Interrupt_Break, Sim_PE_
Interrupt_Break_Take_Now, Sim_PE_Exception_Break, Sim_PE_Hap_Exception_
Break, Sim_PE_Instruction_Finished, Sim_PE_Invalid_Address, Sim_PE_Speculation_
Failed, Sim_PE_MAI_Return, Sim_PE_Last.

104

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

read_or_write_t
NAME
read_or_write_t
SYNOPSIS
typedef enum {
Sim_RW_Read = 0,
Sim_RW_Write = 1
} read_or_write_t;

DESCRIPTION
Whether a memory access is a read (from memory) or a write (to memory).

105

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

register_type_t
NAME
register_type_t
SYNOPSIS
typedef enum {
Sim_Reg_Type_Invalid,
Sim_Reg_Type_Integer,
Sim_Reg_Type_Floating,
Sim_Reg_Type_Control
} register_type_t;

DESCRIPTION
Defines several type of register banks.

106

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

set_error_t
NAME
set_error_t
SYNOPSIS
typedef enum {
Sim_Set_Ok,
Sim_Set_Need_Integer,
Sim_Set_Need_Floating,
Sim_Set_Need_String,
Sim_Set_Need_List,
Sim_Set_Need_Dict,
Sim_Set_Need_Boolean,
Sim_Set_Need_Data,
Sim_Set_Need_Object,
Sim_Set_Object_Not_Found,
Sim_Set_Interface_Not_Found,
Sim_Set_Illegal_Value,
Sim_Set_Illegal_Type,
Sim_Set_Illegal_Index,
Sim_Set_Attribute_Not_Found,
Sim_Set_Not_Writable,
Sim_Set_Ignored
} set_error_t;

DESCRIPTION
The SIM_set_attribute() family of functions and the set functions registered with the
SIM_register_typed_attribute() family of functions return a set_error_t value to
report success or failure.
Sim_Set_Ok
The attribute was successfully set.
Sim_Set_Need_Integer
Sim_Set_Need_Floating
Sim_Set_Need_String
Sim_Set_Need_List
Sim_Set_Need_Dict
Sim_Set_Need_Boolean
Sim_Set_Need_Data
Sim_Set_Need_Object
The value is of an illegal type for the attribute. Deprecated, use Sim_Set_Illegal_
Type instead.
Sim_Set_Object_Not_Found
The string value does not match any object name.?Deprecated, use attributes of object
type instead of string attributes referring to object names.
Sim_Set_Interface_Not_Found
The object value does not implement an interface required by the attribute.

107

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

Sim_Set_Illegal_Value
The value is of a legal type for the attribute, but outside the legal range.
Sim_Set_Illegal_Type
The value is of an illegal type for the attribute.
Sim_Set_Attribute_Not_Found
The object has no attribute with the specified name. Should only be returned by SIM_
set_attribute() family of functions, not by attribute set functions.
Sim_Set_Not_Writable
The attribute is read-only.
Sim_Set_Ignored
The value was accepted for backwards compatibility reasons, but was ignored. Should
only be returned by set_event_info() functions registered with the event-poster
interface.

108

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

simtime_t, cycles_t, pc_step_t, nano_secs_t


NAME
simtime_t, cycles_t, pc_step_t, nano_secs_t
SYNOPSIS
typedef integer_t simtime_t;
typedef simtime_t cycles_t;
typedef simtime_t pc_step_t;
typedef simtime_t nano_secs_t;

DESCRIPTION
These are the types used for keeping track of time in Simics.
cycles_t is used when the time is specified in cycles, pc_step_t is used when
the time is specified in steps, and simtime_t is used in places where it is unknown
whether the time is in steps or cycles. See the chapter The Simics Simulator in the
Simics User Guide for a discussion about the difference between steps and cycles.
nano_secs_t is used to express a number of nanoseconds (109 seconds).

109

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

socket_t
NAME
socket_t
SYNOPSIS
#ifdef _WIN32
typedef SOCKET socket_t;
#else
typedef int socket_t;
#endif /* !_WIN32 */

DESCRIPTION
This data type is used to identify a communication socket (typically TCP/IP). It is
defined to be an int on UNIX systems and SOCKET under Windows.

110

VIRTUTECH CONFIDENTIAL

3.2.2

3.2. Simics API Data Types

Architecture Specific Data Types

alpha_cpu_mode_t
NAME
alpha_cpu_mode_t
SYNOPSIS
typedef enum {
Sim_Alpha_Mode_Kernel
Sim_Alpha_Mode_Executive
Sim_Alpha_Mode_Supervisor
Sim_Alpha_Mode_User
} alpha_cpu_mode_t;

=
=
=
=

0,
1,
2,
3

DESCRIPTION
The alpha_cpu_mode_t corresponds to the current mode (CM) field of the processor
status register.

111

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

alpha_memory_transaction_t
NAME
alpha_memory_transaction_t
SYNOPSIS
typedef struct alpha_memory_transaction {
/* generic transaction */
generic_transaction_t s;
/* mode of the current alpha cpu */
int mode;
/* flags used by hw_ld / hw_st instructions */
palcode_memop_flags_t palcode_flags;
/* The pte is needed the Icache module, since it needs the ASM bit. */
uint64 pte;
/* if non-zero, the id needed to calculate the program counter */
intptr_t turbo_miss_id;
} alpha_memory_transaction_t;

DESCRIPTION
The s field contains generic information about memory operations (see generic_
transaction_t). The mode is the current mode of the alpha cpu. The values of
palcode_flags, used by hw_ld and hw_st instructions, see palcode_memop_flags_t
datatype.

112

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

arm_memory_transaction_t
NAME
arm_memory_transaction_t
SYNOPSIS
typedef struct arm_memory_transaction {
/* generic transaction */
generic_transaction_t s;
/* processor mode */
processor_mode_t mode;
int rotate;
/* if non-zero, the id needed to calculate the program counter */
intptr_t turbo_miss_id;
} arm_memory_transaction_t;

DESCRIPTION
This is the ARM specific memory transaction data structure. The generic data is stored
in the s field.
The mode field specifies the processor mode the MMU should assume when processing
the transaction. This is the same as the current mode of the processor, except that it is
always Sim_CPU_Mode_User for ldrbt, ldrt, strbt and strt instructions.

113

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

ia64_fp_register_t
NAME
ia64_fp_register_t
SYNOPSIS
typedef struct ia64_fp_register {
uint64
significand;
uint32
exponent;
unsigned sign:1;
unsigned nat:1;
} ia64_fp_register_t;

DESCRIPTION
Representation of an IA64 floating-point register.

114

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

ia64_interruption_type_t
NAME
ia64_interruption_type_t
SYNOPSIS
typedef enum {
IT_abort,
IT_interrupt,
IT_fault,
IT_trap
} ia64_interruption_type_t;

DESCRIPTION
Defines the different type of interruptions in the IA-64 architecture.

115

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

ia64_interruption_t
NAME
ia64_interruption_t
SYNOPSIS
typedef enum {
IA64_Abort_RESET = 1,
IA64_Abort_MCA,
IA64_Int_INIT,
IA64_Int_PMI,
IA64_Int_INT,
IA64_Fault_IR_unimplmented_data_address,
IA64_Fault_IR_data_nested_tlb,
IA64_Fault_IR_alternate_data_tlb,
IA64_Fault_IR_vhpt_data,
IA64_Fault_IR_data_tlb,
IA64_Fault_IR_data_page_not_present,
IA64_Fault_IR_data_nat_page_consumption,
IA64_Fault_IR_data_key_miss,
IA64_Fault_IR_data_key_permission,
IA64_Fault_IR_data_access_rights,
IA64_Fault_IR_data_access_bit,
IA64_Fault_IR_data_debug,
IA64_Fault_IA32_instruction_breakpoint,
IA64_Fault_IA32_code_fetch,
IA64_Fault_alternate_instruction_tlb,
IA64_Fault_vhpt_instruction,
IA64_Fault_instruction_tlb,
IA64_Fault_instruction_page_not_present,
IA64_Fault_instruction_nat_page_consumption,
IA64_Fault_instruction_key_miss,
IA64_Fault_instruction_key_permission,
IA64_Fault_instruction_access_rights,
IA64_Fault_instruction_access_bit,
IA64_Fault_instruction_debug,
IA64_Fault_IA32_instruction_length,
IA64_Fault_IA32_invalid_opcode,
IA64_Fault_IA32_instruction_intercept,
IA64_Fault_illegal_operation,
IA64_Fault_illegal_dependency,
IA64_Fault_break_instruction,
IA64_Fault_privileged_operation,
IA64_Fault_disabled_floating_point_register,
IA64_Fault_diabled_instruction_set_transition,
IA64_Fault_IA32_device_not_available,
IA64_Fault_IA32_fp_error,
IA64_Fault_register_nat_consumption,
IA64_Fault_reserved_register_field,
IA64_Fault_unimplemented_data_address,
IA64_Fault_privileged_register,
IA64_Fault_speculative_operation,
IA64_Fault_IA32_stack_exception,
IA64_Fault_IA32_general_protection,
IA64_Fault_data_nested_tlb,

116

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

IA64_Fault_alternate_data_tlb,
IA64_Fault_vhpt_data,
IA64_Fault_data_tlb,
IA64_Fault_data_page_not_present,
IA64_Fault_data_nat_page_consumption,
IA64_Fault_data_key_miss,
IA64_Fault_data_key_permission,
IA64_Fault_data_access_rights,
IA64_Fault_data_dirty_bit,
IA64_Fault_data_access_bit,
IA64_Fault_data_debug,
IA64_Fault_unaligned_data_reference,
IA64_Fault_IA32_alignment_check,
IA64_Fault_IA32_locked_data_reference,
IA64_Fault_IA32_segment_not_present,
IA64_Fault_IA32_divide_by_zero,
IA64_Fault_IA32_bound,
IA64_Fault_IA32_sse_numeric_error,
IA64_Fault_unsupported_data_reference,
IA64_Fault_floating_point,
IA64_Trap_unimplemented_instruction_address,
IA64_Trap_floating_point,
IA64_Trap_lower_privilege_transfer,
IA64_Trap_taken_branch,
IA64_Trap_single_step,
IA64_Trap_IA32_system_flag_intercept,
IA64_Trap_IA32_gate_intercept,
IA64_Trap_IA32_into,
IA64_Trap_IA32_breakpoint,
IA64_Trap_IA32_software_interrupt,
IA64_Trap_IA32_data_breakpoint,
IA64_Trap_IA32_taken_branch,
IA64_Trap_IA32_single_step
} ia64_interruption_t;

DESCRIPTION
These are the interruptions that can occur in an ia64 processor. The numbers correspond to the numbers given by the Intel architecture manuals. They are, among other
things, used by the Core_Exception hap.

117

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

ia64_iva_offset_t
NAME
ia64_iva_offset_t
SYNOPSIS
typedef enum {
IVA_vhpt_trans
IVA_instr_tlb
IVA_data_tlb
IVA_alt_instr_tlb
IVA_alt_data_tlb
IVA_data_nested
IVA_instr_key_miss
IVA_data_key_miss
IVA_dirty_bit
IVA_instr_acc_bit
IVA_data_acc_bit
IVA_break
IVA_ext_int
IVA_page_not_pres
IVA_key_perm
IVA_instr_acc_right
IVA_data_acc_right
IVA_gen_exc
IVA_dis_fp
IVA_nat_cons
IVA_spec
IVA_debug
IVA_unal_ref
IVA_unsup_data_ref
IVA_fp
IVA_fp_trap
IVA_lp_trans_trap
IVA_tak_br_trap
IVA_ss_trap
IVA_ia32_exc
IVA_ia32_intercept
IVA_ia32_interrupt
} ia64_iva_offset_t;

=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=

0x0000,
0x0400,
0x0800,
0x0c00,
0x1000,
0x1400,
0x1800,
0x1c00,
0x2000,
0x2400,
0x2800,
0x2c00,
0x3000,
0x5000,
0x5100,
0x5200,
0x5300,
0x5400,
0x5500,
0x5600,
0x5700,
0x5900,
0x5a00,
0x5b00,
0x5c00,
0x5d00,
0x5e00,
0x5f00,
0x6000,
0x6900,
0x6a00,
0x9b00

DESCRIPTION
The location of the Interruption Vector Table (IVT) is stored in the cr.iva control
register. These constants describe the offsets of the different vectors in the table.

118

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

ia64_memory_transaction_t
NAME
ia64_memory_transaction_t
SYNOPSIS
typedef struct ia64_memory_transaction {
/* generic transaction */
generic_transaction_t s;
int privilege_level;
int speculative;
int advanced;
int non_access;
uint16 isr_code;
int rse;
int rse_ir;
/* "Output" */
int deferred_fault;
} ia64_memory_transaction_t;

DESCRIPTION
The s field contains generic information about memory operations (see generic_
transaction_t).
The privilege_level is the current privilege level (0-3) of the cpu.
The speculative flag indicates that the memory operation is caused by control speculation.
The advanced flag indicates an advanced load, i.e. that the memory operation is caused
by data speculation.
The isr_code is used to help the MMU fill in the correct values in the cr.isr register on a
fault.
The rse flag indicates that the memory operation is caused by a mandatory RSE operation, and the rse_ir whether the current frame is incomplete. This is used to raise the
appropriate faults on failure.
The deferred_fault is set by the MMU when a speculative memory operation fails.

119

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

mips_memory_transaction_t
NAME
mips_memory_transaction_t
SYNOPSIS
typedef struct mips_memory_transaction {
/* generic transaction */
generic_transaction_t s;
/* Cache coherency, values as the C field in EntryLo0 and EntryLo1. */
unsigned int cache_coherency:3;
/* if non-zero, the id needed to calculate the program counter */
intptr_t turbo_miss_id;
} mips_memory_transaction_t;

DESCRIPTION
This is the MIPS specific memory transaction data structure. The generic data is stored
in the s field.
The cache_coherency field specifies the cache coherency attribute of the memory transaction, as defined by the C field of the EntryLo0 and EntryLo1 coprocessor 0 registers.

120

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

palcode_memop_flags_t
NAME
palcode_memop_flags_t
SYNOPSIS
typedef enum palcode_memop_flags {
/* nothing special */
Pal_memop_normal
= 0x0000,
/* cleared: the effective address is virtual
set:
the effective address is physical */
Pal_memop_physical = 0x0001,
/* cleared: use current mode for access checks
set:
use alt mode for access checks */
Pal_memop_altmode = 0x0002,
/* cleared: check fault-on-read (FOR) and read access violations
set:
check FOR, fault-on-write and read/write violations */
Pal_memop_wrtck
= 0x0004,
/* cleared: length is longword
set:
length is quadword */
Pal_memop_quadword = 0x0008,
/* cleared: normal fetch
set:
flags a virtual pte fetch */
Pal_memop_vpte
= 0x0010,
/* cleared: normal operation
set:
load-locked version of hw_ld */
Pal_memop_lock
= 0x0020,
/* cleared: normal operation
set:
store-conditional version of hw_st */
Pal_memop_cond
= 0x0040
} palcode_memop_flags_t;

DESCRIPTION
PALcode uses hw_ld and hw_st instructions to access memory outside of the realm of
normal Alpha memory management. These flags are used in such operations.

121

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

ppc_mem_instr_origin_t
NAME
ppc_mem_instr_origin_t
SYNOPSIS
typedef enum {
/* Normal load or store instructions */
Normal_Load_Store = 0,
/* No data touched by the load/store will be placed in cache */
Caching_Inhibited,
Instr_Multiple,
Instr_String,

/* load/store multiple */
/* load/store string */

Instr_Altivec_Element,

/* Altivec load/store element */

/* Data cache manipulations */


Instr_dcbt,
/* data cache block touch */
Instr_dcbst,
/* data cache block store */
Instr_dcbtst,
/* data cache block touch for store */
Instr_dcbi,
/* data cache block invalidate */
Instr_dcbf,
/* data cache block flush */
Instr_dcbfl,
/* data cache block flush local */
Instr_dcba,
/* data cache block allocate */
Instr_dcbz,
/* data cache block to zero */
/* Instruction cache manipulations */
Instr_icbi,
/* instruction cache block invalidate */
/* Data stream (Altivec) manipulations */
Instr_dst,
/* data stream touch
Instr_dstt,
/* data stream touch
Instr_dstst,
/* data stream touch
Instr_dststt,
/* data stream touch

*/
transient */
for store */
for store transient */

/* e500 cache lock apu instructions */


Instr_dcblc_l1,
/* data cache block lock clear (L1) */
Instr_dcblc_l2,
/* data cache block lock clear (L2) */
Instr_dcbtls_l1,
/* data cache block touch and lock set (L1)*/
Instr_dcbtls_l2,
/* data cache block touch and lock set (L1)*/
Instr_dcbtstls_l1,
/* data cache block touch for store and lock
set (L1)*/
Instr_dcbtstls_l2,
/* data cache block touch for store and lock
set (L1)*/
Instr_icblc_l1,
/* instruction cache block clear (L1) */
Instr_icblc_l2,
/* instruction cache block clear (L2) */
Instr_icbtls_l1,
/* instruction cache block touch and lock
set (L1) */
Instr_icbtls_l2,
/* instruction cache block touch and lock
set (L1) */
/* Other loads/stores or cache affecting instructions */
Instr_lwarx,

122

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

Instr_stwcx,
Instr_ldarx,
Instr_stdcx,
Instr_lq,
Instr_stq,
/* Other cache affecting instructions */
Instr_sync,
Instr_eieio,
Instr_ecowx,
Instr_eciwx,
Instr_tlbie,
Instr_tlbsync,
Instr_isync,
Instr_lfdp,
Instr_stfdp
} ppc_mem_instr_origin_t;

/* Load Floating point Double Pair */


/* Store Floating point Double Pair */

DESCRIPTION
List of special memory operations that can be send by a PPC processor.

123

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

ppc_memory_transaction_t
NAME
ppc_memory_transaction_t
SYNOPSIS
typedef struct ppc_memory_transaction {
/* generic transaction */
generic_transaction_t s;
processor_mode_t mode;
ppc_mem_instr_origin_t instr_origin;
logical_address_t ea_origin;
uint8 wimg;
uint8 alignment;
/* cache operations may flag this to cause prefetches to be no-ops */
uint8 inhibit_exception;
intptr_t turbo_miss_id;
} ppc_memory_transaction_t;

DESCRIPTION
This is the PPC specific memory transaction data structure. The generic data is stored
in the s field.
The current processor mode when generating this transaction is stored in the mode
field.
The type of instruction generating the memory transactions is provided by the instr_
origin field. Note that it is mainly provided for special memory accesses like cache
block operations..
The wimg field is filled in by the MMU with the corresponding WIMG bits during the
translation.
The alignment field contains the size on which the transaction is required to be aligned.
The inhibit_exception field is set for operations that should be ignored if triggering an
exception.

124

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

register_id_t
NAME
register_id_t
SYNOPSIS
typedef uint32 register_id_t;
typedef enum {
V9_Reg_Id_R0
= 0,
/* R1 - R31 */
V9_Reg_Id_F0
= 32,
/* F1 - F63 */
V9_Reg_Id_FCC0 = 96,
V9_Reg_Id_FCC1 = 97,
V9_Reg_Id_FCC2 = 98,
V9_Reg_Id_FCC3 = 99,
V9_Reg_Id_CC
= 100,
V9_Reg_Id_PC
= 101,
V9_Reg_Id_NPC = 102,
V9_Reg_Id_AEXC = 103, /* part
V9_Reg_Id_CEXC = 104, /* part
V9_Reg_Id_FTT = 105, /* part
V9_Reg_Id_DUDL = 106, /* part
V9_Reg_Id_FEF = 107, /* part
V9_Reg_Id_Y
= 108,
V9_Reg_Id_GSR = 109,
V9_Reg_Id_CANSAVE = 110,
V9_Reg_Id_CANRESTORE = 111,
V9_Reg_Id_OTHERWIN = 112,
V9_Reg_Id_CLEANWIN = 113,
V9_Reg_Id_CWP = 114,
V9_Reg_Id_ASI = 115,
V9_Reg_Id_Not_Used = 124,
V9_Reg_Id_Sync = 125
} v9_register_id_t;
typedef enum {
X86_Reg_Id_Rax
X86_Reg_Id_Rcx
X86_Reg_Id_Rdx
X86_Reg_Id_Rbx
X86_Reg_Id_Rsp
X86_Reg_Id_Rbp
X86_Reg_Id_Rsi
X86_Reg_Id_Rdi

=
=
=
=
=
=
=
=

0,
1,
2,
3,
4,
5,
6,
7,

X86_Reg_Id_R8
X86_Reg_Id_R9
X86_Reg_Id_R10
X86_Reg_Id_R11
X86_Reg_Id_R12
X86_Reg_Id_R13
X86_Reg_Id_R14

=
=
=
=
=
=
=

8,
9,
10,
11,
12,
13,
14,

125

of
of
of
of
of

fsr */
fsr */
fsr */
fprs */
fprs */

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

X86_Reg_Id_R15 = 15,
X86_Reg_Id_Xmm0
X86_Reg_Id_Xmm1
X86_Reg_Id_Xmm2
X86_Reg_Id_Xmm3
X86_Reg_Id_Xmm4
X86_Reg_Id_Xmm5
X86_Reg_Id_Xmm6
X86_Reg_Id_Xmm7

=
=
=
=
=
=
=
=

16,
17,
18,
19,
20,
21,
22,
23,

X86_Reg_Id_Xmm8
X86_Reg_Id_Xmm9
X86_Reg_Id_Xmm10
X86_Reg_Id_Xmm11
X86_Reg_Id_Xmm12
X86_Reg_Id_Xmm13
X86_Reg_Id_Xmm14
X86_Reg_Id_Xmm15

=
=
=
=
=
=
=
=

24,
25,
26,
27,
28,
29,
30,
31,

X86_Reg_Id_Mm0
X86_Reg_Id_Mm1
X86_Reg_Id_Mm2
X86_Reg_Id_Mm3
X86_Reg_Id_Mm4
X86_Reg_Id_Mm5
X86_Reg_Id_Mm6
X86_Reg_Id_Mm7

=
=
=
=
=
=
=
=

32,
33,
34,
35,
36,
37,
38,
39,

X86_Reg_Id_PC

= 40,

/* this is RIP */

X86_Reg_Id_CF
X86_Reg_Id_DST
X86_Reg_Id_AF
X86_Reg_Id_ZF
X86_Reg_Id_SF
X86_Reg_Id_OF
X86_Reg_Id_DF

=
=
=
=
=
=
=

/* integer condition code flags */


/* DST field used to cache PF flag */

41,
42,
43,
44,
45,
46,
47,

X86_Reg_Id_EFLAGS = 48, /* the whole 32 bits eflags */


X86_Reg_Id_C0 = 49,
X86_Reg_Id_C1 = 50,
X86_Reg_Id_C2 = 51,
X86_Reg_Id_C3 = 52,
X86_Reg_Id_Top = 53,
X86_Reg_Id_Not_Used,
X86_Reg_Id_Local_Max
} x86_register_id_t;

/* floating point cc flags */

/* floating point stack top */


/* dummy number that can be used */
/* keep this one last */

DESCRIPTION

126

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

For SPARC the enum v9_register_id_t can be used to refer to the different registers. The following macros also exists to generate the register id for integer and
floating point registers:
#define V9_REG_ID_RN(n)
(V9_Reg_Id_R0+(n))
#define V9_REG_ID_FN(n)
(V9_Reg_Id_F0+(n))
#define V9_REG_ID_FCCN(n) (V9_Reg_Id_FCC0+(n))

For x86 the x86_register_id_t can be used to refer to the different registers.

127

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

v9_exception_type_t
NAME
v9_exception_type_t
SYNOPSIS
typedef enum v9_exception_type {
Power_On_Reset = 0x001,
Watchdog_Reset = 0x002,
Externally_Initiated_Reset = 0x003,
Software_Initiated_Reset = 0x004,
Red_State_Exception = 0x005,
Instruction_Access_Exception = 0x008,
Instruction_Access_MMU_Miss = 0x009,
Instruction_Access_Error = 0x00a,
Illegal_Instruction = 0x010,
Privileged_Opcode = 0x011,
Unimplemented_Ldd = 0x012,
Unimplemented_Std = 0x013,
Fp_Disabled = 0x020,
Fp_Exception_Ieee_754 = 0x021,
Fp_Exception_Other = 0x022,
Tag_Overflow = 0x023,
Clean_Window = 0x024,
Division_By_Zero = 0x028,
Internal_Processor_Error = 0x029,
Data_Access_Exception = 0x030,
Data_Access_MMU_Miss = 0x031,
Data_Access_Error = 0x032,
Data_Access_Protection = 0x033,
Mem_Address_Not_Aligned = 0x034,
Lddf_Mem_Address_Not_Aligned = 0x035,
Stdf_Mem_Address_Not_Aligned = 0x036,
Privileged_Action = 0x037,
Ldqf_Mem_Address_Not_Aligned = 0x038,
Stqf_Mem_Address_Not_Aligned = 0x039,

Async_Data_Error = 0x040,
Interrupt_Level_1 = 0x41,
Interrupt_Level_2 = 0x42,
Interrupt_Level_3 = 0x43,
Interrupt_Level_4 = 0x44,
Interrupt_Level_5 = 0x45,
Interrupt_Level_6 = 0x46,

128

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

Interrupt_Level_7 = 0x47,
Interrupt_Level_8 = 0x48,
Interrupt_Level_9 = 0x49,
Interrupt_Level_10 = 0x4a,
Interrupt_Level_11 = 0x4b,
Interrupt_Level_12 = 0x4c,
Interrupt_Level_13 = 0x4d,
Interrupt_Level_14 = 0x4e,
Interrupt_Level_15 = 0x4f,

Interrupt_Vector = 0x60,
PA_Watchpoint = 0x61,
VA_Watchpoint = 0x62,
Corrected_ECC_Error = 0x63,
Fast_Instruction_Access_MMU_Miss = 0x64,
Fast_Data_Access_MMU_Miss = 0x68,
Fast_Data_Access_Protection = 0x6c,
Fast_ECC_Error = 0x70,

Spill_0_Normal = 0x080,
Spill_1_Normal = 0x084,
Spill_2_Normal = 0x088,
Spill_3_Normal = 0x08c,
Spill_4_Normal = 0x090,
Spill_5_Normal = 0x094,
Spill_6_Normal = 0x098,
Spill_7_Normal = 0x09c,
Spill_0_Other = 0x0a0,
Spill_1_Other = 0x0a4,
Spill_2_Other = 0x0a8,
Spill_3_Other = 0x0ac,
Spill_4_Other = 0x0b0,
Spill_5_Other = 0x0b4,
Spill_6_Other = 0x0b8,
Spill_7_Other = 0x0bc,
Fill_0_Normal = 0x0c0,
Fill_1_Normal = 0x0c4,
Fill_2_Normal = 0x0c8,
Fill_3_Normal = 0x0cc,
Fill_4_Normal = 0x0d0,

129

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

Fill_5_Normal = 0x0d4,
Fill_6_Normal = 0x0d8,
Fill_7_Normal = 0x0dc,
Fill_0_Other = 0x0e0,
Fill_1_Other = 0x0e4,
Fill_2_Other = 0x0e8,
Fill_3_Other = 0x0ec,
Fill_4_Other = 0x0f0,
Fill_5_Other = 0x0f4,
Fill_6_Other = 0x0f8,
Fill_7_Other = 0x0fc,
Trap_Instruction = 0x100,
Last_Real_Exception = 0x200
} v9_exception_type_t;

DESCRIPTION
The v9_exception_type_t lists all hardware exceptions defined in the UltraSPARC
architecture. This type is used in some cases where functions take the generic exception_
type_t.

130

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

v9_memory_transaction_t
NAME
v9_memory_transaction_t
SYNOPSIS
typedef struct v9_memory_transaction {
generic_transaction_t s;
unsigned
cache_virtual:1;
unsigned
cache_physical:1;
unsigned
side_effect:1;
unsigned
priv:1;
unsigned
red:1;
unsigned
hpriv:1;
unsigned
henb:1;
uint8
address_space;
uint8
prefetch_fcn;
sparc_access_type_t
access_type;
/* if non-zero, the id needed to calculate the program counter */
intptr_t turbo_miss_id;
} v9_memory_transaction_t;

DESCRIPTION
This is the Sparc specific memory transaction data structure. The generic data is stored
in the s field.
The cache_virtual bit is set if this memory transaction corresponds to a TLB entry that
has the CV (cache virtual) bit set. Conversely, the cache_physical bit corresponds to the
TLB entrys CP (cache physical) bit and the side_effect bit corresponds to the E bit.
The priv bit is cleared if the memory transaction comes from one of the USER ASIs.
The red bit is set if the memory transaction was generated by a CPU which has the RED
bit in the %pstate register set.
SPARC-V9 uses an address space identifier (ASI) to qualify memory access instructions. This is stored in the address_space field; it will be set to ASI_PRIMARY for normal memory transactions.
The prefetch_fcn field is only set for memory transactions of type Sim_Trans_Prefetch,
for which it contains the fcn field of the prefetch instruction.
The access_type field describes the type of the access, as defined in the sparc_access_
type_t enum. For example if a load is for a floating point register or a standard
integer one.

131

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

x86_memory_transaction_t
NAME
x86_memory_transaction_t, p2_memory_transaction_t
SYNOPSIS
typedef struct x86_memory_transaction {
generic_transaction_t s;
/* Superclass */
processor_mode_t
mode;
linear_address_t
linear_address;
uint16
selector;
/* Segment selector */
unsigned
access_linear:1; /* Linear access */
unsigned
io:1;
/* I/O (port) access */
unsigned
fault_as_if_write:1;
x86_access_type_t
access_type;
x86_memory_type_t
pat_type;
x86_memory_type_t
mtrr_type;
x86_memory_type_t
effective_type;
int
sequence_number; /* used for -stall */
/* if non-zero, the id needed to calculate the program counter */
intptr_t turbo_miss_id;
} x86_memory_transaction_t;
typedef struct x86_memory_transaction p2_memory_transaction_t;

DESCRIPTION
The s field contains generic information about memory operations (see generic_
transaction_t).
The mode is the current mode (user or supervisor) of the cpu.
The linear_address contains the address for transactions with linear addresses.
The access_linear flag is set for all transactions with linear addresses.
The access_type field contains the type of the transaction.
typedef enum x86_access_type {
X86_Other,
X86_Vanilla,
X86_Instruction,
X86_Clflush,
X86_Fpu_Env,
X86_Fpu_State,
X86_Idt,
X86_Gdt,
X86_Ldt,
X86_Task_Segment,
X86_Task_Switch,
X86_Far_Call_Parameter,
X86_Stack,

/* Access that is not categorized (rare) */


/* "Normal" access, such as a MOV to/from
memory. X86_Vanilla operations use the STCs.
/* Instruction fetch */
/* Cache line flush from CLFLUSH */
/* Floating point environment (FLDENV, FNSTENV,
environment part of FRSTOR, FNSAVE) */
/* Register part of FRSTOR and FNSAVE */
/* Interrupt descriptor table */
/* Global descriptor table */
/* Local descriptor table */
/* Task segment */
/* Task save/restore during a task switch */
/* Parameter copy in far call */
/* Stack accesses during complex control flow

132

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

X86_Pml4,
X86_Pdp,
X86_Pd,
X86_Pt,
X86_Sse,
X86_Fpu,

/*
/*
/*
/*
/*
/*

X86_Access_Simple,
X86_Microcode_Update,

/*
/*

X86_Non_Temporal,
X86_Prefetch_3DNow,
X86_Prefetchw_3DNow,
X86_Prefetch_T0,
X86_Prefetch_T1,
X86_Prefetch_T2,
X86_Prefetch_NTA,
X86_Loadall,
X86_Atomic_Info,

/*
/*
/*
/*
/*
/*
/*
/*
/*

X86_Cmpxchg16b,
X86_Smm_State
} x86_access_type_t;

/*
/*

operations (exception handling, etc.) */


Page map level 4 table */
Page directory pointer table */
Page directory table */
Page table */
16-byte operations to/from SSE registers */
10-byte and 16-byte operations to/from
X87 registers */
Device accesses (DMA) */
Data read when performing a processor
microcode update */
Non temporal store (example: MOVNTI) */
Prefetch with PREFETCH (3DNow!) */
Prefetch with PREFETCHW (3DNow!) */
Prefetch with PREFETCHT0 (SSE) */
Prefetch with PREFETCHT1 (SSE) */
Prefetch with PREFETCHT2 (SSE) */
Prefetch with PREFETCHNTA (SSE) */
State read by the loadall instruction */
Transaction sent with size 0 to
finish an atomic transaction */
CMPXCHG16B instruction */
SMM state structure */

The effective memory type for the access is contained in effective_type. The MMU calculates the effective memory type using both the PAT type (in pat_type) and the MTRR
type (in mtrr_type).
typedef enum {
X86_None,
X86_Strong_Uncacheable,
X86_Uncacheable,
X86_Write_Combining,
X86_Write_Through,
X86_Write_Back,
X86_Write_Protected
} x86_memory_type_t;

133

/*
/*
/*
/*
/*
/*

UC */
UC- */
WC */
WT */
WB */
WP */

VIRTUTECH CONFIDENTIAL

3.2. Simics API Data Types

x86_sync_instruction_type_t
NAME
x86_sync_instruction_type_t
SYNOPSIS
typedef enum {
X86_SFence = 1,
X86_LFence = 2,
X86_MFence = 3
} x86_sync_instruction_type_t;

DESCRIPTION
Type of synchronisation instruction for x86. Used in the Core_Sync_Instruction
hap.

134

VIRTUTECH CONFIDENTIAL

3.2.3

3.2. Simics API Data Types

Internal Data Types

addr_type_t, assoc_table_t, attr_initiator_t, attr_set_t, binary_heap_compare_func_t,


binary_heap_t, byte_string_t, struct dmacache, event_queue_type_t, for_all_assoc_
table_func_t, ht_entry_t, ht_for_each_entry_func_t, ht_iter_t, ht_sorted_entries_func_
t, ht_table_t, icode_mode_group_t, icode_mode_t, icode_page_t, image_spage_t, instruction_
trace_callback_t, interface_list_t, intervals_func_t, interval_set_t, interval_set_iter_
t, io_trace_t, mmu_error_info_t, os_time_t, struct os_tm, page_info_t, prof_data_t,
prof_data_address_t, prof_data_counter_t, prof_data_func_t, prof_data_iter_t, radix_
bottom_t, radix_middle_t, radix_top_t, rand_state_t, range_node_t, set_error_t, sim_
ic_type_t, simics_internal_counters_t, simics_symbol_lookup_t, source_python_func_
t, source_python_module_func_t, st_do_all_func_t, st_for_all_func_t, enum st_lookup_
approx_result, stall_id_num_t, stall_id_t, state_save_kind_t, strbuf_t, string_tree_t,
struct simcontext, struct symtable, table_t, table_func_t, turbo_exit_case_t, struct
ucontext, vtmem_inform_opcode_t,
NAME
addr_type_t, assoc_table_t, attr_set_t, attr_initiator_t, binary_heap_compare_func_t,
binary_heap_t, byte_string_t, struct dmacache, struct ether_addr, for_all_assoc_table_
func_t, ht_entry_t, ht_for_each_entry_func_t, ht_iter_t, ht_sorted_entries_func_t, ht_
table_t, icode_mode_group_t, icode_mode_t, icode_page_t, image_spage_t, instruction_
trace_callback_t, interface_list_t, intervals_func_t, interval_set_t, interval_set_iter_t,
io_trace_t, io_trace_log_t, mmu_error_info_t, os_time_t, struct os_tm, page_info_t,
prof_data_t, prof_data_address_t, prof_data_counter_t, prof_data_func_t, prof_data_
iter_t, radix_bottom_t, radix_middle_t, radix_top_t, rand_state_t, range_node_t, set_
error_t, sim_ic_type_t, simics_internal_counters_t, simics_symbol_lookup_t, source_
python_func_t, source_python_module_func_t, st_do_all_func_t, st_for_all_func_t, enum
st_lookup_approx_result , stall_id_num_t, stall_id_t, state_save_kind_t, strbuf_t, string_
tree_t, struct simcontext, struct symtable, table_t, table_func_t, turbo_exit_case_t, struct
ucontext, vtmem_inform_opcode_t
DESCRIPTION
These data types are exported for Simics internal use.

135

VIRTUTECH CONFIDENTIAL

3.2.4

3.3. Simics API Functions

Simics Types in Python

When writing code in Python, almost all Simics API functions can be used. Since not all
C/C++ types are available in Python, Simics supplies the following special type mappings.
C/C++
attr_value_t, kind
attr_value_t, kind
attr_value_t, kind
attr_value_t, kind
attr_value_t, kind
attr_value_t, kind
attr_value_t, kind
attr_value_t, kind
attr_value_t, kind
conf_class_t *
conf_object_t *

3.3
3.3.1

==
==
==
==
==
==
==
==
==

Sim_Val_String
Sim_Val_Integer
Sim_Val_Floating
Sim_Val_List
Sim_Val_Data
Sim_Val_Nil
Sim_Val_Object
Sim_Val_Dict
Sim_Val_Boolean

Python
str (a Python string)
int or long
float
list
tuple of integers (bytes)
None
An object from the conf namespace.
dict
bool
str (name of class)
An object from the conf namespace

Simics API Functions


Complete List

MM_FREE
MM_MALIGN
MM_MALLOC
MM_REALLOC
MM_STRDUP
PCIE_send_message
PCI_add_config_register
PCI_bridge_default_access_not_taken
PCI_bridge_default_interrupt_lowered
PCI_bridge_default_interrupt_raised
PCI_bridge_default_system_error
PCI_bridge_init
PCI_bridge_map_setup
PCI_config_register_name
PCI_config_register_size
PCI_configuration_access
PCI_data_from_memory
PCI_data_to_memory

free vtmem object


allocate aligned memory
allocate memory object
reallocate memory
duplicate a string
send a message to root complex
add device specific configuration register
default handling of unclaimed accesses
default handling of secondary interrupts
default handling of secondary interrupts
default system error handling for bridges
Initialize generic PCI bridge device
Set optional memory mapping attributes
return name of a configuration register
return size of a configuration register
access the configuration space
read/write raw data from memory space
read/write raw data from memory space

136

VIRTUTECH CONFIDENTIAL
PCI_default_configuration_read_access
PCI_default_configuration_write_access
PCI_default_device_reset
PCI_device_init
PCI_get_bus_address
PCI_get_config_register_mask
PCI_get_map_always_on
PCI_get_map_base
PCI_get_map_enable
PCI_get_map_ignore_command
PCI_get_map_offset
PCI_get_map_size
PCI_get_may_stall
PCI_handle_mapping32
PCI_handle_mapping64
PCI_lower_interrupt
PCI_lower_interrupt_pin
PCI_raise_interrupt
PCI_raise_interrupt_pin
PCI_read_config_register
PCI_read_sized_config_register
PCI_register_bridge_attributes
PCI_register_device_attributes
PCI_set_config_register_mask
PCI_set_map_always_on
PCI_set_map_base
PCI_set_map_enable
PCI_set_map_ignore_command
PCI_set_map_offset
PCI_set_map_size
PCI_set_may_stall
PCI_system_error
PCI_value_from_memory
PCI_value_to_memory
PCI_write_config_register
PCI_write_sized_config_register
SIM_STC_flush_cache
SIM_add_configuration
SIM_add_directory
SIM_add_mode_counter
SIM_add_output_handler

3.3. Simics API Functions


default function for configuration register reads
default function for configuration register writes
default PCI device reset handling
initialize the generic PCI device
get the bus address of a device
get write mask of a configuration register
query and modify base address mapping
query and modify base address mapping
query and modify base address mapping
query and modify base address mapping
query and modify base address mapping
query and modify base address mapping
Specifies if memory accesses are stallable
handle base address register
handle base address register
raise and lower a PCI interrupt
raise and lower a PCI interrupt
raise and lower a PCI interrupt
raise and lower a PCI interrupt
read a configuration register
read a configuration register
register generic PCI bridge attributes
register generic PCI device attributes
set write mask of a configuration register
query and modify base address mapping
query and modify base address mapping
query and modify base address mapping
query and modify base address mapping
query and modify base address mapping
query and modify base address mapping
Specifies if memory accesses are stallable
assert system error
read/write value from memory space
read/write value from memory space
read a configuration register
write a configuration register
flush or remove entries in the STCs of a cpu
set configuration from Python
add directory to search path
obsolete API function
register output handler

137

VIRTUTECH CONFIDENTIAL
SIM_all_classes
SIM_all_objects
SIM_alloc_attr_dict
SIM_alloc_attr_list
SIM_alloc_conf_object
SIM_alpha_mem_trans_from_generic
SIM_arm_mem_trans_from_generic
SIM_ascanf
SIM_attribute_error
SIM_break_cycle
SIM_break_message
SIM_break_simulation
SIM_break_step
SIM_breakpoint
SIM_breakpoint_action
SIM_breakpoint_remove
SIM_c_frontend_exception
SIM_c_get_mem_op_value_buf
SIM_c_hap_occurred
SIM_c_hap_occurred_always
SIM_c_hap_occurred_always_vararg
SIM_c_hap_occurred_vararg
SIM_c_set_mem_op_value_buf
SIM_cancel_realtime_event
SIM_change_attribute_attribute
SIM_check_exception
SIM_class_has_attribute
SIM_clear_atomic_reservation_bit
SIM_clear_directories
SIM_clear_exception
SIM_command_clear_problem
SIM_command_has_problem
SIM_command_problem_status
SIM_continue
SIM_copyright
SIM_cpu_by_mid
SIM_cpu_enabled
SIM_cpu_issue_cycles
SIM_cpu_privilege_level
SIM_create_object
SIM_current_processor

3.3. Simics API Functions


obsolete API function
obsolete API function
create empty attribute dictionary
create empty attribute list
allocate object
convert generic transaction to CPU specific
convert generic transaction to CPU specific
parse list attribute values
specify reason for attribute error
insert breakpoint in time queue
stop the simulation
stop the simulation
set a step breakpoint
set breakpoint
obsolete API function
delete breakpoint range
obsolete API function
get value for a memory operation
trigger a hap occurrence
trigger a hap occurrence
trigger a hap occurrence
trigger a hap occurrence
set value for a memory operation
cancel callback in host time
change requiredness of attribute
obsolete API function
check if class implements attribute
obsolete API function
clear the search path
clear pending exception
signal error in command
signal error in command
signal error in command
continue the simulation
get version info about Simics
obsolete API function
obsolete API function
obsolete API function
obsolete API function
create and initialise object
get current processor

138

VIRTUTECH CONFIDENTIAL
SIM_cycle_count
SIM_delete_breakpoint
SIM_delete_object
SIM_device_log
SIM_disable_processor
SIM_disassemble
SIM_disassemble_physical
SIM_dump_caches
SIM_enable_processor
SIM_ensure_partial_attr_order
SIM_exception_has_occurred
SIM_flush
SIM_flush_D_STC_logical
SIM_flush_D_STC_physical
SIM_flush_I_STC_logical
SIM_flush_I_STC_physical
SIM_flush_all_caches
SIM_for_all_hap_types
SIM_for_all_memory_pages
SIM_for_all_modules
SIM_for_all_modules_failed
SIM_for_all_processors
SIM_free_attribute
SIM_frontend_exception
SIM_get_No_Exception
SIM_get_all_classes
SIM_get_all_exceptions
SIM_get_all_failed_modules
SIM_get_all_hap_types
SIM_get_all_modules
SIM_get_all_objects
SIM_get_all_processors
SIM_get_all_registers
SIM_get_attribute
SIM_get_attribute_attributes
SIM_get_attribute_idx
SIM_get_base_pointer
SIM_get_batch_mode
SIM_get_class
SIM_get_class_attribute
SIM_get_class_attribute_idx

3.3. Simics API Functions


query time queue for current time
delete breakpoint
delete object
obsolete API function
enable or disable a processor
disassemble instruction
obsolete API function
obsolete API function
enable or disable a processor
ensure attribute order
obsolete API function
text output routines
flush or remove entries in the STCs of a cpu
flush or remove entries in the STCs of a cpu
flush or remove entries in the STCs of a cpu
flush or remove entries in the STCs of a cpu
clear Simicss internal caches
obsolete API function
apply callback function to all memory pages
obsolete API function
obsolete API function
obsolete API function
free attribute
raise an exception
obsolete API function
get list of all classes
processor exception conversion utilities
return a list of all modules that failed to load
get list of all hap types
return a list of all modules
get list of all objects
get list of all processors
get all register numbers
get attribute
get attribute flags
get attribute
obsolete API function
return setting of the batch-mode
get class
get attribute
get attribute

139

VIRTUTECH CONFIDENTIAL
SIM_get_class_interface
SIM_get_class_name
SIM_get_class_port_interface
SIM_get_configuration_file_prefix
SIM_get_control_register_name
SIM_get_control_register_number
SIM_get_current_proc_no
SIM_get_directories
SIM_get_exception_name
SIM_get_exception_number
SIM_get_file_size
SIM_get_history_match
SIM_get_interface
SIM_get_mem_op_type
SIM_get_mem_op_type_name
SIM_get_mem_op_value_be
SIM_get_mem_op_value_buf
SIM_get_mem_op_value_cpu
SIM_get_mem_op_value_le
SIM_get_mmu_data
SIM_get_mode_counter
SIM_get_object
SIM_get_pending_exception
SIM_get_port_interface
SIM_get_proc_no
SIM_get_processor
SIM_get_processor_number
SIM_get_program_counter
SIM_get_quiet
SIM_get_register_name
SIM_get_register_number
SIM_get_simics_home
SIM_get_stack_pointer
SIM_get_trap_time
SIM_get_unique_memory_transaction_id
SIM_get_unique_memory_transaction_id
SIM_get_verbose
SIM_hap_add_callback
SIM_hap_add_callback_index
SIM_hap_add_callback_obj
SIM_hap_add_callback_obj_index

3.3. Simics API Functions


get interface
get class name
get interface
get filename prefix
obsolete API function
obsolete API function
obsolete API function
get the current search path
processor exception conversion utilities
processor exception conversion utilities
obsolete API function
obsolete API function
get interface
get type of transaction
get name of memory operation type
get value for a memory operation
get value for a memory operation
get value for a memory operation
get value for a memory operation
obsolete API function
obsolete API function
get object
get current pending exception
get interface
obsolete API function
get processor pointer from number
get the number of a processor
read/write program counter
return setting of the quiet flag
convert between register name and register number
convert between register name and register number
obsolete API function
obsolete API function
obsolete API function
Micro-Architecture Interface functions
get unique memory transaction ID
get the verbose flag
install callback on a hap
install callback on a hap
install callback on a hap
install callback on a hap

140

VIRTUTECH CONFIDENTIAL
SIM_hap_add_callback_obj_range
SIM_hap_add_callback_range
SIM_hap_add_type
SIM_hap_callback_exists
SIM_hap_delete_callback
SIM_hap_delete_callback_id
SIM_hap_delete_callback_obj
SIM_hap_delete_callback_obj_id
SIM_hap_get_name
SIM_hap_get_number
SIM_hap_install_callback
SIM_hap_install_callback_idx
SIM_hap_install_callback_range
SIM_hap_is_active
SIM_hap_new_type
SIM_hap_occurred
SIM_hap_occurred_always
SIM_hap_register_callback
SIM_hap_register_callback_idx
SIM_hap_register_callback_range
SIM_hap_remove_callback
SIM_hap_remove_type
SIM_hap_unregister_callback
SIM_ia64_mem_trans_from_generic
SIM_inc_cur_mode_counter
SIM_inc_mode_counter
SIM_initial_configuration_ok
SIM_install_default_ASI_handler
SIM_install_user_ASI_handler
SIM_instruction_begin
SIM_instruction_child
SIM_instruction_commit
SIM_instruction_cpu
SIM_instruction_decode
SIM_instruction_end
SIM_instruction_execute
SIM_instruction_fetch
SIM_instruction_force_correct
SIM_instruction_get_field_value
SIM_instruction_get_reg_info
SIM_instruction_get_user_data

3.3. Simics API Functions


install callback on a hap
install callback on a hap
register a new hap type
get callback status
delete installed hap callback
delete installed hap callback
delete installed hap callback
delete installed hap callback
get hap name by number
get hap number by name
obsolete API function
obsolete API function
obsolete API function
check if hap has callbacks
obsolete API function
trigger hap occurrence
trigger hap occurrence
obsolete API function
obsolete API function
obsolete API function
obsolete API function
remove a hap type
obsolete API function
convert generic transaction to CPU specific
obsolete API function
obsolete API function
get configuration status
obsolete API function
obsolete API function
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions

141

VIRTUTECH CONFIDENTIAL
SIM_instruction_handle_exception
SIM_instruction_handle_interrupt
SIM_instruction_id_from_mem_op_id
SIM_instruction_info
SIM_instruction_insert
SIM_instruction_is_sync
SIM_instruction_length
SIM_instruction_nth_id
SIM_instruction_opcode
SIM_instruction_parent
SIM_instruction_phase
SIM_instruction_proceed
SIM_instruction_read_input_reg
SIM_instruction_read_output_reg
SIM_instruction_remaining_stall_time
SIM_instruction_retire
SIM_instruction_rewind
SIM_instruction_set_stop_phase
SIM_instruction_set_user_data
SIM_instruction_speculative
SIM_instruction_squash
SIM_instruction_stalling_mem_op
SIM_instruction_status
SIM_instruction_store_queue_mem_op
SIM_instruction_type
SIM_instruction_write_input_reg
SIM_instruction_write_output_reg
SIM_is_interactive
SIM_iter_addr
SIM_iter_free
SIM_iter_next
SIM_last_error
SIM_license
SIM_load_binary
SIM_load_file
SIM_load_module
SIM_log_constructor
SIM_log_error
SIM_log_info
SIM_log_message
SIM_log_register_groups

3.3. Simics API Functions


Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
obsolete API function
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
Micro-Architecture Interface functions
running interactive command predicate
Iterate over address profile counters
Iterate over address profile counters
Iterate over address profile counters
get error message from last exception
get version info about Simics
read an executable file into memory
read a file into memory
load/unload modules
initiate log class
output log message
output log message
print and log message
register names of log groups

142

VIRTUTECH CONFIDENTIAL
SIM_log_spec_violation
SIM_log_target_error
SIM_log_undefined
SIM_log_unimplemented
SIM_logical_to_physical
SIM_lookup_file
SIM_make_attr_boolean
SIM_make_attr_data
SIM_make_attr_floating
SIM_make_attr_integer
SIM_make_attr_invalid
SIM_make_attr_list
SIM_make_attr_list_vararg
SIM_make_attr_nil
SIM_make_attr_object
SIM_make_attr_string
SIM_mem_op_is_control
SIM_mem_op_is_data
SIM_mem_op_is_from_cache
SIM_mem_op_is_from_cpu
SIM_mem_op_is_from_cpu_arch
SIM_mem_op_is_from_device
SIM_mem_op_is_instruction
SIM_mem_op_is_prefetch
SIM_mem_op_is_read
SIM_mem_op_is_write
SIM_mips_mem_trans_from_generic
SIM_module_list_refresh
SIM_native_path
SIM_new_object
SIM_next_queue
SIM_no_windows
SIM_notify_on_descriptor
SIM_notify_on_object
SIM_notify_on_socket
SIM_num_control_registers
SIM_number_processors
SIM_object_by_id
SIM_object_constructor
SIM_object_is_processor
SIM_pci_mem_trans_from_generic

3.3. Simics API Functions


output log message
output log message
output log message
output log message
translate logical to physical
find a file using simics-path
make boolean attribute
create raw data attribute
make floating point attribute
make integer attribute
make invalid attribute
make list attribute
make list attribute
make empty attribute
make object attribute
make string attribute
transaction control predicates
transaction data/instruction predicates
Cache initiated transaction
CPU initiated transaction
CPU initiated transaction
Device initiated transaction
transaction data/instruction predicates
transaction control predicates
transaction read/write predicates
transaction read/write predicates
convert generic transaction to CPU specific
refresh list of loadable modules
convert path to its native form
create object
get next object that owns a queue
obsolete API function
register notification on host I/O events
register notification on host I/O events
register notification on host I/O events
obsolete API function
number of processors
obsolete API function
base class constructor
test if object is a processor
convert generic transaction to CPU specific

143

VIRTUTECH CONFIDENTIAL
SIM_post_command
SIM_postponing_continue
SIM_ppc_mem_trans_from_generic
SIM_printf
SIM_printf_vararg
SIM_proc_no_2_ptr
SIM_processor_break
SIM_processor_enabled
SIM_processor_privilege_level
SIM_putchar
SIM_puts
SIM_quit
SIM_raise_general_exception
SIM_read_byte
SIM_read_configuration
SIM_read_control_register
SIM_read_fp_register
SIM_read_fp_register_d
SIM_read_fp_register_i
SIM_read_fp_register_s
SIM_read_fp_register_x
SIM_read_global_register
SIM_read_phys_memory
SIM_read_phys_memory_tags
SIM_read_register
SIM_read_window_register
SIM_readme
SIM_realtime_event
SIM_register_arch_decoder
SIM_register_attribute
SIM_register_class
SIM_register_class_alias
SIM_register_class_attribute
SIM_register_copyright
SIM_register_decoder
SIM_register_interface
SIM_register_port_interface
SIM_register_typed_attribute
SIM_register_typed_class_attribute
SIM_release_stall
SIM_release_stall

3.3. Simics API Functions


post callback to be run when simulation is stopped
ask if continue will be postponed
convert generic transaction to CPU specific
text output routines
text output routines
obsolete API function
obsolete API function
check if processor is enabled
return the current privilege level for a processor
text output routines
text output routines
quit Simics
obsolete API function
read/write byte from a memory space
read configuration
obsolete API function
obsolete API function
obsolete API function
obsolete API function
obsolete API function
obsolete API function
obsolete API function
read data from a physical address
access auxiliary bits in physical memory
get register value
obsolete API function
get version info about Simics
schedule callback in host time
install/uninstall instruction decoders
register attribute
register class
register class alias
register attribute
register copyright information
deprecated install/uninstall user decoders
register interface
register interface
register attribute
register attribute
Micro-Architecture Interface functions
release stalling transaction

144

VIRTUTECH CONFIDENTIAL
SIM_remove_output_handler
SIM_reset_processor
SIM_run_command_file
SIM_set_attribute
SIM_set_attribute_idx
SIM_set_class_attribute
SIM_set_class_attribute_idx
SIM_set_configuration
SIM_set_mem_op_type
SIM_set_mem_op_value_be
SIM_set_mem_op_value_buf
SIM_set_mem_op_value_cpu
SIM_set_mem_op_value_le
SIM_set_mode_counter
SIM_set_program_counter
SIM_set_prompt
SIM_set_quiet
SIM_set_verbose
SIM_simics_is_running
SIM_snapshot_date
SIM_source_python
SIM_source_python_in_module
SIM_sparc_ASI_info
SIM_stacked_post
SIM_stall
SIM_stall_count
SIM_stall_cycle
SIM_stalled_until
SIM_step_clean
SIM_step_count
SIM_step_next_occurrence
SIM_step_post
SIM_thread_safe_callback
SIM_time
SIM_time_clean
SIM_time_next_occurrence
SIM_time_post
SIM_time_post_cycle
SIM_unload_module
SIM_unregister_arch_decoder
SIM_unregister_decoder

3.3. Simics API Functions


unregister output handler
reset the processor
read CLI commands from file
set attribute
set attribute
set attribute
set attribute
set configuration from data
set type of transaction
set value for a memory operation
set value for a memory operation
set value for a memory operation
set value for a memory operation
obsolete API function
read/write program counter
change prompt in Simics
enable/disable quiet mode
set the verbose flag
check if Simics is running
get version info about Simics
execute Python source file
execute Python source file
obsolete API function
insert an event that runs as soon as possible
stall execution a specified number of cycles
get number of cycles a processor has been stalled
stall execution a specified number of cycles
query how many cycles that remains of stall
remove events from the step queue
query step queue count
get number of steps until a step queue event occurs
add an event in step queue
call function synchronized with main thread
query time queue for current time
remove all matching events from time queue
get cycles to matching event
add event to time queue
add event to time queue
load/unload modules
install/uninstall instruction decoders
deprecated install/uninstall user decoders

145

VIRTUTECH CONFIDENTIAL
SIM_v9_mem_trans_from_generic
SIM_version
SIM_version_sub
SIM_void_to_processor_t
SIM_write
SIM_write_byte
SIM_write_configuration_to_file
SIM_write_control_register
SIM_write_fp_register
SIM_write_fp_register_d
SIM_write_fp_register_i
SIM_write_fp_register_s
SIM_write_fp_register_x
SIM_write_global_register
SIM_write_phys_memory
SIM_write_phys_memory_tags
SIM_write_register
SIM_write_window_register
SIM_x86_mem_trans_from_generic
cli.arg
cli.eval_cli_line
cli.get_available_object_name
cli.new_command
cli.number_str
cli.object_expander
cli.quiet_run_command
cli.run_command
dbuffer_append
dbuffer_append_external_data
dbuffer_append_value
dbuffer_clone
dbuffer_copy_append
dbuffer_copy_prepend
dbuffer_free
dbuffer_insert
dbuffer_len
dbuffer_prepend
dbuffer_prepend_external_data
dbuffer_prepend_value
dbuffer_read
dbuffer_read_all

3.3. Simics API Functions


convert generic transaction to CPU specific
get version info about Simics
get version info about Simics
obsolete API function
text output routines
read/write byte from a memory space
write configuration
obsolete API function
obsolete API function
obsolete API function
obsolete API function
obsolete API function
obsolete API function
obsolete API function
write data to a physical address
access auxiliary bits in physical memory
set register value
obsolete API function
convert generic transaction to CPU specific
define a command argument
evaluate a CLI command line
return a non-allocated object name
define a new CLI command
return a ready-to-print representation of a number
Standard expander for an object argument
Run a CLI command and return output
Run a CLI command
Add data to a dbuffer
Add static data
Add data with uniform content
Make a full copy of another buffer
Copy data from a dbuffer
Copy data from a dbuffer
Release a dbuffer
Add data to a dbuffer
Get the size of a dbuffer
Add data to a dbuffer
Add static data
Add data with uniform content
Extract data for reading
Extract data for reading

146

VIRTUTECH CONFIDENTIAL
dbuffer_read_some
dbuffer_remove
dbuffer_remove_head
dbuffer_remove_tail
dbuffer_replace
dbuffer_replace_all
dbuffer_replace_some
dbuffer_split
dbuffer_update
dbuffer_update_all
dbuffer_update_some
new_dbuffer
sim_commands.new_info_command
sim_commands.new_status_command

3.3.2

3.3. Simics API Functions


Extract data for reading
Remove data from a dbuffer
Remove data from a dbuffer
Remove data from a dbuffer
Replace data
Replace data
Replace data
Split a dbuffer
Extract data for updating
Extract data for updating
Extract data for updating
Create a new dbuffer
define a new info command
define a new status command

Core

147

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

Attribute Values
SIM_alloc_attr_dict()
NAME
SIM_alloc_attr_dict create empty attribute dictionary
SYNOPSIS
attr_value_t
SIM_alloc_attr_dict(int length);

DESCRIPTION
Returns an attr_value_t of type Sim_Val_Dict with size len. The dictionary elements are initialized to Sim_Val_Invalid.
SEE ALSO
SIM_alloc_attr_list

148

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_alloc_attr_list()
NAME
SIM_alloc_attr_list create empty attribute list
SYNOPSIS
attr_value_t
SIM_alloc_attr_list(int length);

DESCRIPTION
Returns an attr_value_t of type Sim_Val_List with size len. The list elements
are initialized to Sim_Val_Invalid.
SEE ALSO
SIM_make_attr_list

149

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_ascanf()
NAME
SIM_ascanf parse list attribute values
SYNOPSIS
int
SIM_ascanf(attr_value_t *list, const char *fmt, ...);

DESCRIPTION
Reads and converts entries in list according to the format string fmt. Returns 1 if all
elements were successfully converted, 0 otherwise.
The characters in the format string mean:
format char
i
b
f
s
S
o
O
l
d
a

argument type
integer_t *
int *
double *
const char **
const char **
conf_object_t **
conf_object_t **
attr_value_t **
attr_value_t **
attr_value_t **

element must be
Sim_Val_Integer
Sim_Val_Boolean
Sim_Val_Floating
Sim_Val_String
Sim_Val_String or Sim_Val_Nil
Sim_Val_Object
Sim_Val_Object or Sim_Val_Nil
Sim_Val_List
Sim_Val_Data
any except Sim_Val_Invalid

The fmt string may also include a period (.) at the end, taken to mean that more
elements may follow. If the period is not present, the length of the list must equal the
number of specified elements.

150

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_make_attr_boolean()
NAME
SIM_make_attr_boolean make boolean attribute
SYNOPSIS
attr_value_t
SIM_make_attr_boolean(integer_t b);

DESCRIPTION
Returns an attr_value_t of type Sim_Val_Boolean.

151

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_make_attr_data()
NAME
SIM_make_attr_data create raw data attribute
SYNOPSIS
attr_value_t
SIM_make_attr_data(integer_t size, void *data);

DESCRIPTION
Returns an attr_value_t of type Sim_Val_Data using size and data for the binary
data. No copy is made of data.

152

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_make_attr_floating()
NAME
SIM_make_attr_floating make floating point attribute
SYNOPSIS
attr_value_t
SIM_make_attr_floating(double d);

DESCRIPTION
Returns an attr_value_t of type Sim_Val_Floating with value d.

153

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_make_attr_integer()
NAME
SIM_make_attr_integer make integer attribute
SYNOPSIS
attr_value_t
SIM_make_attr_integer(integer_t i);

DESCRIPTION
Returns an attr_value_t of type Sim_Val_Integer with value i.

154

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_make_attr_invalid()
NAME
SIM_make_attr_invalid make invalid attribute
SYNOPSIS
attr_value_t
SIM_make_attr_invalid(void);

DESCRIPTION
Returns an attr_value_t of type Sim_Val_Invalid.

155

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_make_attr_list()
NAME
SIM_make_attr_list, SIM_make_attr_list_vararg make list attribute
SYNOPSIS
attr_value_t
SIM_make_attr_list(int length, ...);

attr_value_t
SIM_make_attr_list_vararg(int length, va_list va);

DESCRIPTION
Returns an attr_value_t of type Sim_Val_List with size length. The list is filled
with data from the arguments following, which should be of type attr_value_t.
SEE ALSO
SIM_alloc_attr_list

156

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_make_attr_nil()
NAME
SIM_make_attr_nil make empty attribute
SYNOPSIS
attr_value_t
SIM_make_attr_nil(void);

DESCRIPTION
Returns an attr_value_t of type Sim_Val_Nil.

157

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_make_attr_object()
NAME
SIM_make_attr_object make object attribute
SYNOPSIS
attr_value_t
SIM_make_attr_object(conf_object_t *obj);

DESCRIPTION
Returns an attr_value_t of type Sim_Val_Object with value obj. Returns a Sim_
Val_Nil if obj is NULL.

158

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_make_attr_string()
NAME
SIM_make_attr_string make string attribute
SYNOPSIS
attr_value_t
SIM_make_attr_string(const char *str);

DESCRIPTION
Returns an attr_value_t of type Sim_Val_String with value str. Returns a Sim_
Val_Nil if str is NULL.

159

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

Breakpoints
SIM_break_cycle()
NAME
SIM_break_cycle insert breakpoint in time queue
SYNOPSIS
void
SIM_break_cycle(conf_object_t *obj, integer_t cycles);

DESCRIPTION
SIM_break_cycle inserts a breakpoint event at cycles clock cycles from now causing
simulation to stop and returning to prompt. Useful in conjunction with a stalling
timing model where there no longer is a one to one correspondence between cycles
and steps.
EXCEPTIONS
General Thrown if obj is NULL.
General Thrown if clock_cycles is negative.

160

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_break_step()
NAME
SIM_break_step set a step breakpoint
SYNOPSIS
void
SIM_break_step(conf_object_t *obj, integer_t steps);

DESCRIPTION
Sets a step breakpoint on a processor. The steps argument is the number of instructions
until the break occurs.
EXCEPTIONS
General If obj is NULL, or the time specified is illegal.

161

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_breakpoint()
NAME
SIM_breakpoint set breakpoint
SYNOPSIS
breakpoint_id_t
SIM_breakpoint(conf_object_t *obj,
breakpoint_kind_t kind,
access_t access,
uint64 address,
uint64 length,
unsigned flags);

DESCRIPTION
Add breakpoint on an object implementing the breakpoint interface. This is typically
a memory space object such as physical memory.
The kind argument sets what type of address to break on:
typedef enum {
Sim_Break_Physical = 0,
Sim_Break_Virtual = 1,
Sim_Break_Linear
= 2
} breakpoint_kind_t;

/* x86 only */

The access argument is a bit-field setting the type of access. Any combination of the
tree alternatives can be given (ored together).
typedef enum {
Sim_Access_Read = 1,
Sim_Access_Write = 2,
Sim_Access_Execute = 4
} access_t;

The address is the start of the breakpoint range and length is its length in bytes. This
range will be truncated as necessary to fit in the address space. An access intersecting
the given range will trigger the breakpoint. If length is zero, the breakpoint range will
be the entire address space.
The flags argument should be passed a bitwise or of zero or more enumeration constants from enum breakpoint_flag:
enum breakpoint_flag {
Sim_Breakpoint_Temporary = 1,
Sim_Breakpoint_Simulation = 2,
Sim_Breakpoint_Private = 4
};

162

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

If the Sim_Breakpoint_Temporary bit is set, the breakpoint is automatically disabled when triggered the first time.
If the Sim_Breakpoint_Simulation bit is set, the breakpoint will not show up
in the list-breakpoints command, nor can it be removed by the unbreak command.
Also, there will be no message printed on the Simics console when this breakpoint is
triggered. This bit should be set when using breakpoints to simulate the target system;
it will prevent Simics from temporarily disabling the breakpoint as an optimization
measure. This could otherwise happen during certain reverse execution operations.
If the Sim_Breakpoint_Private bit is set, the breakpoint will not show up in the
list-breakpoints command, nor can it be removed by the unbreak command. Also,
there will be no message printed on the Simics console when this breakpoint is triggered.
The default action for a triggered breakpoint is to return to the frontend (this can be
changed by using haps). On execution breakpoints Simics will return to the frontend
before the instructions is executed, while instructions triggering read or write breakpoints will complete before control is returned to the frontend.
Several breakpoints can be set on the same address and Simics will break on them
in turn. If hap handlers are connected to the breakpoints they will also be executed
in turn. Hap handlers are called before the access is performed, allowing the user to
read a memory value that may be overwritten by the access. See the Simics Reference
Manual for a description of hap handlers.
Several attributes can be set for a breakpoint for breaking only when some conditions
are true. See the breakpoints attribute in the sim class.
This function returns the breakpoint id which is used for further reference to the breakpoint:
typedef int breakpoint_id_t;

Breakpoints can be removed using SIM_delete_breakpoint().


EXCEPTIONS
General Thrown if the type or access arguments are illegal.
RETURN VALUE
Breakpoint id, -1 on exception.
SEE ALSO
SIM_breakpoint_remove, SIM_delete_breakpoint

163

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_breakpoint_remove()
NAME
SIM_breakpoint_remove delete breakpoint range
SYNOPSIS
void
SIM_breakpoint_remove(int id,
access_t access,
generic_address_t address,
generic_address_t length);

DESCRIPTION
Deletes a breakpoint range from an existing breakpoint. Can thus be used to create
holes in the breakpoint range. id is the breakpoint to operate on, as returned by SIM_
breakpoint(). A value of zero will operate on all breakpoints that were not set using
the Sim_Breakpoint_Simulation flag.
access is a bitfield describing the type of breakpoint to remove using the enumeration
constants of the access_t enum.
start is the start address of the range and length is the length of the range in bytes.
EXCEPTIONS
Index Thrown if illegal breakpoint
SEE ALSO
SIM_breakpoint, SIM_delete_breakpoint

164

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_delete_breakpoint()
NAME
SIM_delete_breakpoint delete breakpoint
SYNOPSIS
void
SIM_delete_breakpoint(breakpoint_id_t id);

DESCRIPTION
Deletes breakpoint id as returned by SIM_breakpoint(). A value of zero will delete all
breakpoints that were set without the Sim_Breakpoint_Simulation flag.
EXCEPTIONS
Index Thrown if no breakpoint with the id is found.

165

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

Configuration
SIM_add_configuration()
NAME
SIM_add_configuration set configuration from Python
SYNOPSIS
void
SIM_add_configuration(pre_conf_object_set_t *set, const char *file);

DESCRIPTION
This function is an alternative to reading the configuration from a file. A configuration
is a sequence (list or tuple) of pre_conf_object Python objects, or a dictionary of the
form {name : pre_conf_object}.
The file argument in the name of the file that a configuration was read from, and should
be set to None/NULL if not used.
EXCEPTIONS
General Thrown if Simics fails to initialize all objects.
SEE ALSO
SIM_create_object

166

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_alloc_conf_object()
NAME
SIM_alloc_conf_object allocate object
SYNOPSIS
conf_object_t *
SIM_alloc_conf_object(parse_object_t *pa);

DESCRIPTION
Allocate a new bare configuration object with no data members. This function is
mainly for implementing classes in script languages.
RETURN VALUE
Returns the newly constructed object.

167

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_attribute_error()
NAME
SIM_attribute_error specify reason for attribute error
SYNOPSIS
void
SIM_attribute_error(const char *msg);

DESCRIPTION
When used inside an attribute set_attr/get_attr method, indicates why it failed to set
or retrieve the attribute. This function only serves to give an informative message to
the user. The object or attribute names need not be mentioned in the msg argument;
Simics will supply this automatically.
SEE ALSO
SIM_register_typed_attribute

168

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_change_attribute_attribute()
NAME
SIM_change_attribute_attribute change requiredness of attribute
SYNOPSIS
int
SIM_change_attribute_attribute(conf_class_t *cls,
const char *name,
attr_attr_t attr);

DESCRIPTION
This function sets the attributes of an earlier registered attribute name in class class_
struct to attr.
typedef enum {
Sim_Attr_Required
Sim_Attr_Optional

= 0,
= 1,

Sim_Attr_Session
Sim_Attr_Pseudo

= 3,
= 4,

Sim_Attr_Flag_Mask

= 0xff,

Sim_Init_Phase_Shift
Sim_Init_Phase_0
Sim_Init_Phase_1

= 8,
= 0 << Sim_Init_Phase_Shift,
= 1 << Sim_Init_Phase_Shift,

Sim_Attr_Integer_Indexed
Sim_Attr_String_Indexed
Sim_Attr_List_Indexed

= 0x1000,
= 0x2000,
= 0x4000,

Sim_Attr_Persistent

= 0x20000,

/* set by SIM_register_*_attribute() */
Sim_Attr_Read_Only
= 0x40000,
Sim_Attr_Write_Only
= 0x80000
} attr_attr_t;

RETURN VALUE
Returns zero if successful, and non-zero otherwise.
EXCEPTIONS
General Thrown if at least one argument is NULL or if the attribute name is not a valid
attribute for the class with class structure class_struct.
169

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SEE ALSO
SIM_register_typed_attribute

170

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_class_has_attribute()
NAME
SIM_class_has_attribute check if class implements attribute
SYNOPSIS
int
SIM_class_has_attribute(conf_class_t *cls, const char *attr);

DESCRIPTION
Returns 1 if the class cl implements an attribute with the name attr
SEE ALSO
SIM_register_typed_attribute, SIM_get_attribute

171

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_create_object()
NAME
SIM_create_object create and initialise object
SYNOPSIS
conf_object_t *
SIM_create_object(conf_class_t *cls, const char *name, attr_value_t attrs);

DESCRIPTION
Creates a new instance of the configuration class cls. name must consist of a letter
followed by letters, digits, hyphens (-) or underscores (_). Hyphens and underscores
are equivalent, so ben_hur and ben-hur refer to the same object.
The new object is initialised with attributes from attrs, which must be a list of (attributename, value) pairs as two-element lists. All required attributes for the class cl must be
present in attrs.
RETURN VALUE
The new object, or NULL on error (in which case an exception is raised).
EXCEPTIONS
General Thrown if either argument is NULL, the name is not well-formed, if an object
named name already exists, or if the initialisation failed.
SEE ALSO
SIM_set_configuration

172

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_delete_object()
NAME
SIM_delete_object delete object
SYNOPSIS
int
SIM_delete_object(conf_object_t *obj);

DESCRIPTION
Deletes an object. The caller should make sure that there are no references to the object
being deleted, and that there are no pending events associated with the object (all such
events will be removed from the event queue automatically).
RETURN VALUE
Returns zero if successful. Throws an exception and returns non-zero otherwise.
EXCEPTIONS
General Thrown if the associated class does not support object deletion (has no destructor).

173

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_ensure_partial_attr_order()
NAME
SIM_ensure_partial_attr_order ensure attribute order
SYNOPSIS
void
SIM_ensure_partial_attr_order(conf_class_t *cls, const char *attr1,
const char *attr2);

DESCRIPTION
Attribute initialization order is guaranteed to be identical to the order in which the
attributes were registered. In some cases a particular order is required in order for a
model to work correctly.
This function checks the registration order of attr1 and attr2 in the class cls. If attr1
is not registered before attr2, or if at least one of the two are not registered at all, an
ASSERT is triggered.
Use this function to ensure that e.g. code refactoring does not break a required attribute order.
SEE ALSO
SIM_register_typed_attribute

174

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_free_attribute()
NAME
SIM_free_attribute free attribute
SYNOPSIS
void
SIM_free_attribute(attr_value_t value);

DESCRIPTION
Attributes returned by SIM_get_attribute() should be freed using this function. It
doesnt actually do anything for values of a different kind than Sim_Val_List or
Sim_Val_Dict.
When called with a Sim_Val_List argument, it calls SIM_free_attribute() on each
element of the list before freeing the list itself.

175

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_get_all_classes()
NAME
SIM_get_all_classes get list of all classes
SYNOPSIS
attr_value_t
SIM_get_all_classes(void);

DESCRIPTION
Return a list of the names of all configuration classes.
RETURN VALUE
List of class names.

176

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_get_all_objects()
NAME
SIM_get_all_objects get list of all objects
SYNOPSIS
attr_value_t
SIM_get_all_objects(void);

DESCRIPTION
Return a list of all configuration objects.
RETURN VALUE
List of objects.

177

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_get_attribute()
NAME
SIM_get_attribute, SIM_get_class_attribute, SIM_get_attribute_idx, SIM_get_class_
attribute_idx get attribute
SYNOPSIS
attr_value_t
SIM_get_attribute(conf_object_t *obj, const char *name);

attr_value_t
SIM_get_class_attribute(conf_class_t *cls, const char *name);

attr_value_t
SIM_get_attribute_idx(conf_object_t *obj, const char *name,
attr_value_t *index);

attr_value_t
SIM_get_class_attribute_idx(conf_class_t *cls, const char *name,
attr_value_t *index);

DESCRIPTION
Extracts the attribute specified by the name parameter from obj. When the caller has
finished using the attribute value, it should be freed using free_attribute. If an error
occurs, or if the attribute is not defined for the given object, then the returned value
will be of type Sim_Val_Invalid. The _idx version of the function can be used to get a
single entry in a list or data attribute. The attribute must support indexing, for this to
work.
Return values of kind Sim_Val_List or Sim_Val_Dict have to be freed using SIM_
free_attribute().
RETURN VALUE
Attribute value. The kind field in the returned structure is Sim_Val_Invalid if the
attribute could not be found.
EXCEPTIONS
General If either argument is NULL.
SEE ALSO
SIM_free_attribute, SIM_set_attribute

178

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_get_attribute_attributes()
NAME
SIM_get_attribute_attributes get attribute flags
SYNOPSIS
attr_attr_t
SIM_get_attribute_attributes(conf_class_t *cls, const char *attr);

DESCRIPTION
Returns the attribute flags of the attr attribute of the configuration object obj.
SIM_get_attribute_attributes() with an object as parameter is deprecated since Simics
3.0.
SEE ALSO
SIM_register_typed_attribute, SIM_change_attribute_attribute

179

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_get_class()
NAME
SIM_get_class get class
SYNOPSIS
conf_class_t *
SIM_get_class(const char *name);

DESCRIPTION
Returns the configuration class called name.
RETURN VALUE
Opaque pointer referencing the class, or NULL if not found.
EXCEPTIONS
General Thrown if the class has not been registered or if name is NULL.
SEE ALSO
SIM_get_class_name

180

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_get_class_name()
NAME
SIM_get_class_name get class name
SYNOPSIS
const char *
SIM_get_class_name(const conf_class_t *class_data);

DESCRIPTION
Returns the name of the class
SEE ALSO
SIM_get_class

181

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_get_configuration_file_prefix()
NAME
SIM_get_configuration_file_prefix get filename prefix
SYNOPSIS
const char *
SIM_get_configuration_file_prefix(void);

DESCRIPTION
An object that wants to create a file as part of an attribute value should request a
filename prefix using this function. The image class uses this feature to store memory
in a separate file.
RETURN VALUE
Null-terminated prefix string, or NULL if called outside a configuration.

182

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_get_interface()
NAME
SIM_get_interface, SIM_get_class_interface, SIM_get_port_interface, SIM_get_class_
port_interface get interface
SYNOPSIS
void *
SIM_get_interface(const conf_object_t *obj, const char *name);

void *
SIM_get_class_interface(const conf_class_t *cls, const char *name);

void *
SIM_get_port_interface(const conf_object_t *obj, const char *name,
const char *portname);

void *
SIM_get_class_port_interface(const conf_class_t *cls,
const char *name, const char *portname);

DESCRIPTION
Get the interface with name name from object obj. Returns NULL, and raises an exception if obj does not implement the interface.
SIM_get_port_interface() returns an port interface instance as registered with SIM_
register_port_interface(). The portname selects a particular implementation of the interface by objs class. If no instance name is supplied, the function behaves as SIM_
get_interface().
If a class only defines a single port interface, it may be looked up using SIM_get_
interface() as well.
SIM_get_class_interface and SIM_get_class_port_interface are similar but return the
interface for a class instead of an object.
RETURN VALUE
Pointer to interface, or NULL if not found.
EXCEPTIONS
Lookup Thrown if the interface is not implemented by objs class.
General Thrown if the interface name is illegal.
SEE ALSO
SIM_register_interface, SIM_register_port_interface

183

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_get_object()
NAME
SIM_get_object get object
SYNOPSIS
conf_object_t *
SIM_get_object(const char *name);

DESCRIPTION
Returns the object with name name.
struct conf_object {
conf_class_t *class_data;
const char *name;
struct conf_object *queue;
lang_void *object_data;
int object_id;
int configured;
};

/*
/*
/*
/*
/*
/*

class data */
instance name */
queue */
internal to class implementation */
deprecated, do not use */
set when configuration ready */

typedef struct conf_object conf_object_t;

RETURN VALUE
Pointer to object, or NULL if not found.
EXCEPTIONS
GeneralThrown if the object can not be found or if name is NULL.

184

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_initial_configuration_ok()
NAME
SIM_initial_configuration_ok get configuration status
SYNOPSIS
int
SIM_initial_configuration_ok(void);

DESCRIPTION
Returns non-zero if a configuration has been loaded into Simics (e.g., using readconfiguration), or zero otherwise.

185

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_new_object()
NAME
SIM_new_object create object
SYNOPSIS
conf_object_t *
SIM_new_object(conf_class_t *cls, const char *name);

DESCRIPTION
Creates a new instance of the configuration class the_class. name must consist of a letter
followed by letters, digits, hyphens (-) or underscores (_). Hyphens and underscores
are equivalent, so ben_hur and ben-hur refer to the same object.
Note: This function is deprecated. It can only safely be used to create objects that have
no required attributes or no finalisation method. In other cases, SIM_create_object or SIM_
set_configuration must be used.
RETURN VALUE
Pointer to new object, or NULL on error (in which case an exception is raised).
EXCEPTIONS
General Thrown if either argument is NULL, if no configuration has been loaded, or if
an object with name name already exists.
SEE ALSO
SIM_create_object, SIM_set_configuration

186

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_object_constructor()
NAME
SIM_object_constructor base class constructor
SYNOPSIS
void
SIM_object_constructor(conf_object_t *obj, parse_object_t *pobj);

DESCRIPTION
This constructor should be called by new_instance functions (see the class_data_t
structure) to initialize a new object. If the new object is a log_object_t, the SIM_
log_constructor() function should be used instead.

187

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_object_is_processor()
NAME
SIM_object_is_processor test if object is a processor
SYNOPSIS
int
SIM_object_is_processor(conf_object_t *obj);

DESCRIPTION
Returns non-zero if obj is a processor.

188

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_read_configuration()
NAME
SIM_read_configuration read configuration
SYNOPSIS
void
SIM_read_configuration(const char *file);

DESCRIPTION
Read configuration from filename and create a machine accordingly. Can only be issued
once per session. This function will exit the simulator on certain error conditions (such
as license violations).
EXCEPTIONS
General Thrown if the file could not be opened, the machine was already initialized,
or if an error in the configuration file was detected.

189

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_register_attribute()
NAME
SIM_register_attribute, SIM_register_class_attribute register attribute
SYNOPSIS
int
SIM_register_attribute(
conf_class_t *cls, const char *name,
attr_value_t (*get_attr)(lang_void *user_data,
conf_object_t *obj,
attr_value_t *idx),
lang_void *user_data_get,
set_error_t (*set_attr)(lang_void *user_data,
conf_object_t *obj,
attr_value_t *val, attr_value_t *idx),
lang_void *user_data_set,
attr_attr_t attr,
const char *desc);

int
SIM_register_class_attribute(
conf_class_t *cls, const char *name,
attr_value_t (*get_attr)(lang_void *ptr,
conf_class_t *c,
attr_value_t *idx),
lang_void *user_data_get,
set_error_t (*set_attr)(lang_void *ptr,
conf_class_t *c,
attr_value_t *val, attr_value_t *idx),
lang_void *user_data_set,
attr_attr_t attr,
const char *desc);

DESCRIPTION
These functions are deprecated, use SIM_register_typed_attribute() and SIM_register_
typed_class_attribute() instead.

190

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_register_class()
NAME
SIM_register_class register class
SYNOPSIS
conf_class_t *
SIM_register_class(const char *name,
class_data_t *class_data);

DESCRIPTION
This function registers a new class that can be instantiated by calling the SIM_create_
object function.
class_data may be freed when the function has returned.
typedef enum {
Sim_Class_Kind_Vanilla, /* object is saved at checkpoints */
Sim_Class_Kind_Session, /* object is saved as part of a
* session only */
Sim_Class_Kind_Pseudo
/* object is never saved */
} class_kind_t;
typedef struct class_data {
conf_object_t *(*new_instance)(parse_object_t *parse_obj);
int (*delete_instance)(conf_object_t *obj);
void (*finalize_instance)(conf_object_t *obj);
attr_value_t (*default_get_attr)(const char *name,
conf_object_t *obj,
attr_value_t *idx);
set_error_t (*default_set_attr)(const char *name,
conf_object_t *obj,
attr_value_t *val,
attr_value_t *idx);
conf_class_t
*parent;
const char
*description;
class_kind_t
kind;
} class_data_t;

The new_instance function should return a newly allocated object. The object must
begin with a conf_object_t structure which should be initialized with the object_
constructor function.
delete_instance must be NULL if the class does not support object deletion.
RETURN VALUE
Class structure, or NULL on error.
191

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

EXCEPTIONS
General Thrown if either the name or the class_data argument is NULL.
Attribute If the class_data structure does not include a new_instance function.
SEE ALSO
SIM_object_constructor, SIM_register_class_alias

192

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_register_class_alias()
NAME
SIM_register_class_alias register class alias
SYNOPSIS
void
SIM_register_class_alias(const char *alias,
const char *name);

DESCRIPTION
Register a new class alias alias for the already registered class class_name. Using aliases
allows the read-configuration command to read configuration files that define objects of
type alias, while the write-configuration command always uses class_name.
Aliases are used to support compatibility with old class names if a class is renamed.
They can also be used to allow different modules, which define different specific implementations of the same generic base class, to read the same configuration files.
SEE ALSO
SIM_register_class

193

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_register_interface()
NAME
SIM_register_interface, SIM_register_port_interface register interface
SYNOPSIS
int
SIM_register_interface(conf_class_t *cls, const char *name, void *iface);

int
SIM_register_port_interface(conf_class_t *cls, const char *name,
void *iface, const char *portname,
const char *desc);

DESCRIPTION
Register that cl implements the name interface. The interface itself should be supplied
in the iface argument.
SIM_register_port_interface() registers a port instance of an interface that must be
looked up using SIM_get_port_interface. The port name may not be the same as any
attribute name used by the class.
RETURN VALUE
Returns non-zero on failure, 0 otherwise.
EXCEPTIONS
General Thrown if the interface name is illegal.
SEE ALSO
SIM_get_interface, SIM_get_port_interface

194

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_register_typed_attribute()
NAME
SIM_register_typed_attribute, SIM_register_typed_class_attribute register attribute
SYNOPSIS
int
SIM_register_typed_attribute(
conf_class_t *cls, const char *name,
attr_value_t (*get_attr)(lang_void *user_data,
conf_object_t *obj,
attr_value_t *idx),
lang_void *user_data_get,
set_error_t (*set_attr)(lang_void *user_data,
conf_object_t *obj,
attr_value_t *val, attr_value_t *idx),
lang_void *user_data_set,
attr_attr_t attr, const char *type, const char *idx_type,
const char *desc);

int
SIM_register_typed_class_attribute(
conf_class_t *cls, const char *name,
attr_value_t (*get_attr)(lang_void *ptr,
conf_class_t *c,
attr_value_t *idx),
lang_void *user_data_get,
set_error_t (*set_attr)(lang_void *ptr,
conf_class_t *c,
attr_value_t *val,
attr_value_t *idx),
lang_void *user_data_set,
attr_attr_t attr, const char *type, const char *idx_type,
const char *desc);

DESCRIPTION
Add the attribute name to the set of attributes understood by the cls class.
The function get_attr is called with the object and the supplied data in user_data_get as
arguments, and returns the current value of the attribute. It may return a value of type
Sim_Val_Invalid if the argument has no sensible value. Lists and other compound
data structures should be allocated dynamically by get_attr. If get_attr is a null pointer,
the attribute will be write-only.

195

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

After the initial configuration, set_attr may be called at any time to change the value
of an attribute. Compound data structures should be copied if set_attr wants to keep
them. If set_attr is a null pointer, the attribute will be read-only.
All attributes that are marked Sim_Attr_Required must be present in all configurations.
typedef enum {
Sim_Attr_Required
Sim_Attr_Optional

= 0,
= 1,

Sim_Attr_Session
Sim_Attr_Pseudo

= 3,
= 4,

Sim_Attr_Flag_Mask

= 0xff,

Sim_Init_Phase_Shift
Sim_Init_Phase_0
Sim_Init_Phase_1

= 8,
= 0 << Sim_Init_Phase_Shift,
= 1 << Sim_Init_Phase_Shift,

Sim_Attr_Integer_Indexed
Sim_Attr_String_Indexed
Sim_Attr_List_Indexed

= 0x1000,
= 0x2000,
= 0x4000,

Sim_Attr_Persistent

= 0x20000,

/* set by SIM_register_*_attribute() */
Sim_Attr_Read_Only
= 0x40000,
Sim_Attr_Write_Only
= 0x80000
} attr_attr_t;

To make the set_attr function easier to write, Simics provides a simple type system for
attributes. You can provide typing information for both simple and indexed access
to the attribute via the type and idx_type attributes (note that, in the latter case, you
specify the type of the attribute for indexed access, not the type of the index). Setting
either parameter to NULL will prevent typechecking for that access mode (normal or
indexed).
A type is described by a string composed with the following rules:
A simple type is represented by a single letter: i (integer), f (floating), s (string), d
(data), o (object), b (boolean), D (dictionary), n (nil) or a (all).
You can match several types by using the operator | like in s|o (string OR object).
Note that if you provide a string when an object is expected, Simics will call SIM_
get_object() to try to translate the string into a valid object.
Lists are defined by square brackets: [ and ]. Lists can be specified in two ways:

196

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

Lists with a fixed amount of arguments: [iffsf] matches (integer, floating,


floating, string, floating).
lists with a size specifier: [i] matches any list containing only integers (even
[]); [i+] matches any list containing only integers (but not []); [i{1:4}] matches
lists of integers with 1 to 4 elements; [i{4}] is the same as [i{4:4}], i.e. a list of
four integers. When you specify a size, the list definition can have only one
element.
| has higher precedence than concatenation in list description, i.e, [i|si|s] should
be read [i|s,i|s] which matches any two-element list with integer or string elements. For clarity you can use , wherever you want in the type definition, it will
be ignored.
RETURN VALUE
Returns zero if successful, and non-zero otherwise.
NOTE
During initial configuration (with the read-configuration command), attribute values
will be set in the same order as they are registered.

197

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_set_attribute()
NAME
SIM_set_attribute, SIM_set_class_attribute, SIM_set_attribute_idx, SIM_set_class_
attribute_idx set attribute
SYNOPSIS
set_error_t
SIM_set_attribute(conf_object_t *obj,
const char *name,
attr_value_t *value);

set_error_t
SIM_set_class_attribute(conf_class_t *cls,
const char *name,
attr_value_t *value);

set_error_t
SIM_set_attribute_idx(conf_object_t *obj,
const char *name,
attr_value_t *index,
attr_value_t *value);

set_error_t
SIM_set_class_attribute_idx(conf_class_t *cls,
const char *name,
attr_value_t *index,
attr_value_t *value);

DESCRIPTION
Set the name attribute in obj to value.
The _idx version of the function can be used to get a single entry in a list or data
attribute. For this to work, the attribute must support indexing.
RETURN VALUE
The return value is from the set_error_t enum, with Sim_Set_Ok indicating success.
SEE ALSO
SIM_get_attribute, set_error_t

198

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_set_configuration()
NAME
SIM_set_configuration set configuration from data
SYNOPSIS
void
SIM_set_configuration(attr_value_t conf);

DESCRIPTION
Note: It is recommended that the SIM_add_configuration function is used instead of SIM_
set_configuration.

This function is an alternative to reading the configuration from a file. A configuration


is an attr_value_t which should have the following structure.
(("name", "class",

("attr_name", attr_val) ... ), ... )

That is a list of object specifiers containing name, class, and a list of attribute specifiers.
An attribute specifier is a list of length 2 containing the attribute name and its value.
SIM_set_configuration() allows an easy way of parameterizing the configuration, especially if called from Python.
EXAMPLE
The following is an Python example:
from configuration import *
SIM_set_configuration([
["cpu0", "x86",
["queue", OBJ("cpu0")],
["freq_mhz", 20],
["physical_memory", OBJ("phys_mem0")]],
["phys_mem0", "memory-space",
["map", [[0xa0000,
OBJ("vga0"),
[0x00000,
OBJ("mem0"),
[0xc0000,
OBJ("mem0"),
[0xc8000,
OBJ("setmem0"),
[0xf0000,
OBJ("mem0"),
[0x100000,
OBJ("mem0"),
[0xfee00000, OBJ("apic0"),
... ])

199

1,
0,
0,
0,
0,
0,
0,

0, 0x20000],
0x00000, 0xA0000],
0xc0000, 0x8000],
0, 0x28000],
0xf0000, 0x10000],
0x100000, 0x3ff00000],
0, 0x4000]]]],

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

EXCEPTIONS
Attribute Thrown if malformed configuration list.
General Thrown if Simics fails to initialize all objects.
SEE ALSO
SIM_add_configuration, SIM_create_object

200

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_write_configuration_to_file()
NAME
SIM_write_configuration_to_file write configuration
SYNOPSIS
int
SIM_write_configuration_to_file(const char *file);

DESCRIPTION
Saves all objects to the configuration file filename. Objects whose class_kind_t is
equal to Sim_Class_Kind_Session or Sim_Class_Kind_Pseudo are not saved.
This also holds for attributes (in all objects) of types Sim_Attr_Session and Sim_Attr_
Pseudo.
Classes that wish to create additional files can use the SIM_get_configuration_file_
prefix call to get a suitable filename prefix.
RETURN VALUE
0 if successful, 1 otherwise.

201

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

Documentation
SIM_register_copyright()
NAME
SIM_register_copyright register copyright information
SYNOPSIS
void
SIM_register_copyright(const char *str);

DESCRIPTION
This registers specific copyright information related to an extension module or similar
component of Simics. The Simics front-end command copyright will list, in addition
to Simics copyright notices, any registered notices from libraries or plug-ins that have
added a string using this function.
The string should contain only standard ASCII characters, be pre-formatted for at
most 80-character width terminal, be non-indented, and have no spurious new-line
characters before or after the last line (except for the new-line that marks the end of
the last line).
The string will not be copied so needs to be either static or a copy generated by the
callee (preferably static).

202

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_version()
NAME
SIM_version, SIM_version_sub, SIM_readme, SIM_snapshot_date, SIM_license,
SIM_copyright get version info about Simics
SYNOPSIS
const char *
SIM_version(void);

const char *
SIM_version_sub(void);

const char *
SIM_readme(void);

const char *
SIM_snapshot_date(void);

void
SIM_license(void);

void
SIM_copyright(void);

DESCRIPTION
Return strings describing the version of Simics, compile date, expiry date, license and
a general readme.

203

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

Errors and Exceptions


SIM_clear_exception()
NAME
SIM_clear_exception clear pending exception
SYNOPSIS
sim_exception_t
SIM_clear_exception(void);

DESCRIPTION
Clears the current pending exception.
SimExc_No_Exception if none available.
RETURN VALUE
Returns the exception that was pending before the call, or SimExc_No_Exception
if none.
SEE ALSO
SIM_frontend_exception, SIM_get_pending_exception

204

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_command_has_problem()
NAME
SIM_command_has_problem, SIM_command_clear_problem, SIM_command_problem_
status signal error in command
SYNOPSIS
void
SIM_command_has_problem(void);

void
SIM_command_clear_problem(void);

int
SIM_command_problem_status(void);

DESCRIPTION
Call this function if the currently executing command, created with the python function new_command(), is having a problem. Examples of problems are illegal parameters, syntax error, serious error in carrying out command, etc. One of the effects is to
stop any enclosing structure, such as a script file, from continuing.
The current problem status can be queried with SIM_command_problem_status where
a return value of zero means no problem. The status can be cleared by calling SIM_
command_clear_problem(), allowing script files to continue executing.

205

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_frontend_exception()
NAME
SIM_frontend_exception raise an exception
SYNOPSIS
void
SIM_frontend_exception(sim_exception_t exc_type, const char *str);

DESCRIPTION
This function raises an exception of type exc_type and message str.
The state of the pending exception can be read with SIM_get_pending_exception() and
cleared with SIM_clear_exception().

206

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_get_pending_exception()
NAME
SIM_get_pending_exception get current pending exception
SYNOPSIS
sim_exception_t
SIM_get_pending_exception(void);

DESCRIPTION
This function returns the exception type of the current pending exception, or SimExc_
No_Exception if none available.
SEE ALSO
SIM_frontend_exception, SIM_clear_exception, SIM_last_error

207

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_last_error()
NAME
SIM_last_error get error message from last exception
SYNOPSIS
const char *
SIM_last_error(void);

DESCRIPTION
Returns the error message attached to the last exception raised.
SEE ALSO
SIM_frontend_exception

208

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

Haps
SIM_c_hap_occurred()
NAME
SIM_c_hap_occurred, SIM_c_hap_occurred_vararg, SIM_c_hap_occurred_always, SIM_
c_hap_occurred_always_vararg trigger a hap occurrence
SYNOPSIS
int
SIM_c_hap_occurred(hap_type_t hap, conf_object_t *obj,
integer_t value, ...);

int
SIM_c_hap_occurred_vararg(hap_type_t hap, conf_object_t *obj,
integer_t value, va_list ap);

int
SIM_c_hap_occurred_always(hap_type_t hap, conf_object_t *obj,
integer_t value, ...);

int
SIM_c_hap_occurred_always_vararg(hap_type_t hap, conf_object_t *obj,
integer_t value, va_list ap);

DESCRIPTION
These functions are used to cause a hap of type hap. The value argument is used
for checking ranges. The hap-specific data is passed as the first parameter to the callback function (see SIM_hap_add_callback()). These functions return the number of
callbacks that were called.
SIM_hap_occurred() will only run callback functions for a specific hap once per simulated cycle. The SIM_hap_occurred_always() function will always run the callbacks.
The functions SIM_c_hap_occurred_vararg() and SIM_c_hap_occurred_always_vararg()
are vararg versions of these functions.
EXCEPTIONS
Break Thrown if a callback requested the simulation to stop. This exception will be
removed in a future Simics version. Do not write new code relying on it.
RETURN VALUE
The number of callback functions called.
SEE ALSO
SIM_break_simulation
209

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_get_all_hap_types()
NAME
SIM_get_all_hap_types get list of all hap types
SYNOPSIS
attr_value_t
SIM_get_all_hap_types(void);

DESCRIPTION
Get data structure with the names of all hap types.
RETURN VALUE
List with strings.

210

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_hap_add_callback()
NAME
SIM_hap_add_callback, SIM_hap_add_callback_index, SIM_hap_add_callback_range,
SIM_hap_add_callback_obj, SIM_hap_add_callback_obj_index, SIM_hap_add_callback_
obj_range install callback on a hap
SYNOPSIS
hap_handle_t
SIM_hap_add_callback(const char *hap,
obj_hap_func_t func,
typed_lang_void *user_data);

hap_handle_t
SIM_hap_add_callback_index(const char *hap,
obj_hap_func_t func,
typed_lang_void *user_data,
integer_t index);

hap_handle_t
SIM_hap_add_callback_range(const char *hap,
obj_hap_func_t func,
typed_lang_void *user_data,
integer_t start,
integer_t end);

hap_handle_t
SIM_hap_add_callback_obj(const char *hap,
conf_object_t *obj,
hap_flags_t flags,
obj_hap_func_t func,
typed_lang_void *user_data);

hap_handle_t
SIM_hap_add_callback_obj_index(const char *hap,
conf_object_t *obj,
hap_flags_t flags,
obj_hap_func_t func,
typed_lang_void *user_data,
integer_t index);

hap_handle_t
SIM_hap_add_callback_obj_range(const char *hap,

211

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions


conf_object_t *obj,
hap_flags_t flags,
obj_hap_func_t func,
typed_lang_void *user_data,
integer_t start,
integer_t end);

DESCRIPTION
Registers a function, pointed to by func, to be called when hap occurs for object obj.
If obj is NULL (None in Python), or a hap add function that does not have the obj
argument is used, then the callback function will be called regardless of what object
that triggers the hap. The user_data argument is the callback-specific data, and it will
be passed as first argument to the installed callback function.
Some hap add functions also take a flags argument. This flag is currently Simics internal and should be set to 0.
The hap callback functions should not return any data. In C, the functions are declared
to have a void return type and in Python, any return value is ignored. Since callback
functions with different arguments may be installed using the same API function, the
compiler may warn about a type mismatch. The solution is to cast the callback function pointer to the obj_hap_func_t type.
In hap functions, the execution can be interrupted by calling SIM_break_simulation.
If a frontend or Python exception is raised, an error message will be printed incuding
a stack trace if the callback is written in Python.
The _index_ and _range_ versions will install callbacks that only trigger for a specified index, or range of indices. The index is specific for each hap type, see the hap
documentation.
typedef int hap_handle_t;

RETURN VALUE
The return value is a hap callback handle (identifier) of the type hap_handle_t. This
handle can be used to remove the installed callback with SIM_hap_delete_callback_id.
EXCEPTIONS
Lookup Thrown if the hap does not exist.
Attribute Thrown if the callback is not valid.

212

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_hap_add_type()
NAME
SIM_hap_add_type register a new hap type
SYNOPSIS
hap_type_t
SIM_hap_add_type(const char *hap,
const char *params,
const char *param_desc,
const char *index,
const char *desc,
int old_had_obj);

DESCRIPTION
Creates a run-time defined hap type.
The params parameter specifies the argument that callbacks for this hap is called with,
e.g., "s" or "II". The first two arguments are always lang_void * and conf_
object_t * respectively, and should not be included in that string. The table below
shows which characters may be used, and what their meaning is:
i
I
e
o
s
m
c
v

an int
an integer_t (64 bit integer)
an exception_type_t
a script specific object; i.e., void * in C and any Python object in Python
a string
a memory transaction (generic_transaction_t * in C)
a configuration object (conf_object_t * in C)
a void *; a pointer to a C structure within Simics

parm_desc should be a string of space-separated words describing these parameters,


or NULL if params is the empty string.
index is a string describing the index value for this hap, or NULL if there is no index
value.
Hap types that used to have a conf_object_t pointer as first argument (before all haps
were associated with an object) should set the old_had_obj argument to 1. This tells
Simics to call old-style callbacks with a conf_object_t argument although the hap doesnt
include any c first in the parameter list anymore. Old style callbacks are functions
installed with the now obsolete SIM_hap_register_callback. . . and SIM_hap_install_
callback. . . functions.
desc is a description string for the hap.

213

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

EXCEPTIONS
General Thrown if hap is already defined. However, consequent calls with the same
parameters will be successful, and return the same hap type number each time.
RETURN VALUE
The hap type number or a number <= 0 on error.

214

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_hap_callback_exists()
NAME
SIM_hap_callback_exists get callback status
SYNOPSIS
int
SIM_hap_callback_exists(const char *hap,
obj_hap_func_t func,
typed_lang_void *user_data);

DESCRIPTION
Checks if there is an installed callback func with associated user_data for hap hap.
EXCEPTIONS
Lookup Thrown if no hap is associated with name id.
RETURN VALUE
1 if such a callback exists, 0 otherwise.

215

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_hap_delete_callback()
NAME
SIM_hap_delete_callback, SIM_hap_delete_callback_obj, SIM_hap_delete_callback_id,
SIM_hap_delete_callback_obj_id delete installed hap callback
SYNOPSIS
void
SIM_hap_delete_callback(const char *hap,
obj_hap_func_t func, typed_lang_void *user_data);

void
SIM_hap_delete_callback_obj(const char *hap,
conf_object_t *obj,
obj_hap_func_t func, typed_lang_void *user_data);

void
SIM_hap_delete_callback_id(const char *hap, hap_handle_t handle);

void
SIM_hap_delete_callback_obj_id(const char *hap,
conf_object_t *obj, hap_handle_t handle);

DESCRIPTION
Removes a callback for a hap type specified by the hap argument.
The SIM_hap_delete_callback_obj. . . () functions will remove a callback that is installed on the specified object obj.
SIM_hap_delete_callback() removes any callbacks with the callback function func
and the same user_data. The SIM_hap_delete_callback_. . . _id() functions take a
hap handle argument instead, as returned by the SIM_hap_add_callback. . . () functions.
These function will trigger the Core_Hap_Callback_Removed hap for each removed
callback. NOTE: Callbacks registered to be called on Core_Hap_Callback_Removed,
are not allowed to make recursive calls to remove or unregister any callbacks on the
same hap.
EXCEPTIONS
Lookup Thrown if the specified hap does not exist.

216

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_hap_get_name()
NAME
SIM_hap_get_name get hap name by number
SYNOPSIS
const char *
SIM_hap_get_name(hap_type_t hap);

DESCRIPTION
Returns the name of hap, or NULL for no such hap.

217

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_hap_get_number()
NAME
SIM_hap_get_number get hap number by name
SYNOPSIS
hap_type_t
SIM_hap_get_number(const char *hap);

DESCRIPTION
Return the runtime number associated with a hap identifier. All haps are listed in
section 8.
EXCEPTIONS
Lookup Thrown if no hap is associated with name id.
RETURN VALUE
The hap type number, or 0 on failure.

218

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_hap_is_active()
NAME
SIM_hap_is_active check if hap has callbacks
SYNOPSIS
int
SIM_hap_is_active(hap_type_t hap);

DESCRIPTION
Returns 1 if the hap has any callback functions installed, and 0 if not.

219

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_hap_occurred()
NAME
SIM_hap_occurred, SIM_hap_occurred_always trigger hap occurrence
SYNOPSIS
int
SIM_hap_occurred(hap_type_t hap, conf_object_t *obj,
integer_t value, attr_value_t *list);

int
SIM_hap_occurred_always(hap_type_t hap, conf_object_t *obj,
integer_t value, attr_value_t *list);

DESCRIPTION
Used to notify that a particular hap has occurred. All callbacks installed for the hap
will be called. The value is used to check range. The hap specific data is passed as
the first parameter to the callback function (see SIM_hap_add_callback()) A positive
return indicates the number of callback that was installed and run.
SIM_hap_occurred() will only call the callbacks once in a simulated cycle; i.e., it is
safe to call SIM_hap_occurred() and request the simulation to stop every time. The
SIM_hap_occurred_always() function will always call the hap functions every time.
NOTES
There are also versions of these functions that only can be called from C (with varargs), SIM_c_hap_occurred(), and SIM_c_hap_occurred_always().
EXCEPTIONS
An exception is thrown upon errors or if a callback requested the simulation to stop.
The kind of exception depends on the callback.
RETURN VALUE
The number of callbacks installed on the hap.

220

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_hap_remove_type()
NAME
SIM_hap_remove_type remove a hap type
SYNOPSIS
void
SIM_hap_remove_type(const char *hap);

DESCRIPTION
Remove a run-time defined hap type.

221

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

Logging
SIM_get_quiet()
NAME
SIM_get_quiet return setting of the quiet flag
SYNOPSIS
int
SIM_get_quiet(void);

DESCRIPTION
This function returns the current value of Simicss quiet flag.

222

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_get_verbose()
NAME
SIM_get_verbose get the verbose flag
SYNOPSIS
int
SIM_get_verbose(void);

DESCRIPTION
This function returns the value of Simicss verbosity flag (corresponding to the -verbose
command-line argument).

223

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_log_constructor()
NAME
SIM_log_constructor initiate log class
SYNOPSIS
void
SIM_log_constructor(log_object_t *log_obj, parse_object_t *parse_obj);

DESCRIPTION
This constructor should be called by new_instance functions to initialize a new log
object.
SEE ALSO
log_object_t, SIM_log_message, SIM_log_register_groups

224

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_log_info()
NAME
SIM_log_info, SIM_log_error, SIM_log_undefined, SIM_log_spec_violation, SIM_
log_target_error, SIM_log_unimplemented output log message
SYNOPSIS
static void
SIM_log_info(int lvl, log_object_t *dev, int grp,
const char *str, ...);

static void
SIM_log_error(log_object_t *dev, int grp,
const char *str, ...);

static void
SIM_log_undefined(int lvl, log_object_t *dev, int grp,
const char *str, ...);

static void
SIM_log_spec_violation(int lvl, log_object_t *dev, int grp,
const char *str, ...);

static void
SIM_log_target_error(int lvl, log_object_t *dev, int grp,
const char *str, ...);

static void
SIM_log_unimplemented(int lvl, log_object_t *dev, int grp,
const char *str, ...);

DESCRIPTION
SIM_log_info() etc are C macros that should be used by devices and extensions which
are based on a log_object_t to print information and error messages. For more
information, see the SIM_log_message function. Each macros represents a log type.
SEE ALSO
SIM_log_message, SIM_log_constructor

225

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_log_message()
NAME
SIM_log_message print and log message
SYNOPSIS
void
SIM_log_message(conf_object_t *obj,
int level,
int group_ids,
log_type_t log_type,
const char *message);

DESCRIPTION
Prints and logs a message associated with a log_object_t object. Objects written in
C/C++ should use the SIM_log_<log-type>() macros instead.
level should be between 1 and 4:
1. important messages printed by default
2. high-level informative messages
3. standard debug messages
4. detailed information, such as register accesses
Messages of the Sim_Log_Error type are always printed on level 1. The group_ids
should have a bit set for each log group that the message corresponds to, as defined by
the SIM_log_register_groups(). The log_type argument is documented with the log_
type_t type.
SEE ALSO
SIM_log_constructor, SIM_log_register_groups, log_type_t

226

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_log_register_groups()
NAME
SIM_log_register_groups register names of log groups
SYNOPSIS
void
SIM_log_register_groups(conf_class_t *cls, const char **names);

DESCRIPTION
Register a list of log groups that a log_object_t object can use to separate messages.
The order of the groups in the list defines the group ids that should be used in the call
to SIM_log_message(). The group_ids argument to that function should have a bit set
corresponding to the group; i.e., a value of 1 for the first group, 2 for the second, 4 for
the third, etc. names should be a NULL-terminated array.
SEE ALSO
SIM_log_constructor, SIM_log_register_groups

227

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_set_quiet()
NAME
SIM_set_quiet enable/disable quiet mode
SYNOPSIS
void
SIM_set_quiet(int mode);

DESCRIPTION
Calling this function with an argument of 1 will enable the quiet mode, whereas an
argument of 0 will disable it. Any other arguments will cause a frontend exception.
Please note that enabling the quiet mode will disable verbose mode.

228

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_set_verbose()
NAME
SIM_set_verbose set the verbose flag
SYNOPSIS
void
SIM_set_verbose(int mode);

DESCRIPTION
This function sets Simicss internal verbosity flag (corresponding to the -verbose
command-line argument). The mode argument can be either 0 or 1. Note that setting
this flag will disable quiet mode.

229

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

Memory
SIM_for_all_memory_pages()
NAME
SIM_for_all_memory_pages apply callback function to all memory pages
SYNOPSIS
void
SIM_for_all_memory_pages(void (*func)(integer_t addr), int i_or_d);

DESCRIPTION
Iterate through all known pages of memory and call a function for every page.
The callback func is passed the physical address of the first byte on the page. Each
page is S_PSIZE bytes large.
If i_or_d is 0, then func is only applied to pages that have had code executed on them
(i.e. intermediate code has been allocated at some time).
EXCEPTIONS
General Thrown if func is NULL.
NOTE
The memory pages are internal Simics pages. The size of a page may be different than
the logical page size of the target architecture.

230

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_load_binary()
NAME
SIM_load_binary read an executable file into memory
SYNOPSIS
physical_address_t
SIM_load_binary(conf_object_t *obj, const char *file,
physical_address_t offset, int use_pa, int verbose);

DESCRIPTION
Read a binary file (ELF, PE32, or PE32+ format) into memory and return the code entry
point.
The file will be loaded at the address formed by adding the virtual load address from
the file, with the offset offset. If the flag use_pa is set, the ELF physical load address is
used instead. The verbose flag will cause Simics to print info about the binary to the
console.
The memory space to load into is given in the obj parameter. If the given space is
a CPU object, its current virtual address space will be used, and addresses will be
translated before writing to the physical memory space attached to the CPU.
If the file is not found in the current directory, the search path (see add-directory) is
used to find the file.
EXCEPTIONS
IOError Thrown if there was a problem reading the file.
Memory Thrown if binary cannot be read into memory.
RETURN VALUE
The code entry address.

231

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_load_file()
NAME
SIM_load_file read a file into memory
SYNOPSIS
void
SIM_load_file(conf_object_t *obj, const char *file,
physical_address_t base_address, int verbose);

DESCRIPTION
Reads a file straight into memory starting at physical address base_address. The flag
verbose will cause Simics to print info about the file to the console.
EXCEPTIONS
Attribute Thrown if no file is specified.
IOError Thrown if there was a problem reading the file.
Memory Thrown if file cannot be read into memory.

232

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_logical_to_physical()
NAME
SIM_logical_to_physical translate logical to physical
SYNOPSIS
physical_address_t
SIM_logical_to_physical(conf_object_t *cpu,
data_or_instr_t data_or_instr,
logical_address_t vaddr);

DESCRIPTION
Translates logical to physical address, assumes a word read operation in supervisor
mode to the address using supplied processor.
EXCEPTIONS
Memory Thrown if no translation exists.
RETURN VALUE
The physical address.

233

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_read_byte()
NAME
SIM_read_byte, SIM_write_byte read/write byte from a memory space
SYNOPSIS
uint8
SIM_read_byte(conf_object_t *obj, generic_address_t paddr);

void
SIM_write_byte(conf_object_t *obj, generic_address_t paddr, uint8 value);

DESCRIPTION
Read or write a byte from a given address in the memory space obj.
EXCEPTIONS
Memory Thrown if the memory space threw an exception
General Thrown if the object does not implement the memory space interface, or if obj
is NULL.
RETURN VALUE
The byte read.

234

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_read_phys_memory()
NAME
SIM_read_phys_memory read data from a physical address
SYNOPSIS
uinteger_t
SIM_read_phys_memory(conf_object_t *cpu,
physical_address_t paddr,
int length);

DESCRIPTION
Reads length bytes from address paddr in the physical memory space associated with
the processor cpu.
Up to 8 bytes can be read in one call. The memory access will be of inquiry type, i.e.
no timing-model or snoop device will be called.
EXCEPTIONS
Memory Thrown if no memory defined at paddr.
Attribute Thrown if length is out of range.
RETURN VALUE
The read data, zero-extended.

235

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_read_phys_memory_tags()
NAME
SIM_read_phys_memory_tags, SIM_write_phys_memory_tags access auxiliary
bits in physical memory
SYNOPSIS
uint64
SIM_read_phys_memory_tags(conf_object_t *mem_space, physical_address_t paddr,
unsigned ntags);

void
SIM_write_phys_memory_tags(conf_object_t *mem_space, physical_address_t paddr,
uint64 tag_bits, unsigned ntags);

DESCRIPTION
Reads or writes ntags auxiliary bits starting at paddr in the physical memory space
mem_space. Up to 64 bits can be accessed at once. The bits are specified and returned
right-aligned, least significant bit corresponding to the lowest address.

236

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_write_phys_memory()
NAME
SIM_write_phys_memory write data to a physical address
SYNOPSIS
void
SIM_write_phys_memory(conf_object_t *cpu,
physical_address_t paddr,
uinteger_t value, int length);

DESCRIPTION
Writes length bytes to address paddr in the physical memory space associated with the
processor cpu.
Up to 8 bytes can be written in one call. The memory access will be of inquiry type,
i.e. no timing-model or snoop device will be called.
EXCEPTIONS
Memory Thrown if no memory defined at paddr.
Attribute Thrown if length is out of range.

237

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

Memory Transactions
SIM_alpha_mem_trans_from_generic()
NAME
SIM_alpha_mem_trans_from_generic, SIM_arm_mem_trans_from_generic, SIM_ia64_
mem_trans_from_generic, SIM_mips_mem_trans_from_generic, SIM_ppc_mem_trans_
from_generic, SIM_v9_mem_trans_from_generic, SIM_x86_mem_trans_from_generic,
SIM_pci_mem_trans_from_generic convert generic transaction to CPU specific
SYNOPSIS
struct alpha_memory_transaction *
SIM_alpha_mem_trans_from_generic(generic_transaction_t *mop);

struct arm_memory_transaction *
SIM_arm_mem_trans_from_generic(generic_transaction_t *mop);

struct ia64_memory_transaction *
SIM_ia64_mem_trans_from_generic(generic_transaction_t *mop);

struct mips_memory_transaction *
SIM_mips_mem_trans_from_generic(generic_transaction_t *mop);

struct ppc_memory_transaction *
SIM_ppc_mem_trans_from_generic(generic_transaction_t *mop);

struct v9_memory_transaction *
SIM_v9_mem_trans_from_generic(generic_transaction_t *mop);

struct x86_memory_transaction *
SIM_x86_mem_trans_from_generic(generic_transaction_t *mop);

struct pci_memory_transaction *
SIM_pci_mem_trans_from_generic(generic_transaction_t *mop);

DESCRIPTION
Converts a pointer to a generic memory transaction into a pointer to a CPU specific
memory transaction. The generic memory transaction must be part of a CPU specific
one for this function to succeed. The pointer returned will be the same the input
pointer if conversion is allowed, and NULL on failure.
238

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

EXCEPTIONS
Type Thrown if the generic transaction is not part of a CPU specific transaction.
RETURN VALUE
New memory transaction pointer, or NULL on error.

239

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_c_get_mem_op_value_buf()
NAME
SIM_c_get_mem_op_value_buf, SIM_get_mem_op_value_buf, SIM_get_mem_op_
value_cpu, SIM_get_mem_op_value_le, SIM_get_mem_op_value_be get value
for a memory operation
SYNOPSIS
void
SIM_c_get_mem_op_value_buf(generic_transaction_t *mop, char *dst);

attr_value_t
SIM_get_mem_op_value_buf(generic_transaction_t *mop);

uinteger_t
SIM_get_mem_op_value_cpu(generic_transaction_t *mop);

uinteger_t
SIM_get_mem_op_value_le(generic_transaction_t *mop);

uinteger_t
SIM_get_mem_op_value_be(generic_transaction_t *mop);

DESCRIPTION
Returns load or store value for a memory transaction. If the data size is 8 bytes or less
the SIM_get_mem_op_value_be() and SIM_get_mem_op_value_le() functions can be
used. For reads/writes larger than 8 bytes, the functions SIM_c_get_mem_op_value_
buf() or SIM_get_mem_op_value_buf() should be used to get the data.
The SIM_c_get_mem_op_value_buf() function is only available from C/C++. It places
the data into the buffer pointed to by dst. No endian conversion is performed, i.e.
data is returned in target endianness. There is no alignment requirement on the dst
parameter.
WARNING
When called from a memory-hierarchy (timing-model) only store values can be retrieved, since the load has not yet performed. To get the load value, a snoop-device
should be used.
RETURN VALUE
SIM_c_get_mem_op_value_buf() returns nothing. The out parameter dst is filled with
the data buffer of the memory transaction. SIM_get_mem_op_value_buf() returns an
attr_value_t containing the the data buffer (type Sim_Val_Data) of the memory
240

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

transaction. SIM_get_mem_op_value_be() returns the zero-extended value in host endian order (interpreted as big endian) for the memory transaction. SIM_get_mem_op_
value_le() returns the zero-extended value in host endian order (interpreted as little
endian). SIM_get_mem_op_value_cpu() interprets the data in the default endian order
for the initiating processor.
EXCEPTIONS
Memory Thrown if the size of the operation is illegal.

241

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_c_set_mem_op_value_buf()
NAME
SIM_c_set_mem_op_value_buf, SIM_set_mem_op_value_buf, SIM_set_mem_op_
value_cpu, SIM_set_mem_op_value_le, SIM_set_mem_op_value_be set value for
a memory operation
SYNOPSIS
void
SIM_c_set_mem_op_value_buf(generic_transaction_t *mop, char *src);

void
SIM_set_mem_op_value_buf(generic_transaction_t *mop, attr_value_t value);

void
SIM_set_mem_op_value_cpu(generic_transaction_t *mop, uinteger_t value);

void
SIM_set_mem_op_value_le(generic_transaction_t *mop, uinteger_t value);

void
SIM_set_mem_op_value_be(generic_transaction_t *mop, uinteger_t value);

DESCRIPTION
Set the value returned to the requester of a memory operation. If the data size is 8
bytes or less the SIM_set_mem_op_value_be() and SIM_set_mem_op_value_le functions can be used. For sizes larger than 8 bytes, the functions SIM_c_set_mem_op_
value_buf() or SIM_set_mem_op_value_buf() should be used to set the data.
SIM_c_set_mem_op_value_buf() is only available from C/C++, it operates on data in
target endian order. There is no alignment requirement on the buf parameter.
SIM_set_mem_op_value_be() takes data in host endian order and sets it in big-endian.
SIM_set_mem_op_value_le() takes data in host endian order and sets it in little-endian.
SIM_set_mem_op_value_cpu() takes data in host endian order and sets it in the default
endian order for the initiating processor.
WARNING
These functions cannot be called from a timing-model since the real operation will overwrite the value set. They should instead be used from a snoop-device.

242

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_get_mem_op_type()
NAME
SIM_get_mem_op_type get type of transaction
SYNOPSIS
FORCE_INLINE mem_op_type_t
SIM_get_mem_op_type(const generic_transaction_t *NOTNULL mop);

DESCRIPTION
This function returns the type of the memory transaction.

243

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_get_mem_op_type_name()
NAME
SIM_get_mem_op_type_name get name of memory operation type
SYNOPSIS
const char *
SIM_get_mem_op_type_name(mem_op_type_t type);

DESCRIPTION
Returns a string describing type or NULL if unknown.

244

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_get_unique_memory_transaction_id()
NAME
SIM_get_unique_memory_transaction_id get unique memory transaction ID
SYNOPSIS
int
SIM_get_unique_memory_transaction_id(conf_object_t *obj);

DESCRIPTION
Returns a number which is unique for all currently outstanding memory operations of
the specified CPU obj. You can read the last value returned by this function by calling
SIM_get_current_memory_transaction_id().

245

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_mem_op_is_control()
NAME
SIM_mem_op_is_control transaction control predicates
SYNOPSIS
FORCE_INLINE int
SIM_mem_op_is_control(const generic_transaction_t *NOTNULL mop);

DESCRIPTION
Checks whether mem_op is control transaction.

246

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_mem_op_is_data()
NAME
SIM_mem_op_is_data, SIM_mem_op_is_instruction transaction data/instruction
predicates
SYNOPSIS
FORCE_INLINE int
SIM_mem_op_is_data(const generic_transaction_t *NOTNULL mop);

FORCE_INLINE int
SIM_mem_op_is_instruction(const generic_transaction_t *NOTNULL mop);

DESCRIPTION
These functions check whether mem_op is a data or an instruction transaction. Currently, the only transactions that are instruction transactions are instruction fetches.

247

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_mem_op_is_from_cache()
NAME
SIM_mem_op_is_from_cache Cache initiated transaction
SYNOPSIS
FORCE_INLINE int
SIM_mem_op_is_from_cache(const generic_transaction_t *NOTNULL mop);

DESCRIPTION
Checks whether mem_op is sent from a cache timing model.

248

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_mem_op_is_from_cpu()
NAME
SIM_mem_op_is_from_cpu CPU initiated transaction
SYNOPSIS
FORCE_INLINE int
SIM_mem_op_is_from_cpu(const generic_transaction_t *NOTNULL mop);

DESCRIPTION
Checks whether mem_op is sent from a processor.

249

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_mem_op_is_from_cpu_arch()
NAME
SIM_mem_op_is_from_cpu_arch CPU initiated transaction
SYNOPSIS
FORCE_INLINE int
SIM_mem_op_is_from_cpu_arch(const generic_transaction_t *NOTNULL mop,
ini_type_t arch);

DESCRIPTION
Checks whether mem_op is sent from a processor of a specific architecture.

250

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_mem_op_is_from_device()
NAME
SIM_mem_op_is_from_device Device initiated transaction
SYNOPSIS
FORCE_INLINE int
SIM_mem_op_is_from_device(const generic_transaction_t *NOTNULL mop);

DESCRIPTION
Checks whether mem_op is sent from a device.

251

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_mem_op_is_prefetch()
NAME
SIM_mem_op_is_prefetch transaction control predicates
SYNOPSIS
FORCE_INLINE int
SIM_mem_op_is_prefetch(const generic_transaction_t *NOTNULL mop);

DESCRIPTION
Checks whether mem_op is prefetch transaction.

252

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_mem_op_is_read()
NAME
SIM_mem_op_is_read, SIM_mem_op_is_write transaction read/write predicates
SYNOPSIS
FORCE_INLINE int
SIM_mem_op_is_read(const generic_transaction_t *NOTNULL mop);

FORCE_INLINE int
SIM_mem_op_is_write(const generic_transaction_t *NOTNULL mop);

DESCRIPTION
These functions check whether mem_op is a read or a write transaction.

253

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_set_mem_op_type()
NAME
SIM_set_mem_op_type set type of transaction
SYNOPSIS
FORCE_INLINE void
SIM_set_mem_op_type(generic_transaction_t *NOTNULL mop, mem_op_type_t type);

DESCRIPTION

254

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

Modules
SIM_get_all_failed_modules()
NAME
SIM_get_all_failed_modules return a list of all modules that failed to load
SYNOPSIS
attr_value_t
SIM_get_all_failed_modules(void);

DESCRIPTION
A failed module is a module that is not loadable by the current version of Simics.
The list returned contains information about why the module failed. Each list entry is
another list with module specific information. The layout of this sub-list is described
below. The list may grow in future Simics version, but the currently defined fields will
not change.
name - Module name (Sim_Val_String).
path - File system path to the module (Sim_Val_String).
duplicate - Flag indicating a duplicate module (Sim_Val_Boolean).
linker - Flag indicating a linker error. (Sim_Val_Boolean).
version - Simics ABI version that the module is build for (Sim_Val_Integer).
user version - User version of the module (Sim_Val_String).
error - Error message, typically from the linker (Sim_Val_String or Sim_Val_Nil).
SEE ALSO
SIM_get_all_modules

255

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_get_all_modules()
NAME
SIM_get_all_modules return a list of all modules
SYNOPSIS
attr_value_t
SIM_get_all_modules(void);

DESCRIPTION
The list returned contains information about all modules that can be loaded into Simics. Each list entry is another list with module specific information. The layout of
this sub-list is described below. The list may grow in future Simics version, but the
currently defined fields will not change.
name - Module name (Sim_Val_String).
path - File system path to the module (Sim_Val_String).
loaded - Flag indicating that the module is already loaded (Sim_Val_Boolean).
version - Simics ABI version that the module is build for (Sim_Val_Integer).
user version - User version of the module (Sim_Val_String).
SEE ALSO
SIM_get_all_failed_modules

256

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_load_module()
NAME
SIM_load_module, SIM_unload_module load/unload modules
SYNOPSIS
void
SIM_load_module(const char *module);

void
SIM_unload_module(const char *module);

DESCRIPTION
Load a module (Simics extension). Simics supports dynamically loadable modules.
Anything linked as dynamic can be loaded. SIM_load_module takes the module name
module as argument and tries to link in the corresponding library file. Under Unix
lib<module>.so will be used and under Windows <module>.dll. Python modules
(.py) can also be loaded with this function. SIM_unload_module unloads a module if
the module supports it.
Modules should be placed in the simics lib directory or in a directory present in the
SIMICS_EXTRA_LIB environment variable.

257

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_module_list_refresh()
NAME
SIM_module_list_refresh refresh list of loadable modules
SYNOPSIS
void
SIM_module_list_refresh(void);

DESCRIPTION
Simics maintains a list of all modules that can be loaded successfully. If a module is
changed or added, the list has to be refreshed before Simics can load this module.

258

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

Output
SIM_add_output_handler()
NAME
SIM_add_output_handler register output handler
SYNOPSIS
void
SIM_add_output_handler(output_handler_t func, lang_void *user_data);

DESCRIPTION
This function registers func(user_data, buf, count) to be called whenever there is text
output from Simics, where data is the pointer in the call to SIM_remove_output_handler(),
buf is a pointer to the output data, and count is the number of bytes to be written.
This is the definition of output_handler_t:
typedef void (*output_handler_t)(lang_void *data,
const char *src, size_t length);

SEE ALSO
SIM_remove_output_handler, SIM_write

259

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_remove_output_handler()
NAME
SIM_remove_output_handler unregister output handler
SYNOPSIS
void
SIM_remove_output_handler(output_handler_t func, typed_lang_void *user_data);

DESCRIPTION
This function removes func as an output recipient. If data is NULL, all previously added
output handlers (by a call to SIM_add_output_handler()) will be removed; otherwise,
only those with equal data pointers will be removed.
SEE ALSO
SIM_add_output_handler, SIM_write

260

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_write()
NAME
SIM_write, SIM_flush, SIM_putchar, SIM_puts, SIM_printf, SIM_printf_vararg
text output routines
SYNOPSIS
int
SIM_write(const void *src, int length);

int
SIM_flush(void);

int
SIM_putchar(int c);

int
SIM_puts(const char *s);

int
SIM_printf(const char *format, ...);

int
SIM_printf_vararg(const char *format, va_list ap);

DESCRIPTION
These are the Simics versions of the write(), putchar(), puts(), printf(), vprintf(), and
fflush() C library functions. The arguments and return values are the same as for the
library functions, except for SIM_write() which does not take any file argument.
The output will be sent to stdout, but more output recipients can be added using the
SIM_add_output_handler() function. Output is line buffered. SIM_flush() will force
output of an unterminated line.
By default, simics_api.h will define a number of macros, changing calls to the
abovementioned C library functions to call the Simics versions instead:
#undef printf
#if defined(HAVE_VARARG_MACROS)
#define printf(...) SIM_printf(__VA_ARGS__)
#else
#define printf SIM_printf
#endif

261

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

#undef vprintf
#define vprintf(str, ap) SIM_printf_vararg(str, ap)
#undef puts
#define puts(str) SIM_puts(str)
#undef putchar
#define putchar(c) SIM_putchar(c)
#undef fwrite
#define fwrite(ptr, size, nmemb, stream)
((stream) == stdout
? (size_t)SIM_write((ptr), (size) * (nmemb))
: fwrite(ptr, size, nmemb, stream))
#undef fputs
#define fputs(str, stream)
((stream) == stdout
? SIM_write((str), strlen(str))
: fputs((str), (stream)))

\
\
\

\
\
\

#undef fflush
#define fflush(stream) ((stream) == stdout ? SIM_flush() : fflush(stream))

This behavior can be overridden, see the information about the SIM_BC_NO_STDOUT_
REDEFINE macro in section 3.4.1.
SEE ALSO
SIM_add_output_handler

262

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

Path
SIM_add_directory()
NAME
SIM_add_directory add directory to search path
SYNOPSIS
void
SIM_add_directory(const char *directory, int prepend);

DESCRIPTION
Adds a directory to Simicss search-path. This is a list of directory which Simics uses
when searching for files such as disk-dumps, kernel images, etc.
The directory argument is first converted using SIM_native_path, to yield a path on
host native form. If the path does not exist, a warning is printed and the path is
ignored.
If prepend is set, the directory is inserted first in the list of directories.
This list of directories is saved as the attribute simics-path when doing write-configuration.
Each directory is first converted to absolute form if relative.
This function replaces the obsolete function SIM_set_simics_path().
SEE ALSO
SIM_lookup_file

263

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_clear_directories()
NAME
SIM_clear_directories clear the search path
SYNOPSIS
void
SIM_clear_directories(void);

DESCRIPTION
Deletes all directories from the search path.

264

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_get_directories()
NAME
SIM_get_directories get the current search path
SYNOPSIS
attr_value_t
SIM_get_directories(void);

DESCRIPTION
Returns the current value of the directory search path.

265

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_lookup_file()
NAME
SIM_lookup_file find a file using simics-path
SYNOPSIS
const char *
SIM_lookup_file(const char *file);

DESCRIPTION
Searches for a file in the Simics search path as given to SIM_add_directory().
The returned path will always be in host native format, so the returned path will not
need to be converted. See SIM_native_path for more details on what host native
format means.
The search algorithm is as follows.
If file is NULL, the function fails.
If file is an absolute path, it is converted to host native form and returned. If the
file does not exist, the function fails.
If file exists in or relative to the current directory, it is returned without using the
directory list. This is more or less equivalent of always having . first in the list.
For each directory in the search path: The directory and the file is concatenated
and converted to host native format. If the resulting file exists, it is returned.
If the function fails, NULL is returned.
If the file was found, a pointer to the full path to the file is returned. The returned
string should not be modified.

266

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_native_path()
NAME
SIM_native_path convert path to its native form
SYNOPSIS
char *
SIM_native_path(const char *NOTNULL path);

DESCRIPTION
Translates a path to its host native form. The only platform for which this function
is not a no-op is Windows. The translation can be disabled using the -no-usecygpath command line flag.
On Windows, this function translates Cygwin style paths into Windows native form.
This is implemented internally, the cygpath utility is not invoked. If the path contains
a colon (:) or a backslash, the path is assumed to be on native form already, and no
translation will be performed.
Translating a Cygwin paths is done by looking up Cygwin mount prefixes in the registry, and replacing any matching prefixes with their native counterpart. Also, Cygwin
symlinks are resolved and followed. Finally, any slashes in the path is converted to
backslash. The path is not normalized, i.e. the resulting path may contain ...
Note: the symlink lookup mechanism does not handle the case when nowinsymlink
is set in the CYGWIN environment-variable.
The function uses a static buffer to store its result, which will be overwritten at the
next call.

267

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

Processor
SIM_current_processor()
NAME
SIM_current_processor get current processor
SYNOPSIS
conf_object_t *
SIM_current_processor(void);

DESCRIPTION
Returns a pointer to the current processor. The returned processor pointer can be used
in calls to other API functions, or as a reference to the processor in Python.
The current processor is the processor that Simics currently simulating. See the user
manual for further explanation of Simicss simulation model.
EXCEPTIONS
Lookup Thrown if no processor exists.
RETURN VALUE
Processor pointer.

268

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_disassemble()
NAME
SIM_disassemble disassemble instruction
SYNOPSIS
tuple_int_string_t *
SIM_disassemble(conf_object_t *cpu, generic_address_t addr, int type);

DESCRIPTION
This function disassembles the instruction at the given address. Address is either a
physical address (type == 0) or a logical address (type == 1). A pointer to a tuple_
int_string_t is returned which contains the disassembly string as well as the length
of the instruction (bytes). tuple_int_string_t is defined like this:
typedef struct {
int integer;
const char *string;
} tuple_int_string_t;

For the Sparc, Alpha, and PowerPC targets the length is always 4 bytes. On IA-64, the
length is undefined.
EXCEPTIONS
General Thrown if arguments are invalid.
Memory Thrown if the address is undefined or not mapped in the MMU (for logical
addresses).

269

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_enable_processor()
NAME
SIM_enable_processor, SIM_disable_processor enable or disable a processor
SYNOPSIS
void
SIM_enable_processor(conf_object_t *cpu);

void
SIM_disable_processor(conf_object_t *cpu);

DESCRIPTION
These functions disables (deactivates) or enables (reactivates) the specified processor.
Processors that are disabled simply stall indefinitely. Make sure at least one processor
is enabled at any given time.
This function can not be called during the execution of an instruction, for example,
in a device or a timing-model. If you wish to call them in these situations, use SIM_
stacked_post() to post a callback that will be run as soon as possible after the instruction finished.
EXCEPTIONS
General Thrown if the processor already is enabled/disabled.
SEE ALSO
SIM_processor_enabled

270

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_get_all_processors()
NAME
SIM_get_all_processors get list of all processors
SYNOPSIS
attr_value_t
SIM_get_all_processors(void);

DESCRIPTION
Return a list of all processor objects.
RETURN VALUE
List of processors.

271

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_get_all_registers()
NAME
SIM_get_all_registers get all register numbers
SYNOPSIS
attr_value_t
SIM_get_all_registers(conf_object_t *cpu);

DESCRIPTION
Returns a list of all register numbers for a processor. The register numbers can for
example be used in calls to SIM_read_register and SIM_write_register.
RETURN VALUE
List of register numbers.

272

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_get_exception_name()
NAME
SIM_get_exception_name, SIM_get_exception_number, SIM_get_all_exceptions
processor exception conversion utilities
SYNOPSIS
const char *
SIM_get_exception_name(conf_object_t *cpu, int exc);

int
SIM_get_exception_number(conf_object_t *cpu, const char *name);

attr_value_t
SIM_get_all_exceptions(conf_object_t *cpu);

DESCRIPTION
These functions convert from a processor exception number to the associated exception name and vice versa. The SIM_get_all_exceptions function can be used to get a
list of all exceptions.
EXCEPTIONS
General Thrown if exception cannot be found.

273

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_get_processor()
NAME
SIM_get_processor get processor pointer from number
SYNOPSIS
conf_object_t *
SIM_get_processor(int proc_no);

DESCRIPTION
Converts processor id number to processor pointer. Note that processors are numbered from 0 to (number_processors - 1). This function cannot be used until a configuration had been loaded succcessfully.
EXCEPTIONS
Index Thrown if no processor with number proc_no exists.
RETURN VALUE
The processor pointer, NULL on failure.

274

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_get_processor_number()
NAME
SIM_get_processor_number get the number of a processor
SYNOPSIS
int
SIM_get_processor_number(const conf_object_t *cpu);

DESCRIPTION
Returns the global processor number for a processor in Simics.
RETURN VALUE
The processor number

275

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_get_program_counter()
NAME
SIM_get_program_counter, SIM_set_program_counter read/write program counter
SYNOPSIS
logical_address_t
SIM_get_program_counter(conf_object_t *cpu);

void
SIM_set_program_counter(conf_object_t *cpu, logical_address_t pc);

DESCRIPTION
These functions provide a portable way to examine and update the program counter
and stack pointer of a processor.
The actual registers that are read/written depend on the target architecture. For example on the x86-64 architecture the program counter is the RIP register and the stack
pointer is the RSP register.
For IA-64, the program counter is the ip register, with the current slot number added
to the lowest two bits of the address.

276

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_get_register_number()
NAME
SIM_get_register_number, SIM_get_register_name convert between register name
and register number
SYNOPSIS
int
SIM_get_register_number(conf_object_t *cpu, const char *name);

const char *
SIM_get_register_name(conf_object_t *cpu, int reg);

DESCRIPTION
These functions convert a given register number to the register name or vice versa.
Name to number conversion functions are not case sensitive.
EXCEPTIONS
General If the register name is not found. Index If reg index is out of range
RETURN VALUE
Register index or string pointer to name.

277

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_number_processors()
NAME
SIM_number_processors number of processors
SYNOPSIS
int
SIM_number_processors(void);

DESCRIPTION
Returns the current total number of processors in the system.
RETURN VALUE
Number of processors.

278

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_processor_enabled()
NAME
SIM_processor_enabled check if processor is enabled
SYNOPSIS
int
SIM_processor_enabled(conf_object_t *cpu);

DESCRIPTION
Returns 1 if the processor is enabled, or 0 if it is disabled.
RETURN VALUE
1 if enabled, else 0.
SEE ALSO
SIM_enable_processor

279

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_processor_privilege_level()
NAME
SIM_processor_privilege_level return the current privilege level for a processor
SYNOPSIS
int
SIM_processor_privilege_level(conf_object_t *cpu);

DESCRIPTION
Return the current privilege level for a processor. The definition of privilege levels
depends on the processor type.
RETURN VALUE
For SPARC, and PowerPC, and ARM processors: 0 for User mode, and 1 for Supervisor mode.
For x86 and IA-64 processors: 0-3, where 0 is the most privileged.
For Alpha processors: 0 for kernel mode, 1 for executive mode, and 3 for user mode.
For MIPS processors: 0

280

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_read_register()
NAME
SIM_read_register get register value
SYNOPSIS
uinteger_t
SIM_read_register(conf_object_t *cpu, int reg);

DESCRIPTION
Returns the value of the specified processor register.
For the ARM target, this function returns the value of the register in the bank corresponding to the current mode. To access copies of the register in other banks, use the
read_register_mode function in the arm interface.
EXCEPTIONS
Index Thrown if reg is out of range.
RETURN VALUE
Value from the register.

281

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_register_arch_decoder()
NAME
SIM_register_arch_decoder, SIM_unregister_arch_decoder install/uninstall instruction decoders
SYNOPSIS
void
SIM_register_arch_decoder(decoder_t *decoder,
const char *arch, int arch_mode);

void
SIM_unregister_arch_decoder(decoder_t *decoder,
const char *arch, int arch_mode);

DESCRIPTION
SIM_register_arch_decoder makes it possible to install instruction decoders in Simics.
This allows adding instructions, or replacing existing instructions with new implementations.
SIM_unregister_arch_decoder unregisters decoders registered with SIM_register_arch_
decoder. SIM_unregister_arch_decoder must not be called while an instruction is executing. This is the case the decode and service routine functions of instruction decoders, in the operate function of the timing-model interface, and in the operation
function of the io-memory interface. It is also the case for callbacks for some haps. In
these cases, post an event using SIM_stacked_post and unregister the decoder from
the event handler.
When Simics decodes an instruction, it will first see if any instruction decoders are
registered for the current architecture. For any decoders it finds, Simics will let it
try to decode the instruction. The decoders are called in order, starting with the last
registered decoder, and if one decoder accepts the instruction, the rest of the decoders
will not be called.
When a decoder accepts an instruction, it creates a structure describing the decoded
instruction, including a pointer to a function that Simics will call each time the instruction is executed.
decoder is the decoder to register
arch is the target architecture that the decoder can decode instruction for. It is matched
against the architecture attribute on CPU objects to determine whether the decoder applies. It can also be given as NULL, which means that the decoders will be used for all
CPU architectures. The simplest way to find the value to use is to load a configuration
into Simics and check the value of the architecture attribute in the CPU object.
arch_mode is the instruction mode of the architecture. This should always be 0.

282

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

The decoder_t type is a structure providing the functions used to invoke the decoder.
typedef struct {
void *user_data;
int (*NOTNULL decode)(unsigned char *code,
int valid_bytes,
conf_object_t *cpu,
instruction_info_t *ii,
void *user_data);
int (*NOTNULL disassemble)(unsigned char *code,
int valid_bytes,
conf_object_t *cpu,
char *buffer,
void *user_data);
int (*NOTNULL flush)(conf_object_t *cpu,
instruction_info_t *ii,
void *user_data);
} decoder_t;

The decode function is called to decode an instruction pointed to by code. The first byte
represents the lowest address of the instruction in the simulated memory. valid_bytes
tells how many bytes can be read. The current CPU is given in the cpu parameter.
When the decoder has successfully decoded the instruction, it fills in the ii structure,
and returns the number of bytes used in the decoding. If it does not apply to the given
instruction, it should return zero. If the decoder needs more data it should return a
negative number corresponding to the total number of bytes needed. Simics will then
call the decoder again with more available bytes. This process is repeated until the
decoder accepts or rejects the instruction.
Note that in a shared memory multiprocessor, the cpu used in decoding may differ
from the CPU that executes the instruction, since the decoded instructions are cached
by Simics.
The disassemble function is called to disassemble an instruction. It uses the same
code, valid_bytes, and cpu parameters as the decode function. In addition, it takes a
pointer to a string buffer, buffer. The disassembly should be written to this buffer as
a null-terminated string with a maximum length of 256 characters, including the null
terminator. The return value is handled identically to the that of the decode function.
The flush function is called to free any memory allocated when decoding an instruction, including the register info array. Just like the other functions, it should return
zero if it doesnt recognize the instruction, and non-zero if it has handled it. Usually,
the way to recognize if a decoded instruction is the right one is to compare ii->ii_
ServiceRoutine with what is set in the decode function. Note that the cpu parameter
is the processor that caused the flush. It is more or less an arbitrary processor and
should be ignored.

283

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

In addition to the function pointers, the structure contains a user_data pointer that
is passed to all the functions. This can be used for passing any data to the decoder
functions.
The instruction_info_t is defined like this.
typedef struct instruction_info {
service_routine_t ii_ServiceRoutine;
unsigned int
ii_Arg;
unsigned int
ii_Type;
reg_info_t
*ii_RegInfo;
lang_void
*ii_UserData;
logical_address_t ii_LogicalAddress;
physical_address_t ii_PhysicalAddress;
} instruction_info_t;

ii_ServiceRoutine is a pointer to a service routine to be called by Simics every time the


instruction is executed. It has the following prototype:
typedef exception_type_t (*service_routine_t)(conf_object_t *cpu,
unsigned int arg,
lang_void *user_data);

ii_Arg is the argument that will be passed on to the service routine. It typically contains
a bit-field of parameters to the instruction such as register numbers or intermediate
values. It can also be a pointer to a structure if more appropriate.
ii_Type is either UD_IT_SEQUENTIAL or UD_IT_CONTROL_FLOW. A sequential type
means that the instruction does not perform any branches and the update of the program counter(s) is handled by Simics. In a control flow instruction on the other hand
it is up to the user to set the program counter(s).
ii_RegInfo should be used if Simics is running in out of order mode. An array of reg_
info_t should be allocated that describes the registers the instruction uses and if
they are used as input and/or output. The array should be terminated with a dummy
register (id equal to 0) which is neither input nor output (in and out both zero).
struct reg_info {
register_type_t type;
register_id_t id;
unsigned input:1;
unsigned output:1;
};

/*
/*
/*
/*

register type */
register id */
used as input */
used as output */

typedef struct reg_info reg_info_t;

The register_id of the PC(s) should not be filled in, Simics handles that automatically.
If the instruction manipulates a register not listed the value Sim_RI_Sync should be
used, this will disallow the instruction to run out of order.
284

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

The array needs to be deallocated when the instruction is flushed, see below.
ii_UserData can be filled in with other data.
The service routine function should return an exception when it is finished to signal
its status. If no exception occurs Sim_PE_No_Exception should be returned.
See exception_type_t in core/types.h for the different exceptions available.
A special return value, Sim_PE_Default_Semantics, can be returned; this signals
Simics to run the default semantics for the instruction. This is useful if the semantics
of an instruction should be changed but the user routine does not want to handle it all
the time.
EXAMPLE
See the source code for the example extension sample-user-decoder in [simics]/src/
extensions.
EXCEPTIONS
General Thrown if the same decoder is registered twice for the same architecture.
IllegalValue Thrown if the decoder doesnt have all function pointers set.
SEE ALSO
register_id_t

285

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_register_decoder()
NAME
SIM_register_decoder, SIM_unregister_decoder deprecated install/uninstall user
decoders
SYNOPSIS
void
SIM_register_decoder(user_decoder_t decoder);

void
SIM_unregister_decoder(user_decoder_t decoder);

DESCRIPTION
These functions are obsolete, use the SIM_register_arch_decoder and SIM_unregister_
arch_decoder functions instead.
SIM_register_decoder makes it possible to install user decoders in Simics. This gives
the user an interface to the instruction set allowing changes to the instructions semantics, adding new instructions or removing implemented ones.
When simics decodes an instructions it will first see if any user decoder is supplied
and in that case call it first. Several decoders can be installed and Simics will call them
in the reverse order they were registered; i.e., the last one first. Every decoder has the
option of either accepting the opcode given or pass it on to the next decoder.
If a decoder accepts the instruction it fills in an information structure which contains
a function pointer that Simics will call each time the instruction should be executed.
user_decoder is the decoder to register, it is defined like this:
typedef int (*NOTNULL user_decoder_t)(unsigned char *code,
int valid_bytes,
conf_object_t *cpu,
instruction_info_t *ii,
int action,
char *string_buffer);

code is a pointer to the instruction to decode. The first byte represents the lowest
address of the instruction in the simulated memory. valid_bytes tells how many
bytes can be read. If the decoder needs more data it should return a negative number
corresponding to the total number of bytes needed. Simics will then call the decoder
again with more available bytes. This process is repeated until the decoder accepts
or rejects the instruction. If the instruction is accepted its length in bytes should be
returned, otherwise zero.
cpu is the cpu decoding the instruction. Note that in a shared memory multiprocessor,
this may differ from the one executing the instruction since decoded instructions are
cached.
286

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

action is whether Simics wants to decode, disassemble or flush a previously decoded


instruction. For decoding, the value is UD_ACTION_DECODE and the instruction_info_
t structure ii should be filled in. The structure has the following fields:
typedef struct instruction_info {
service_routine_t ii_ServiceRoutine;
unsigned int
ii_Arg;
unsigned int
ii_Type;
reg_info_t
*ii_RegInfo;
lang_void
*ii_UserData;
logical_address_t ii_LogicalAddress;
physical_address_t ii_PhysicalAddress;
} instruction_info_t;

ii_ServiceRoutine is a pointer to a service routine to be called by Simics every time the


instruction is executed. It has the following prototype:
typedef exception_type_t (*service_routine_t)(conf_object_t *cpu,
unsigned int arg,
lang_void *user_data);

ii_Arg is the argument that will be passed on to the service routine. It typically contains
a bit-field of parameters to the instruction such as register numbers or intermediate
values. It can also be a pointer to a structure if more appropriate.
ii_Type is either UD_IT_SEQUENTIAL or UD_IT_CONTROL_FLOW. A sequential type
means that the instruction does not perform any branches and the update of the program counter(s) is handled by Simics. In a control flow instruction on the other hand
it is up to the user to set the program counter(s).
ii_RegInfo should be used if Simics is running in out of order mode. An array of reg_
info_t should be allocated that describes the registers the instruction uses and if
they are used as input and/or output. The array should be terminated with a dummy
register (id equal to 0) which is neither input nor output (in and out both zero).
struct reg_info {
register_type_t type;
register_id_t id;
unsigned input:1;
unsigned output:1;
};

/*
/*
/*
/*

register type */
register id */
used as input */
used as output */

typedef struct reg_info reg_info_t;

The register_id of the PC(s) should not be filled in, Simics handles that automatically.
If the instruction manipulates a register not listed the value Sim_RI_Sync should be
used, this will disallow the instruction to run out of order.
The array needs to be deallocated when the instruction is flushed, see below.
287

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

ii_UserData can be filled in with other data.


The service routine function should return an exception when it is finished to signal
its status. If no exception occurs Sim_PE_No_Exception should be returned.
See exception_type_t in core/types.h for the different exceptions available.
A special return value, Sim_PE_Default_Semantics, can be returned; this signals
Simics to run the default semantics for the instruction. This is useful if the semantics
of an instruction should be changed but the user routine does not want to handle it all
the time.
If Simics wants to disassemble the instruction the action value will be UD_ACTION_
DISASS and the string_buffer should be filled with the disassembled instruction
(max length is 256 characters). The ii structure should be ignored.
A value of UD_ACTION_FLUSH (code and string_buffer will be null, valid_bytes
zero) means that Simics wants to flush a cached decoded instruction. The instruction_
info_t structure ii will then hold the values previously stored there. If the userdecoder recognizes the ii->ii_ServiceRoutine function as its own it should now
free all allocated user data including the register info array, if allocated, and return a
non-zero value to indicate success. Otherwise zero should be returned letting other
user-decoders have a shot.
Use SIM_unregister_decoder to remove a user-decoder.
EXAMPLE
See the source code for the example extension decoder.
SEE ALSO
SIM_register_arch_decoder

288

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_reset_processor()
NAME
SIM_reset_processor reset the processor
SYNOPSIS
void
SIM_reset_processor(conf_object_t *cpu, int hard_reset);

DESCRIPTION
Performs a reset on the processor, causing a System Reset exception to be taken when
execution continues. cpu is the processor that should be reset. hard_reset indicates if
a soft (0) or hard (1) (power-on type) reset should be performed. If a hard reset is
requested, a number of register are initiated with default values.
EXCEPTIONS
General Thrown if cpu does not implement reset.

289

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_write_register()
NAME
SIM_write_register set register value
SYNOPSIS
void
SIM_write_register(conf_object_t *cpu, int reg, uinteger_t value);

DESCRIPTION
Sets the value of the specified processor register.
For the ARM target, this function sets the value of the register in the bank corresponding to the current mode. To access copies of the register in other banks, use the write_
register_mode function in the arm interface.
EXCEPTIONS
Index Thrown if reg is out of range.

290

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

Profiling
SIM_iter_next()
NAME
SIM_iter_next, SIM_iter_addr, SIM_iter_free Iterate over address profile counters
SYNOPSIS
FORCE_INLINE uint64
SIM_iter_next(addr_prof_iter_t *iter);

FORCE_INLINE generic_address_t
SIM_iter_addr(addr_prof_iter_t *iter);

FORCE_INLINE void
SIM_iter_free(addr_prof_iter_t *iter);

DESCRIPTION
EXPERIMENTAL. While this functionality is expected to be retained in future releases, the interface is likely to change.
An address profile iterator visits some of the counters of an address profiler in some
order. It is obtained from the iter function of the address_profiler interface.
SIM_iter_next advances the address profile iterator iter to the next nonzero counter
and returns the count. It will return 0 when there are no more counters to visit. Note
that the order in which the counters are visited is unspecified.
SIM_iter_addr returns the address of the counter returned by the most recent call to
iter_next.
When you are done with the iterator, deallocate it with SIM_iter_free.

291

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

Simulation Control
SIM_break_message()
NAME
SIM_break_message stop the simulation
SYNOPSIS
void
SIM_break_message(const char *msg);

DESCRIPTION
Display the reason why Simics will stop simulation.
This is similar to SIM_break_simulation, with the difference that it doesnt actually
break the simulation. It can be used by code that wants to display a break message
and stop the simulation by some other means.
SEE ALSO
SIM_break_simulation

292

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_break_simulation()
NAME
SIM_break_simulation stop the simulation
SYNOPSIS
void
SIM_break_simulation(const char *msg);

DESCRIPTION
Ask Simics to stop the simulation as soon as possible, displaying the supplied message.
Simics will normally stop before the next instruction is executed. If this function is
called when an instruction has started executing, and the instruction can be aborted, it
will rewind to before the instruction. This might leave the simulation is a state where
some repeatable part of the instruction is already executed.
SEE ALSO
SIM_break_message

293

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_continue()
NAME
SIM_continue continue the simulation
SYNOPSIS
pc_step_t
SIM_continue(integer_t steps);

DESCRIPTION
Runs the simulation the specified number of steps on the current CPU. Since Simics is
scheduling the processors in a round-robin fashion, other CPUs may run as well. This
happens if steps is greater than what is left of the current CPUs time quantum. Simics
will then run the other CPUs for their time quanta and then return to to the first CPU
executing the remaining steps. This can happen several times if steps cover several
time quanta.
The function may return before completing steps steps if a breakpoint is reached, user
code requests the simulation to be interrupted, or execution is interrupted via the
user interface. In such cases the current CPU may have changed (see SIM_current_
processor()) since Simics may have been executing in another processors time quantum.
If steps is 0, Simics will run forever or until it is interrupted as described above.
If this function is called from a context where simulation cannot continue, e.g., from
a callback function passed to SIM_post_command(), SIM_continue() will return immediately with return value 0 but the simulation will not be started until the calling
function has exited. If this is the case, any exceptions returned from the simulation
core will be discarded but the return value from the simulation can be read as an argument to the Core_Simulation_Stopped hap. You can query whether the current
state will result in such a postponed continuation by calling the SIM_postponing_
continue() function.
RETURN VALUE
The number of steps actually executed
EXCEPTIONS
General Thrown if steps has illegal value, a breakpoint is reached, or Simics already
was running.
SEE ALSO
SIM_post_command, SIM_postponing_continue, Core_Simulation_Stopped

294

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_postponing_continue()
NAME
SIM_postponing_continue ask if continue will be postponed
SYNOPSIS
int
SIM_postponing_continue(void);

DESCRIPTION
This function returns non-zero if calls to SIM_continue() would return immediately,
postponing the actual call to the Simics core.

295

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_simics_is_running()
NAME
SIM_simics_is_running check if Simics is running
SYNOPSIS
int
SIM_simics_is_running(void);

DESCRIPTION
Returns 1 if simics is running, i.e., executing target instructions, or 0 otherwise.

296

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

Simulation Independent Services


SIM_cancel_realtime_event()
NAME
SIM_cancel_realtime_event cancel callback in host time
SYNOPSIS
int
SIM_cancel_realtime_event(integer_t id);

DESCRIPTION
Cancel a callback registered by SIM_realtime_event, whose return value is specified
as id.
Returns 0 if the callback existed and was cancelled, or -1 if no callback with that identifier existed. (No exception is raised.)
SEE ALSO
SIM_realtime_event

297

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_notify_on_socket()
NAME
SIM_notify_on_socket, SIM_notify_on_object, SIM_notify_on_descriptor register notification on host I/O events
SYNOPSIS
void
SIM_notify_on_socket(int sock, notify_mode_t mode, int run_in_thread,
void (*callback)(lang_void *data), lang_void *data);

void
SIM_notify_on_object(HANDLE obj, int run_in_thread,
void (*callback)(lang_void *data), lang_void *data);

void
SIM_notify_on_descriptor(int fd, notify_mode_t mode, int run_in_thread,
void (*callback)(lang_void *data),
lang_void *data);

DESCRIPTION
These functions allows the function callback to be called with argument data whenever
a specific I/O event occurs on the host machine. If callback is a null function pointer, a
previously installed notification is removed.
If run_in_thread is nonzero, the callback function may be run in a thread where it
cannot access or call anything in Simics except for these functions and SIM_thread_
safe_callback. If run_in_thread is zero, the callback function is always run in the main
thread. This may incur a small penalty in latency (time between the occurrence of the
host event and execution of callback).
Notification on a specific event will be blocked during the execution of its callback
function.
SIM_notify_on_socket will call a registered callback depending on mode:
mode
Sim_NM_Read
Sim_NM_Write

condition
Socket is readable, closed, or incoming connection accepted
Socket is writeable, or outgoing connection has completed

Unix only: SIM_notify_on_descriptor will call a registered callback depending on


mode for a given file descriptor in a way similar to SIM_notify_on_socket.
Windows only: SIM_notify_on_object will call a registered callback when object (which
must be a waitable object) is in signalled state. The signalling object is modified in the
same way as the Windows wait functions (WaitForMultipleObjects etc).
298

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

Note: A notification should be removed before its socket or descriptor is closed.


SEE ALSO
SIM_thread_safe_callback

299

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_realtime_event()
NAME
SIM_realtime_event schedule callback in host time
SYNOPSIS
integer_t
SIM_realtime_event(unsigned delay, void (*callback)(lang_void *data),
lang_void *data, int run_in_thread, const char *desc);

DESCRIPTION
Register callback to be run in delay ms, with argument data. The delay is in real time
(on the host machine), and the actual delay may be somewhat larger because of host
scheduling.
If run_in_thread is nonzero, the callback may be run in a thread where it cannot access
or call anything in Simics except for SIM_thread_safe_callback. If run_in_thread is
zero, the callback function is always run in the main thread. This may cause the call
to occur slightly later than requested, depending on what Simics is doing at the time.
The desc parameter is only present for debugging and has no other effect; it should be
a static string describing the callback but may also be left NULL if desired.
The callback is only called once.
The return value is a non-zero identifier that can be used to cancel the callback using
SIM_cancel_realtime_event.
SEE ALSO
SIM_cancel_realtime_event, SIM_thread_safe_callback

300

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_thread_safe_callback()
NAME
SIM_thread_safe_callback call function synchronized with main thread
SYNOPSIS
void
SIM_thread_safe_callback(void (*f)(lang_void *data), lang_void *data);

DESCRIPTION
This is the only function in the Simics API that can be called from threads other than the
main simics thread. Failure to abide by this rule will result in undefined behavior. The
user should not make any assumptions about when the supplied function is called. It
may be called immediately, but it may also be called after this function has returned.

301

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

Simulator Translation Caches


SIM_STC_flush_cache()
NAME
SIM_STC_flush_cache, SIM_flush_I_STC_logical, SIM_flush_D_STC_logical, SIM_
flush_I_STC_physical, SIM_flush_D_STC_physical flush or remove entries in the
STCs of a cpu
SYNOPSIS
void
SIM_STC_flush_cache(conf_object_t *cpu);

void
SIM_flush_I_STC_logical(conf_object_t *cpu,
logical_address_t vaddr,
logical_address_t length);

void
SIM_flush_D_STC_logical(conf_object_t *cpu,
logical_address_t vaddr,
logical_address_t length);

void
SIM_flush_I_STC_physical(conf_object_t *cpu,
physical_address_t paddr,
physical_address_t length);

void
SIM_flush_D_STC_physical(conf_object_t *cpu,
physical_address_t paddr,
physical_address_t length,
read_or_write_t read_or_write);

DESCRIPTION
These functions remove entries from the Simics internal caches (STCs) or completely
flushes the STCs contents. Memory mappings which have been cached in the STCs
will be faster for Simics to execute. Simics extensions such as a cache model will need
to flush entries in the STC when a cache line is replaced, in order to be called when a
cache line is used again.
SIM_STC_flush_cache() flushes the entire contents of the STCs (both instruction and
data) from the specified cpu.
302

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

The SIM_flush_xxx functions removes specified memory ranges in the instruction or


data STC. The address range is either the logical or the physical address. The read_
or_write parameter specifies whether the read or the write D-STC should be flushed.
If the function doesnt have such a parameter, both read and write D-STCs are flushed.
The flushed address range is at least [vaddr . . . (vaddr + length 1)], but may be larger.
SIM_flush_D_STC_logical() currently always flushes an entire page.

303

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_flush_all_caches()
NAME
SIM_flush_all_caches clear Simicss internal caches
SYNOPSIS
void
SIM_flush_all_caches(void);

DESCRIPTION
Clears Simicss internal caches such as STC contents and intermediate code. This
function is mainly for Virtutech internal use (for debugging purposes) and may be
removed in the future.

304

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

Stalling
SIM_release_stall()
NAME
SIM_release_stall release stalling transaction
SYNOPSIS
void
SIM_release_stall(conf_object_t *obj, int id);

DESCRIPTION
Sometimes the stalling period of an memory transaction is not known by the timing
model. This can happen for example if the transaction is blocked by another transaction. In such case a very long stall-time can be returned to block the transaction. As
soon as the timing model finds out when the stalling is over the memory transaction
needs to be released.
This function changes the stalling period for a memory transaction with id id on CPU
cpu to zero. This means that the memory transaction may be issued the second time in
the next cycle.
NOTE
Only useful if Simics is running in out of order mode.

305

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_stall_count()
NAME
SIM_stall_count get number of cycles a processor has been stalled
SYNOPSIS
cycles_t
SIM_stall_count(conf_object_t *obj);

DESCRIPTION
SIM_stall_count returns the total number of cycles the processor associated to obj has
been stalled.
EXCEPTIONS
General Thrown if obj is NULL.
RETURN VALUE
Returns the total number of cycles the processor associated with obj has been stalled.

306

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_stall_cycle()
NAME
SIM_stall_cycle, SIM_stall stall execution a specified number of cycles
SYNOPSIS
void
SIM_stall_cycle(conf_object_t *obj, cycles_t cycles);

void
SIM_stall(conf_object_t *obj, double seconds);

DESCRIPTION
SIM_stall_cycle sets the stall time at obj. cycles is the number of clock cycles the processor will stall. A call to this function will overwrite the current time left to stall at
obj. No compensation is made if time differs between obj and where the function is
called from.
SIM_stall does the same thing as SIM_stall_cycle but the stall time is given in seconds.
EXCEPTIONS
General Thrown if obj is NULL.
General Thrown if cycles or seconds is negative.

307

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_stalled_until()
NAME
SIM_stalled_until query how many cycles that remains of stall
SYNOPSIS
cycles_t
SIM_stalled_until(conf_object_t *obj);

DESCRIPTION
SIM_stalled_until returns how many more cycles the processor will stall before the
associated processor starts to execute instructions again.
EXCEPTIONS
General Thrown if obj is NULL.
RETURN VALUE
Number of cycles remaining of stall.

308

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

Step and Time Events


SIM_cycle_count()
NAME
SIM_cycle_count, SIM_time query time queue for current time
SYNOPSIS
cycles_t
SIM_cycle_count(conf_object_t *obj);

double
SIM_time(conf_object_t *obj);

DESCRIPTION
SIM_cycle_count returns current simulated clock cycle count at obj. Note that if processors are running at different frequency, the number will differ between processors,
regardless of simulation quantum effects.
SIM_time returns current time at obj. Time is counted in seconds and has a maximum
resolution of one clock cycle.
EXCEPTIONS
General Thrown if obj is NULL.
RETURN VALUE
SIM_cycle_count returns the current time in number of cycles. SIM_time returns the
current time in seconds as a floating point value.

309

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_next_queue()
NAME
SIM_next_queue get next object that owns a queue
SYNOPSIS
conf_object_t*
SIM_next_queue(conf_object_t *obj);

DESCRIPTION
Returns the next object that owns an event queue. This function can be used to iterate
over all step and time queues. Passing a NULL argument will return the first object.
When given the last object it will return NULL.
EXCEPTIONS
General Object does not own an event queue.
RETURN VALUE
Next object that owns an event queue or NULL if last.
BUGS
There is no check that obj owns a queue, which it must.

310

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_stacked_post()
NAME
SIM_stacked_post insert an event that runs as soon as possible
SYNOPSIS
void
SIM_stacked_post(conf_object_t *obj,
event_handler_t func,
lang_void *user_data);

DESCRIPTION
The func function will be called with obj and user_data as arguments as soon as the
current instruction has completed. SIM_stacked_post will call the function after the
current instruction or event handler has returned.
Time is undefined when the function is called. If several functions are registered this
way before any of them has had a chance to run, the last registered will run first.
This call is mainly useful for actions that for various reasons cannot be done inside an
instruction.
EXCEPTIONS
General Thrown if obj or func is NULL.

311

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_step_clean()
NAME
SIM_step_clean remove events from the step queue
SYNOPSIS
void
SIM_step_clean(conf_object_t *obj,
event_handler_t func,
typed_lang_void *user_data);

DESCRIPTION
SIM_step_clean removes all events in the step queue associated with obj that match
func and user_data. If user_data is NULL it will match any parameter thus removing all
matching handlers regardless of their parameter.
EXCEPTIONS
General Thrown if obj or func is NULL.

312

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_step_count()
NAME
SIM_step_count query step queue count
SYNOPSIS
pc_step_t
SIM_step_count(conf_object_t *obj);

DESCRIPTION
SIM_step_count returns the number of executed program counter steps at obj. The
number of steps equal completed instructions + instructions getting exception + interrupts.
EXCEPTIONS
General Thrown if obj is NULL.
RETURN VALUE
number of pc steps, or zero if given a NULL pointer.

313

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_step_next_occurrence()
NAME
SIM_step_next_occurrence get number of steps until a step queue event occurs
SYNOPSIS
pc_step_t
SIM_step_next_occurrence(conf_object_t *obj,
event_handler_t func,
typed_lang_void *user_data);

DESCRIPTION
SIM_step_next_occurrence finds first event in objs associated step queue that matches
func and user_arg. If user_arg is NULL it will match any parameter. Returns steps to
occurrence + 1, or zero if there is no match.
EXCEPTIONS
General Thrown if obj or func is NULL.
RETURN VALUE
steps to event + 1, or 0 if no such event is in the queue.

314

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_step_post()
NAME
SIM_step_post add an event in step queue
SYNOPSIS
void
SIM_step_post(conf_object_t *obj, pc_step_t steps,
event_handler_t func, lang_void *user_data);

DESCRIPTION
SIM_step_post enqueues an event in the step queue. After steps steps at the processor
associated to obj, the event will occur, i.e. func will be called with obj and user_data as
arguments.
EXCEPTIONS
General Thrown if obj or func is NULL.

315

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_time_clean()
NAME
SIM_time_clean remove all matching events from time queue
SYNOPSIS
void
SIM_time_clean(conf_object_t *obj,
sync_t sync,
event_handler_t func,
typed_lang_void *user_data);

DESCRIPTION
SIM_time_clean removes all events in objs associated time queue that matches sync,
func and user_data. If user_data is NULL it will match any parameter, thus removing all
installed functions that match regardless of the argument to handler.
EXCEPTIONS
General Thrown if obj or func is NULL.

316

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_time_next_occurrence()
NAME
SIM_time_next_occurrence get cycles to matching event
SYNOPSIS
cycles_t
SIM_time_next_occurrence(conf_object_t *obj,
event_handler_t func,
typed_lang_void *user_data);

DESCRIPTION
SIM_time_next_occurrence finds first event in the time queue associated to obj that
matches func and user_data. If the user_data argument is NULL it will match any parameter. Returns timetooccurrence + 1, or zero if there is no match.
EXCEPTIONS
General Thrown if obj or func is NULL.
RETURN VALUE
SIM_time_next_occurrence returns cycles to event + 1, 0 if no match.

317

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_time_post()
NAME
SIM_time_post, SIM_time_post_cycle add event to time queue
SYNOPSIS
void
SIM_time_post(conf_object_t *obj,
double seconds,
sync_t sync,
event_handler_t func,
lang_void *user_data);

void
SIM_time_post_cycle(conf_object_t *obj,
cycles_t cycles,
sync_t sync,
event_handler_t func,
lang_void *user_data);

DESCRIPTION
SIM_time_post will schedule an event that will occur after delta_seconds counted from
local current time at obj. The time is rounded down to the nearest clock cycle, except
between zero (inclusive) up to one where it will be rounded up to one. At that time
func() will be called with obj and user_data as arguments.
typedef enum {
Sim_Sync_Processor = 0,
/* Sim_Sync_Node = 1,
Sim_Sync_Machine = 2
} sync_t;

not supported yet */

If sync is set to Sim_Sync_Machine, all other objects will have the same local time
when the event occurs. This requires that the delta is larger than the simulation time
quantum if the simulation is not currently synchronized. If the delta is smaller than
the quantum and time is not synchronized, it will be set to the quantum before the
event is inserted.
SIM_time_post_cycle does the same as SIM_time_post but time is specified as a number of clock cycles, not in seconds. zero cycles is not rounded up to one cycle. Note
that the clock cycle length is typically set in the simics configuration and may differ
between processors.
SIM_time_next_occurrence finds first event in the time queue associated with obj that
matches func and user_data. If the user_data argument is NULL, it will match any parameter. Returns the time to occurrence + 1, or zero if there is no match.
318

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_time_clean removes all events in objs associated time queue that matches func
and user_data. If user_data is NULL, it will match any parameter, thus removing all
functions that match regardless of the argument to func. Note that the older version
of SIM_time_clean() without the sync parameter is deprecated since Simics 1.6.
SIM_cycle_count returns current simulated clock cycle count at obj. Note that if processors are running at different frequency, the number will differ between processors,
regardless of simulation quantum effects.
SIM_time returns current time at obj. Time is counted in seconds and has a maximum
resolution of a clock cycle.
SIM_stall_cycle set the stall time at obj. cycle is the number of clock cycles the processor will stall. A call to this function will overwrite the current time left to stall at obj.
No compensation is made if time differs between obj and where the function is called
from.
SIM_stall does the same thing as SIM_stall_cycle but the stall time is given in seconds.
SIM_stalled_until returns how may more cycles the processor will stall.
SIM_stall_count returns the total number of cycles the processor has been stalled.
EXCEPTIONS
Index Thrown if sync has an illegal value.
General Thrown if obj or func is NULL.
General Thrown if seconds violates the minimum time quantum for a synchronizing
event or if it is negative.

319

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

User Interface
SIM_get_batch_mode()
NAME
SIM_get_batch_mode return setting of the batch-mode
SYNOPSIS
int
SIM_get_batch_mode(void);

DESCRIPTION
This function returns the current value of Simicss batch-mode flag.

320

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_is_interactive()
NAME
SIM_is_interactive running interactive command predicate
SYNOPSIS
int
SIM_is_interactive(void);

DESCRIPTION
Returns true if Simics is running commands from the Simics prompt, as opposed to
running commands from a file via the -x command line option, the run-commandfile CLI command, or the SIM_run_command_file() API function.

321

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_post_command()
NAME
SIM_post_command post callback to be run when simulation is stopped
SYNOPSIS
void
SIM_post_command(void (*f)(lang_void *data), lang_void *data);

DESCRIPTION
This function posts f(data) to be called from a stable state in Simics. This means that
Simics will stop the simulation, if it is in progress (causing a Core_Simulation_
Stopped hap), finish running any event-handlers, hap-handlers, or commands, and
then do the call.
Note that the simulation will be stopped when f returns, but any call to SIM_continue()
from within f will cause the simulation to restart immediately after.
Note: This function is deprecated, and may disappear in a future release.
SEE ALSO
SIM_continue

322

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_quit()
NAME
SIM_quit quit Simics
SYNOPSIS
void
SIM_quit(int exit_code);

DESCRIPTION
Quit Simics in orderly fashion. The Simics process will return the value exit_code.

323

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_run_command_file()
NAME
SIM_run_command_file read CLI commands from file
SYNOPSIS
void
SIM_run_command_file(const char *file);

DESCRIPTION
Read and execute the script-file file; i.e., execute each line in the file as if it was typed
at the Simics prompt.
This function is functionally equivalent to the -x command line option.
SEE ALSO
run-command-file

324

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_set_prompt()
NAME
SIM_set_prompt change prompt in Simics
SYNOPSIS
void
SIM_set_prompt(const char *new_prompt);

DESCRIPTION
Change the current command-line prompt in Simics.

325

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_source_python()
NAME
SIM_source_python, SIM_source_python_in_module execute Python source file
SYNOPSIS
void
SIM_source_python(const char *file);

void
SIM_source_python_in_module(const char *file, const char *module);

DESCRIPTION
SIM_source_python() will execute a Python source file as specified by the file name file.
Note that this assumes that the Python frontend has been loaded (this is the default
frontend in Simics). SIM_source_python_in_module() is similar but imports the file in
a named Python module.
EXCEPTIONS
General Thrown if there was an error when executing the Python script.

326

VIRTUTECH CONFIDENTIAL

3.3.3

3.3. Simics API Functions

PCI

The PCI Device API is a set of functions that simplifies the work of writing PCI devices
in Simics. The functions are implemented in the file src/devices/pci-device/pcidevice.c. This file has to be included as a source file in modules using the API. The Simics
User Guide contain descriptions of PCI in Simics, and how to write own PCI devices.

327

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

Function List
PCIE_send_message()
NAME
PCIE_send_message send a message to root complex
SYNOPSIS
void
PCIE_send_message(pci_device_t *pci, pcie_message_type_t type,
byte_string_t payload);

DESCRIPTION
Send a PCI Express message to the root complex, of a given type with a possibly empty
payload. This function is only available to PCI Express devices.
The pcie_message_type_t has the following definition:
typedef enum {
/* INTx emulation */
PCIE_Msg_Assert_INTA
PCIE_Msg_Assert_INTB
PCIE_Msg_Assert_INTC
PCIE_Msg_Assert_INTD
PCIE_Msg_Deassert_INTA
PCIE_Msg_Deassert_INTB
PCIE_Msg_Deassert_INTC
PCIE_Msg_Deassert_INTD

=
=
=
=
=
=
=
=

0x20,
0x21,
0x22,
0x23,
0x24,
0x25,
0x26,
0x27,

/* Power Management */
PCIE_PM_Active_State_Nak
PCIE_PM_PME
PCIE_PM_Turn_Off
PCIE_PM_PME_TO_Ack

=
=
=
=

0x14,
0x18,
0x19,
0x1B,

/* Error Messages */
PCIE_ERR_COR
PCIE_ERR_NONFATAL
PCIE_ERR_FATAL

= 0x30,
= 0x31,
= 0x33,

/* Locked Transaction */
PCIE_Locked_Transaction

= 0x00,

/* Slot Power Limit */


PCIE_Set_Slot_Power_Limit

= 0x90,

328

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

/* Hot Plug Messages */


PCIE_HP_Power_Indicator_On
PCIE_HP_Power_Indicator_Blink
PCIE_HP_Power_Indicator_Off
PCIE_HP_Attention_Button_Pressed
PCIE_HP_Attention_Indicator_On
PCIE_HP_Attention_Indicator_Blink
PCIE_HP_Attention_Indicator_Off
} pcie_message_type_t;

329

=
=
=
=
=
=
=

0x45,
0x47,
0x44,
0x48,
0x41,
0x43,
0x40

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_add_config_register()
NAME
PCI_add_config_register add device specific configuration register
SYNOPSIS
void
PCI_add_config_register(pci_device_t *pci, uint32 offset,
const char *name, int size, uint32 mask,
uint32 initial_value);

DESCRIPTION
Adds a device specific configuration register to the generic PCI device. When the
generic PCI code knows the size of the register, it can handle overlapping register accesses. This means that the conf_write_func function (registered with PCI_device_
init) always will be called with an offset that is the start of a register. It is not possible
to override the standard configuration registers using this function. The mask argument is the write mask. Only bits set in this mask will be writable in the register. Note
that register names and sizes are not checkpointed and always has to be initialized
when a device is instantiated. The mask, however, is checkpointed since it may be
changed at run-time.
The newly created config register will contain initial_value.

330

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_bridge_default_access_not_taken()
NAME
PCI_bridge_default_access_not_taken default handling of unclaimed accesses
SYNOPSIS
exception_type_t
PCI_bridge_default_access_not_taken(
conf_object_t *obj,
conf_object_t *src_space, conf_object_t *dst_space,
exception_type_t ex,
generic_transaction_t *mem_op,
map_info_t mapinfo);

DESCRIPTION
If no callback is installed to handle accesses to unmapped addresses for type 1 devices,
then this function is called. It set the master abort flag in the Secondary Status
register, and return a value with all ones. Master abort mode 1, where a target abort
on the primary bus is signalled instead, is currently not implemented.

331

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_bridge_default_interrupt_lowered()
NAME
PCI_bridge_default_interrupt_lowered default handling of secondary interrupts
SYNOPSIS
static void
PCI_bridge_default_interrupt_lowered(conf_object_t *obj,
conf_object_t *irq_obj,
int dev, int pin);

DESCRIPTION
Performs the default handling of lowered interrupts on the secondary PCI bus that
should be routed to the primary bus. The interrupt line is changed in the following
way: pin = (pin + device) % 4. It is possible to override this function using
PCI_bridge_init.

332

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_bridge_default_interrupt_raised()
NAME
PCI_bridge_default_interrupt_raised default handling of secondary interrupts
SYNOPSIS
static void
PCI_bridge_default_interrupt_raised(conf_object_t *obj,
conf_object_t *irq_obj,
int dev, int pin);

DESCRIPTION
Performs the default handling of raised interrupts received on the secondary PCI bus
that should be routed to the primary bus. The interrupt line is changed in the following way: pin = (pin + device) % 4. It is possible to override this function
using PCI_bridge_init.

333

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_bridge_default_system_error()
NAME
PCI_bridge_default_system_error default system error handling for bridges
SYNOPSIS
void
PCI_bridge_default_system_error(conf_object_t *obj);

DESCRIPTION
If no callback is installed to handle system errors for type 1 devices, then this function
is called. It will set the system error received bit in the Secondary Status register,
and signal system error on the primary bus.

334

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_bridge_init()
NAME
PCI_bridge_init Initialize generic PCI bridge device
SYNOPSIS
void
PCI_bridge_init(pci_device_t *pci,
void (*system_error)(conf_object_t *obj),
exception_type_t (*access_not_taken)(
conf_object_t *obj,
conf_object_t *src_space,
conf_object_t *dst_space,
exception_type_t ex,
generic_transaction_t *mem_op,
map_info_t mapinfo),
void (*interrupt_raised)(
conf_object_t *obj,
conf_object_t *dev_obj,
int device, int pin),
void (*interrupt_lowered)(
conf_object_t *obj,
conf_object_t *dev_obj,
int device, int pin),
int forward_io, int forward_io32,
int forward_mem,
int forward_prefetchable,
int forward_prefetchable64);

DESCRIPTION
Initializes a generic PCI-to-PCI (type 1) device. This function should be called directly
after PCI_device_init. The system_error callback can be set to receive system errors
on the secondary bus. If none is given, the PCI_bridge_default_system_error function
is used as default. Similarly for the access_not_taken argument, that defaults to PCI_
bridge_default_access_not_taken. The interrupt_raised and interrupt_lowered functions
can be used to override PCI_bridge_default_interrupt_raised and PCI_bridge_default_
interrupt_lowered. The next arguments specify what kind of transactions that the
bridge supports. 16-bit I/O, 32-bit I/O operations, memory, prefetchable memory
and 64-bit prefetchable memory operations.

335

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_bridge_map_setup()
NAME
PCI_bridge_map_setup Set optional memory mapping attributes
SYNOPSIS
void
PCI_bridge_map_setup(
pci_device_t *pci,
int io_down_priority, int io_down_align_size, int io_down_endian,
int mem_down_priority, int mem_down_align_size, int mem_down_endian,
int pref_down_priority, int pref_down_align_size, int pref_down_endian,
int io_up_priority, int io_up_align_size, int io_up_endian,
int mem_up_priority, int mem_up_align_size, int mem_up_endian);

DESCRIPTION
Configures the bridges memory mappings. The priority, align_size boundary and a
reverse-endian flag can be set for each mapping. These values are described in the
map attribute of the memory-space class. Default is 0 for all values. The mappings
that can be modified are IO downstream, memory downstream, prefetchable memory
downstream, IO upstream and memory upstream.

336

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_config_register_name()
NAME
PCI_config_register_name return name of a configuration register
SYNOPSIS
const char *
PCI_config_register_name(pci_device_t *pci, uint32 offset);

DESCRIPTION
Returns the name of a configuration register, specified by a byte offset into the configuration header. Only standard configuration registers, i.e. as defined in the PCI
specification, are handled. The header type of the PCI device affects the result.
RETURN VALUE
The name of the configuration register is returned if the offset corresponds to a valid
configuration register. If not, NULL is returned.

337

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_config_register_size()
NAME
PCI_config_register_size return size of a configuration register
SYNOPSIS
uint32
PCI_config_register_size(pci_device_t *pci, uint32 offset);

DESCRIPTION
Returns the size of a configuration register, specified by a byte offset into the configuration header. Only standard configuration registers, i.e. as defined in the PCI
specification, are handled. The header type of the PCI device affects the result.
RETURN VALUE
The size (in bytes) of the configuration register is returned if the offset corresponds to
a valid configuration register. If not, 0 is returned.

338

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_configuration_access()
NAME
PCI_configuration_access access the configuration space
SYNOPSIS
exception_type_t
PCI_configuration_access(pci_device_t *pci,
generic_transaction_t *mop);

DESCRIPTION
The PCI_configuration_access function performs an access to the configuration header
registers. It handles overlapping accesses and both reads and writes. This function
is typically only needed for PCI device that map the configuration space in the I/O
and/or memory space mappings. The PCI device can then call this function. Accesses
using the configuration space it handled by the generic PCI device itself (by calling
this function).
RETURN VALUE
The returned value is always Sim_PE_No_Exception.

339

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_data_from_memory()
NAME
PCI_data_from_memory, PCI_data_to_memory read/write raw data from memory space
SYNOPSIS
exception_type_t
PCI_data_from_memory(pci_device_t *pci, addr_space_t space,
uint8 *buffer, uint64 address, uint64 size);

exception_type_t
PCI_data_to_memory(pci_device_t *pci, addr_space_t space,
uint8 *buffer, uint64 address, uint64 size);

DESCRIPTION
PCI_data_from_memory reads data from a memory-space specified by space, and places
it in a buffer pointed to by buffer. No endian conversion is performed. PCI_data_to_
memory writes data to the memory space.
RETURN VALUE
The pseudo exception from the memory-space is returned.

340

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_default_configuration_read_access()
NAME
PCI_default_configuration_read_access default function for configuration register
reads
SYNOPSIS
uint32
PCI_default_configuration_read_access(conf_object_t *obj,
uint32 offset, uint32 size);

DESCRIPTION
A PCI device can override this default configuration read function with a function
specified in the PCI_device_init call. The overriding function can then call this default
function for configuration registers that it does not handle itself.
RETURN VALUE
The value of the configuration register is returned.

341

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_default_configuration_write_access()
NAME
PCI_default_configuration_write_access default function for configuration register writes
SYNOPSIS
void
PCI_default_configuration_write_access(conf_object_t *obj,
uint32 offset, uint32 size,
uint32 value);

DESCRIPTION
A PCI device can override this default configuration wite function with a function
specified in the PCI_device_init call. The overriding function can then call this default function for configuration registers that it does not handle itself. Side-effects for
the Command, Status, Base Address, Secondary Status and Expansion ROM
Base registers are handled.

342

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_default_device_reset()
NAME
PCI_default_device_reset default PCI device reset handling
SYNOPSIS
void
PCI_default_device_reset(conf_object_t *obj);

DESCRIPTION
A PCI device can override this default reset function with a function specified in the
PCI_device_init call. The overriding function can then call this default function to
get the default behavior as well. All memory mappings are disabled, and the following registers are cleared: Command, Status, Cache Line Size, Latency Timer,
BIST, Interrupt Line and all base address registers.

343

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_device_init()
NAME
PCI_device_init initialize the generic PCI device
SYNOPSIS
void
PCI_device_init(log_object_t *log, int log_group,
pci_device_t *pci,
pci_device_t *(*unused)(conf_object_t *), /* call with NULL */
void (*pci_bus_reset)(conf_object_t *obj),
uint32 (*conf_read_func)(conf_object_t *obj,
uint32 offset,
uint32 size),
void (*conf_write_func)(conf_object_t *obj,
uint32 offset,
uint32 size,
uint32 value),
exception_type_t (*pci_operation)(
conf_object_t *obj,
generic_transaction_t *mem_op,
map_info_t map_info));

DESCRIPTION
Initializes the generic PCI device and optionally overrides some default functions. The
arguments log and pci are pointers within the device structure, and log_group is the log
group (as defined by SIM_log_register_groups) that the generic PCI device should use
for configuration related logging. Use 0 if no log groups are defined. The unused
function should be NULL. PCI bus resets are delivered to each PCI device by calling
the installed pci_bus_reset function. The conf_read_func and conf_write_func functions
are optional, they can be used to override the default behavior on accesses to the devices configuration registers. When called, the offset and size arguments corresponds
to a complete configuration register if it is known. It is therefore recommended that
device specific registers are added with PCI_add_config_register. I.e. partial and overlapping accesses are handled by the generic PCI device code before these callbacks are
called. Accesses that do not correspond to known registers are handled byte by byte.
The pci_irq_ack function is also optional, it is only used if the device responds to Interrupt Acknowledge cycles on the PCI bus. The last argument, pci_operation, is required.
This function is called for all accesses to the memory and I/O mappings of the device.
Memory and I/O space mappings can be created with PCI_handle_mapping32 and
PCI_handle_mapping64.
The generic PCI device code will use the object_data field of the conf_object_t
struct, it should not be modified by the code implementing a specific device.

344

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_get_bus_address()
NAME
PCI_get_bus_address get the bus address of a device
SYNOPSIS
int
PCI_get_bus_address(pci_device_t *pci);

DESCRIPTION
Returns the PCI bus address for the device.
RETURN VALUE
The PCI bus address, in PCI Type 1 address format. I.e. bus << 16 | device <<
11 | function << 8. On error, if the device isnt found on the bus, -1 is returned.

345

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_get_config_register_mask()
NAME
PCI_get_config_register_mask get write mask of a configuration register
SYNOPSIS
uint32
PCI_get_config_register_mask(pci_device_t *pci, uint32 offset);

DESCRIPTION
Returns the write mask for a configuration register.
RETURN VALUE
Configuration register write mask.

346

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_handle_mapping32()
NAME
PCI_handle_mapping32, PCI_handle_mapping64 handle base address register
SYNOPSIS
void
PCI_handle_mapping32(pci_device_t *pci, int reg,
addr_space_t space,
uint32 size, int function, int priority,
uint64 target_offset,
conf_object_t *target,
int alignment, int inverse_endian);

void
PCI_handle_mapping64(pci_device_t *pci, int reg,
uint64 size, int function, int priority,
uint64 target_offset,
conf_object_t *target,
int alignment, int inverse_endian);

DESCRIPTION
Tells the generic PCI device code to handle the memory mapping associated with the
base address at configuration header offset reg. All read and write accesses to the base
address will be handled, and the mappings will be enabled and disabled according to
the enable bits in the PCI command register, and for expansion ROM also the enable bit
in the base address register itself. The lowest bits in the base address register will be set
to indicate space type and if the device is 32 or 64 bit addressable. 64 bit mappings are
registered with PCI_handle_mapping64, and 32 bit ones with PCI_handle_mapping32.
The space argument specifies if the memory or I/O space is used. The size argument is
the size of the memory mappings, and function a function number used to identify the
mapping. The priority should be 0, unless the device can have mappings that overlap,
in that case each mapping must have unique priority. By default the device itself is
mapped at the base address, but in some cases another object should be the target.
In that case, the target argument can be set, and target_offset to the byte offset into the
target. It is also possible to set an alignment boundary size, and an inverse endian
flags. These are documented with the map attribute in the memory-space class.
There are also functions in the PCI Device API that can be used to modify the mapping
in run-time. This is not needed for standard PCI devices.

347

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_raise_interrupt()
NAME
PCI_raise_interrupt, PCI_lower_interrupt, PCI_raise_interrupt_pin, PCI_lower_interrupt_
pin raise and lower a PCI interrupt
SYNOPSIS
void
PCI_raise_interrupt(pci_device_t *pci);

void
PCI_lower_interrupt(pci_device_t *pci);

void
PCI_raise_interrupt_pin(pci_device_t *pci, int pin);

void
PCI_lower_interrupt_pin(pci_device_t *pci, int pin);

DESCRIPTION
PCI_raise_interrupt raises an interrupt on the pin defined by the PCI_INTERRUPT_
PIN configuration register. If an interrupt is already asserted, the call has no effect.
Similarly for PCI_lower_interrupt that lowers the interrupt level if it already is raised.
The PCI_raise_interrupt_pin and PCI_lower_interrupt_pin functions take an extra argument that is the interrupt pin. These two functions should not be used by most PCI
devices, but bridges may need them.
NOTE
A raise triggers an interrupt, and refers to the logical signal. It does not reflect the
actual physical signal level on the PCI bus where interrupt lines are active low.

348

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_read_sized_config_register()
NAME
PCI_read_sized_config_register, PCI_read_config_register, PCI_write_config_register
read a configuration register
SYNOPSIS
uint32
PCI_read_sized_config_register(pci_device_t *pci, uint32 offset,
uint32 size);

uint32
PCI_read_config_register(pci_device_t *pci, uint32 offset);

void
PCI_write_config_register(pci_device_t *pci, uint32 offset,
uint32 value);

DESCRIPTION
Returns the value of a configuration register specified by a byte offset into the configuration header. The PCI_read_config_register function can only be used to read
standard configuration registers, i.e. as defined in the PCI specification, and registers
that are added with PCI_add_config_register. For other configuration registers the
PCI_read_sized_config_register should be used, since the sizes of those registers are
not known to the generic PCI device.
RETURN VALUE
The value, in host endian order, of the configuration register.

349

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_register_bridge_attributes()
NAME
PCI_register_bridge_attributes register generic PCI bridge attributes
SYNOPSIS
void
PCI_register_bridge_attributes(conf_class_t *pci_class);

DESCRIPTION
Registers the generic PCI bridge device attributes, and performs some early initialization. This function should be called directly after PCI_register_device_attributes.

350

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_register_device_attributes()
NAME
PCI_register_device_attributes register generic PCI device attributes
SYNOPSIS
void
PCI_register_device_attributes(
conf_class_t *pci_class,
int (*interrupt_ack)(conf_object_t *obj),
void (*special_cycle)(conf_object_t *obj, uint32 value),
void (*system_error)(conf_object_t *obj),
void (*interrupt_raised)(conf_object_t *obj, int pin),
void (*interrupt_lowered)(conf_object_t *obj, int pin));

DESCRIPTION
Registers the generic PCI device attributes, and performs some early initialization. The
PCI_register_device_attributes function should be called as early as possible, typically
from the modules init_local function. The first argument is the configuration class
for the PCI device. The following arguments are optional functions with callbacks
for events on the PCI bus. They should only be supplied by devices that respond to
Interrupt Acknowledge Cycles, listens to Special Cycle data, listens to the system error
line (SERR#), or receives peer-to-peer interrupts.

351

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_set_config_register_mask()
NAME
PCI_set_config_register_mask set write mask of a configuration register
SYNOPSIS
void
PCI_set_config_register_mask(pci_device_t *pci, uint32 offset, uint32 mask);

DESCRIPTION
This function sets the write mask of a configuration register. Only bits set to 1 in
mask are writable. Many PCI devices do not implement all bits in their configuration
registers. By setting a write mask for such registers, the default access handling in the
generic PCI device code can still be used.

352

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_set_map_base()
NAME
PCI_set_map_base, PCI_get_map_base, PCI_set_map_size, PCI_get_map_size, PCI_
set_map_enable, PCI_get_map_enable, PCI_set_map_offset, PCI_get_map_offset,
PCI_set_map_ignore_command, PCI_get_map_ignore_command, PCI_set_map_always_on,
PCI_get_map_always_on query and modify base address mapping
SYNOPSIS
void
PCI_set_map_base(pci_device_t *pci, int reg, uint64 base);

uint64
PCI_get_map_base(pci_device_t *pci, int reg);

void
PCI_set_map_size(pci_device_t *pci, int reg, uint64 size);

uint64
PCI_get_map_size(pci_device_t *pci, int reg);

void
PCI_set_map_enable(pci_device_t *pci, int reg, int enable);

int
PCI_get_map_enable(pci_device_t *pci, int reg);

void
PCI_set_map_offset(pci_device_t *pci, int reg, uint64 target_offset);

uint64
PCI_get_map_offset(pci_device_t *pci, int reg);

void
PCI_set_map_ignore_command(pci_device_t *pci, int reg, int map_ignore_command);

int
PCI_get_map_ignore_command(pci_device_t *pci, int reg);

353

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

void
PCI_set_map_always_on(pci_device_t *pci, int reg, int always_on);

int
PCI_get_map_always_on(pci_device_t *pci, int reg);

DESCRIPTION
The following functions can be used to modify base address mappings that have been
registered with PCI_handle_mapping32 and PCI_handle_mapping64. Standard PCI
devices typically doesnt have to modify the mappings, but some bridges and special
devices have alternative registers to modify the memory mappings. PCI_set_map_
base changes the base address, and also the contents of the base address register. PCI_
set_map_size changes the size of the memory mapping. The size should be changed
with care, since it may create an non-sized aligned mapping. The PCI_set_map_enable
function can be used to enable and disable a mapping, this enable is in addition to
the standard PCI enable/disable. Finally the PCI_set_map_offset changes the target
offset of the mapping. The _get_ functions can be used to query the current state of
a mapping.

354

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_set_may_stall()
NAME
PCI_set_may_stall, PCI_get_may_stall Specifies if memory accesses are stallable
SYNOPSIS
void
PCI_set_may_stall(pci_device_t *pci, int may_stall);

int
PCI_get_may_stall(pci_device_t *pci);

DESCRIPTION
The PCI_set_may_stall function can be used to enable and disable stallable memory
accesses. By default all accesses initiated by the device are not stallable. PCI_get_
may_stall is used to query if stallable accesses are enabled or not.

355

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_system_error()
NAME
PCI_system_error assert system error
SYNOPSIS
void
PCI_system_error(pci_device_t *pci);

DESCRIPTION
Triggers a system error on the PCI bus, i.e asserts the SERR# line. System Errors are
used for asynchronous signalling of unrecoverable errors, and are usually handled by
the host-to-PCI bridge.

356

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_value_from_memory()
NAME
PCI_value_from_memory, PCI_value_to_memory read/write value from memory space
SYNOPSIS
uint64
PCI_value_from_memory(pci_device_t *pci, addr_space_t space,
exception_type_t *ex,
uint64 address, uint32 size);

exception_type_t
PCI_value_to_memory(pci_device_t *pci, addr_space_t space,
uint64 value,
uint64 address, uint32 size);

DESCRIPTION
PCI_value_from_memory reads data from a memory-space specified by space, and returns it in the endian byte-order of the host, i.e. as a value. PCI_value_to_memory
writes value to the memory space.
RETURN VALUE
The pseudo exception from the memory-space is returned.

357

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

PCI_write_sized_config_register()
NAME
PCI_write_sized_config_register write a configuration register
SYNOPSIS
void
PCI_write_sized_config_register(pci_device_t *pci, uint32 offset,
uint32 value, uint32 size);

DESCRIPTION
Writes a value, in host endian order, to a configuration register specified by a byte offset into the configuration header. The PCI_write_config_register function can only be
used to write standard configuration registers, i.e. as defined in the PCI specification.
PCI_write_sized_config_register is typically used to write device specific configuration registers since the sizes of those registers are not known to the generic PCI device.
NOTE
No side effects are triggered by writing configuration registers with these functions.
PCI_default_configuration_write_access can be used to get the side effects handled
by the generic PCI device.

358

VIRTUTECH CONFIDENTIAL

3.3.4

3.3. Simics API Functions

Micro-Architecture Interface

The Micro-Architecture Interface is described in the Simics MAI Guide.

359

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

Function List
SIM_instruction_begin()
NAME
SIM_instruction_begin, SIM_instruction_end, SIM_instruction_insert, SIM_instruction_
child, SIM_instruction_parent, SIM_instruction_cpu, SIM_instruction_proceed, SIM_
instruction_fetch, SIM_instruction_decode, SIM_instruction_execute, SIM_instruction_
retire, SIM_instruction_commit, SIM_instruction_squash, SIM_instruction_rewind,
SIM_instruction_handle_exception, SIM_instruction_handle_interrupt, SIM_instruction_
nth_id, SIM_instruction_set_stop_phase, SIM_instruction_phase, SIM_instruction_
speculative, SIM_instruction_force_correct, SIM_instruction_type, SIM_instruction_
length, SIM_instruction_status, SIM_instruction_get_reg_info, SIM_instruction_read_
input_reg, SIM_instruction_read_output_reg, SIM_instruction_write_input_reg, SIM_
instruction_write_output_reg, SIM_instruction_is_sync, SIM_instruction_get_user_
data, SIM_instruction_set_user_data, SIM_instruction_id_from_mem_op_id, SIM_
instruction_stalling_mem_op, SIM_instruction_store_queue_mem_op, SIM_instruction_
remaining_stall_time, SIM_instruction_get_field_value, SIM_instruction_opcode, SIM_
release_stall, SIM_get_unique_memory_transaction_id Micro-Architecture Interface functions
SYNOPSIS
instruction_id_t
SIM_instruction_begin(conf_object_t *obj);

instruction_error_t
SIM_instruction_end(instruction_id_t ii);

void
SIM_instruction_insert(instruction_id_t parent_ii,
instruction_id_t ii);

instruction_id_t
SIM_instruction_child(instruction_id_t ii, int n);

instruction_id_t
SIM_instruction_parent(instruction_id_t ii);

conf_object_t *
SIM_instruction_cpu(instruction_id_t ii)
/*
*/
instruction_error_t

360

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

SIM_instruction_proceed(instruction_id_t ii);

instruction_error_t
SIM_instruction_proceed(instruction_id_t ii);

instruction_error_t
SIM_instruction_fetch(instruction_id_t ii);

instruction_error_t
SIM_instruction_decode(instruction_id_t ii);

instruction_error_t
SIM_instruction_execute(instruction_id_t ii);

instruction_error_t
SIM_instruction_retire(instruction_id_t ii);

instruction_error_t
SIM_instruction_commit(instruction_id_t ii);

instruction_error_t
SIM_instruction_squash(instruction_id_t ii);

instruction_error_t
SIM_instruction_rewind(instruction_id_t ii, instruction_phase_t phase)
/*
*/
instruction_error_t
SIM_instruction_handle_exception(instruction_id_t ii);

instruction_error_t
SIM_instruction_handle_exception(instruction_id_t ii);

instruction_error_t
SIM_instruction_handle_interrupt(conf_object_t *cpu,
exception_type_t vector);

instruction_id_t
SIM_instruction_nth_id(int n);

361

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

void
SIM_instruction_set_stop_phase(conf_object_t *obj,
instruction_phase_t phase,
int on);

instruction_phase_t
SIM_instruction_phase(instruction_id_t ii);

int
SIM_instruction_speculative(instruction_id_t ii);

void
SIM_instruction_force_correct(instruction_id_t ii);

instr_type_t
SIM_instruction_type(instruction_id_t ii);

int
SIM_instruction_length(instruction_id_t ii);

instruction_status_t
SIM_instruction_status(instruction_id_t ii);

reg_info_t *
SIM_instruction_get_reg_info(instruction_id_t ii,
int n);

attr_value_t
SIM_instruction_read_input_reg(instruction_id_t ii,
register_id_t ri);

attr_value_t
SIM_instruction_read_output_reg(instruction_id_t ii,
register_id_t ri);

void
SIM_instruction_write_input_reg(instruction_id_t ii,
register_id_t ri,

362

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions


attr_value_t value);

instruction_error_t
SIM_instruction_write_output_reg(instruction_id_t ii,
register_id_t ri,
attr_value_t val);

int
SIM_instruction_is_sync(instruction_id_t ii);

lang_void *
SIM_instruction_get_user_data(instruction_id_t ii);

void
SIM_instruction_set_user_data(instruction_id_t ii,
lang_void *);

instruction_id_t
SIM_instruction_id_from_mem_op_id(conf_object_t *cpu, int id);

generic_transaction_t *
SIM_instruction_stalling_mem_op(conf_object_t *obj,
instruction_id_t entry);

generic_transaction_t *
SIM_instruction_store_queue_mem_op(instruction_id_t ii, int i);

cycles_t
SIM_instruction_remaining_stall_time(conf_object_t *obj,
instruction_id_t ii);

integer_t
SIM_instruction_get_field_value(instruction_id_t ii,
const char *field_name);

attr_value_t
SIM_instruction_opcode(instruction_id_t ii);

363

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

void
SIM_release_stall(conf_object_t *obj, int id);

int
SIM_get_unique_memory_transaction_id(conf_object_t *obj);

DESCRIPTION
These functions constitute the Simics Micro-Architecture Interface, and are only available in the Micro-Architecture versions of Simics. If you have this version of Simics,
you can find the documentation of these functions in the Simics Out of Order Processor
Models document.

364

VIRTUTECH CONFIDENTIAL

3.3.5

3.3. Simics API Functions

DBuffer Interface

The DBuffer library is part of the Simics API. It is used to efficiently transfer data blocks,
such as network packets, inside the simulation. See the Simics Programming Guide for an
introduction to programming with DBuffers.

365

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

Function List
dbuffer_append()
NAME
dbuffer_append, dbuffer_prepend, dbuffer_insert Add data to a dbuffer
SYNOPSIS
uint8 *
dbuffer_append(dbuffer_t *dbuffer, size_t len);

uint8 *
dbuffer_prepend(dbuffer_t *dbuffer, size_t len);

uint8 *
dbuffer_insert(dbuffer_t *dbuffer, size_t offset, size_t len);

DESCRIPTION
These functions will extend the dbuffer with len bytes and return a pointer to the
added bytes. The dbuffer_insert function adds the new data at offset in the buffer,
while the dbuffer_prepend and dbuffer_append functions add it at the the beginning
and end, respectively.
The returned pointer points to a memory area that is only guaranteed to contain valid
data for the newly added bytes, and it is illegal to reference data before it or more than
len-1 bytes ahead.
The returned pointer is also only valid until the next operation on the dbuffer function,
except for calling dbuffer_len.

366

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

dbuffer_append_external_data()
NAME
dbuffer_append_external_data, dbuffer_prepend_external_data Add static data
SYNOPSIS
uint8 *
dbuffer_append_external_data(dbuffer_t *dbuffer, void *data,
size_t len, int adopt);

uint8 *
dbuffer_prepend_external_data(dbuffer_t *dbuffer, void *data,
size_t len, int adopt);

DESCRIPTION
These functions work similar to dbuffer_append and dbuffer_prepend, but with the
difference that the data isnt copied. Instead, the buffer will reference the data pointed
to directly.
If the adopt flag is true, the control of the data block is transferred to the dbuffer. It
is assumed to be a block allocated with MM_MALLOC, and will be freed with MM_
FREE when the dbuffer is released.
If the adopt flag is false, the dbuffer will not free the memory. Instead it is up to the
caller to free the memory, but it must not do so before the dbuffer is freed. Actually,
this reference could be copied to other dbuffers, so great care has to be taken. This
should only be used for buffers that will only be read, since it hard to know if a write
operation will actually write to the buffer or to a copy.
SEE ALSO
dbuffer_append, dbuffer_prepend

367

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

dbuffer_append_value()
NAME
dbuffer_append_value, dbuffer_prepend_value Add data with uniform content
SYNOPSIS
uint8 *
dbuffer_append_value(dbuffer_t *dbuffer, int value, size_t len);

uint8 *
dbuffer_prepend_value(dbuffer_t *dbuffer, int value, size_t len);

DESCRIPTION
This adds data to a dbuffer and sets all the added bytes to value. It has the same effect
as using dbuffer_append or dbuffer_append and calling memset to set the contents.
The return value is a pointer to the data just added.
SEE ALSO
dbuffer_append, dbuffer_prepend

368

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

dbuffer_clone()
NAME
dbuffer_clone Make a full copy of another buffer
SYNOPSIS
dbuffer_t *
dbuffer_clone(dbuffer_t *dbuffer);

DESCRIPTION
This function returns a new dbuffer that contains the same data as the buffer given
in the dbuffer parameter. This doesnt involve copying any memory, since they can
share the same storage initially. However, they are still completely independent, and
operations on one buffer has no effect on the other.
The returned dbuffer should be released with dbuffer_free when it is no longer needed.
SEE ALSO
new_dbuffer, dbuffer_free

369

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

dbuffer_copy_append()
NAME
dbuffer_copy_append, dbuffer_copy_prepend Copy data from a dbuffer
SYNOPSIS
void
dbuffer_copy_append(dbuffer_t *dst, dbuffer_t *src,
size_t offset, size_t len);

void
dbuffer_copy_prepend(dbuffer_t *dst, dbuffer_t *src,
size_t offset, size_t len);

DESCRIPTION
These functions copies len bytes from the dbuffer src, at offset offset, and adds it to the
beginning or end of the dbuffer dst.
This can often be done without actually copying any memory, so it is usually very
efficient.
SEE ALSO
dbuffer_append, dbuffer_prepend

370

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

dbuffer_free()
NAME
dbuffer_free Release a dbuffer
SYNOPSIS
void
dbuffer_free(dbuffer_t *dbuffer);

DESCRIPTION
Release a dbuffer that will not be used anymore. This will also free any data in the
buffer that isnt also used by other buffers. After calling this function, the dbuffer
must not be used anymore.
SEE ALSO
new_dbuffer

371

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

dbuffer_len()
NAME
dbuffer_len Get the size of a dbuffer
SYNOPSIS
size_t
dbuffer_len(dbuffer_t *dbuffer);

DESCRIPTION
This function returns the amount of data stored in a dbuffer. This is the number of
bytes that will be returned by dbuffer_read_all.

372

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

dbuffer_read()
NAME
dbuffer_read, dbuffer_read_all, dbuffer_read_some Extract data for reading
SYNOPSIS
uint8 *
dbuffer_read(dbuffer_t *dbuffer, size_t offset, size_t len);

uint8 *
dbuffer_read_all(dbuffer_t *dbuffer);

uint8 *
dbuffer_read_some(dbuffer_t *dbuffer, size_t offset, size_t len,
size_t *actual_len);

DESCRIPTION
The offset and len parameters specify a region of the buffer to read from. The returned
pointer is guaranteed to point to a contiguous block of memory of size len. It is illegal
to write to the block return by these functions, since they may be shared by other
dbuffers. Use the dbuffer_update functions if you need to both read and write to the
dbuffer.
The returned pointer is only valid until the next operation on the dbuffer, except for
calling dbuffer_len.
The offset and len must specify a valid region, so that the end of the region is not past
the end of the dbuffer.
The dbuffer_read_some function takes an actual_len parameter, and may return a smaller
buffer than requested. The actual number of valid bytes in the returned buffer is stored
in actual_len. It will return a smaller buffer if it would have had to copy memory to
return a pointer to the whole region. This means that you can use this function repeatedly to extract all the requested data in the most efficient way. If NULL is passed for
actual_len, it will return the full region.
The dbuffer_read_all function assumes 0 for offset, and buffer_len(dbuffer) for
len.
SEE ALSO
dbuffer_update, dbuffer_replace

373

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

dbuffer_remove()
NAME
dbuffer_remove, dbuffer_remove_head, dbuffer_remove_tail Remove data from
a dbuffer
SYNOPSIS
void
dbuffer_remove(dbuffer_t *dbuffer, size_t offset, size_t remove_len);

void
dbuffer_remove_head(dbuffer_t *dbuffer, size_t remove_len);

void
dbuffer_remove_tail(dbuffer_t *dbuffer, size_t remove_len);

DESCRIPTION
These functions will remove remove_len bytes from dbuffer. The dbuffer will remove
data starting at offset, while the other functions will remove data from the beginning
or end of the buffer..
This usually doesnt involve moving any memory contents, and should be very efficient even if the buffer is large.

374

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

dbuffer_replace()
NAME
dbuffer_replace, dbuffer_replace_all, dbuffer_replace_some Replace data
SYNOPSIS
uint8 *
dbuffer_replace(dbuffer_t *dbuffer, size_t offset, size_t len);

uint8 *
dbuffer_replace_all(dbuffer_t *dbuffer);

uint8 *
dbuffer_replace_some(dbuffer_t *dbuffer, size_t offset, size_t len, size_t *actua

DESCRIPTION
The offset and len parameters specify a region of the buffer to write to. The returned
pointer is guaranteed to point to a contiguous block of memory of size len, but is
not guaranteed to contain the existing data in the buffer. Use these functions when
completely replacing a region of the buffer with new data.
The returned pointer is only valid until the next operation on the dbuffer, except for
calling dbuffer_len.
The offset and len must specify a valid region, so that the end of the region is not past
the end of the dbuffer.
The dbuffer_replace_some function takes an actual_len parameter, and may return a
smaller buffer than requested. The actual number of valid bytes in the returned buffer
is stored in actual_len. It will return a smaller buffer if it would have had to copy
memory to return a pointer to the whole region. This means that you can use this
function repeatedly to write all the requested data in the most efficient way. If NULL is
passed for actual_len, it will return the full region.
The dbuffer_replace_all function assumes 0 for offset, and buffer_len(dbuffer)
for len.
SEE ALSO
dbuffer_read, dbuffer_update

375

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

dbuffer_split()
NAME
dbuffer_split Split a dbuffer
SYNOPSIS
dbuffer_t *
dbuffer_split(dbuffer_t *dbuffer, size_t offset);

DESCRIPTION
This function returns a new dbuffer that contains the offset first bytes from dbuffer, and
removes those bytes from dbuffer The effect is that the dbuffer is split in two halves,
leaving the second half in the original dbuffer and returning the first half as a new
dbuffer.
The returned dbuffer should be released with dbuffer_free when it is no longer needed.
SEE ALSO
new_dbuffer, dbuffer_free

376

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

dbuffer_update()
NAME
dbuffer_update, dbuffer_update_all, dbuffer_update_some Extract data for updating
SYNOPSIS
uint8 *
dbuffer_update(dbuffer_t *dbuffer, size_t offset, size_t len);

uint8 *
dbuffer_update_all(dbuffer_t *dbuffer);

uint8 *
dbuffer_update_some(dbuffer_t *dbuffer, size_t offset, size_t len, size_t *actual

DESCRIPTION
The offset and len parameters specify a region of the buffer to access. The returned
pointer is guaranteed to point to a contiguous block of memory of size len. The block
can be used for reading and writing data to the dbuffer.
The returned pointer is only valid until the next operation on the dbuffer, except for
calling dbuffer_len.
The offset and len must specify a valid region, so that the end of the region is not past
the end of the dbuffer.
The dbuffer_update_some function takes an actual_len parameter, and may return a
smaller buffer than requested. The actual number of valid bytes in the returned buffer
is stored in actual_len. It will return a smaller buffer if it would have had to copy
memory to return a pointer to the whole region. This means that you can use this
function repeatedly to access all the requested data in the most efficient way. If NULL
is passed for actual_len, it will return the full region.
The dbuffer_update_all function assumes 0 for offset, and buffer_len(dbuffer)
for len.
SEE ALSO
dbuffer_read, dbuffer_replace

377

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

new_dbuffer()
NAME
new_dbuffer Create a new dbuffer
SYNOPSIS
dbuffer_t *
new_dbuffer(void);

DESCRIPTION
This function returns an empty dbuffer. Use it when you need a new dbuffer, and call
dbuffer_free when it isnt needed anymore.
SEE ALSO
dbuffer_free, dbuffer_clone

378

VIRTUTECH CONFIDENTIAL

3.3.6

3.3. Simics API Functions

VTMEM

VTmem Overview
The VTmem (Virtutech Memory Management) module provides a generic mechanism for
creating and managing dynamic objects in C, as a replacement for the standard malloc().
This support is designed to support various forms of debugging, performance tuning, leak
detection, etc. The facilities as a whole are called VTmem; most functions have the prefix
mm_, and most macros have the prefix MM_.
Creating and Deleting Objects
To create an VTmem object, you use macros such as MM_MALLOC(), which replace calls to
malloc(). For example, to allocate 13 objects of type device_t, use
device_t *d = MM_MALLOC(13, device_t);
The specified type is used for keeping track of the total amount of memory used for each
kind of object, and for knowing the size of the allocation (and being able to return a correctly
casted pointer). This means that it must be possible to get a pointer to the type by appending
an asterisk to the type name; so struct foo * is acceptable, but int (*)(void) is not.
Use a typedef in these cases.
There are also macros for specifying the size in bytes, and variants that return memory
initialised with zero bytes. It is also possible to specify a desired address alignment.
Since the allocation sites are tracked by file and line number, it is a good idea to avoid
having more than one allocation call in a single source line.
Exported Interface
This is the entire interface to the VTmem facility.

379

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

VTMEM Macros
MM_FREE()
NAME
MM_FREE free vtmem object
SYNOPSIS
MM_FREE(p);

DESCRIPTION
MM_FREE frees a vtmem object. It is legal to pass a null pointer, in which case it does
nothing.

380

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

MM_MALIGN()
NAME
MM_MALIGN, MM_ZALIGN allocate aligned memory
SYNOPSIS
MM_MALIGN(align, nelems, type);

MM_ZALIGN(align, nelems, type);

DESCRIPTION
MM_MALIGN allocates memory aligned to the nearest align-byte boundary. The align
parameter must be an even power of 2.
MM_ZALIGN does the same thing but in addition zeroes out the allocated memory.
Allocated aligned memory imposes a slightly higher space overhead than ordinary
memory as handed out by MM_MALLOC. The overhead is of the order of align bytes
per allocation.
RETURN VALUE
Pointer to the allocated object.

381

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

MM_MALLOC()
NAME
MM_MALLOC, MM_MALLOC_SZ, MM_ZALLOC, MM_ZALLOC_SZ allocate
memory object
SYNOPSIS
MM_MALLOC(nelems, type);

MM_MALLOC_SZ(size, type);

MM_ZALLOC(nelems, type);

MM_ZALLOC_SZ(size, type);

DESCRIPTION
MM_MALLOC allocates nelems objects of type.
MM_MALLOC_SZ specifies the allocation in bytes, which can be occasionally useful.
MM_ZALLOC and MM_ZALLOC_SZ do the same thing as their Z-less counterparts
but in addition zero out the allocated memory.
If nelems or size are zero, a null pointer is returned.
RETURN VALUE
Pointer to the allocated object.

382

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

MM_REALLOC()
NAME
MM_REALLOC, MM_REALLOC_SZ, MM_ZREALLOC, MM_ZREALLOC_SZ
reallocate memory
SYNOPSIS
MM_REALLOC(p, nelems, type);

MM_REALLOC_SZ(p, size, type);

MM_ZREALLOC(p, nelems, type);

MM_ZREALLOC_SZ(p, size, type);

DESCRIPTION
MM_REALLOC changes the size of an allocated memory block to nelems elements.
MM_REALLOC_SZ specifies the new size in bytes.
MM_ZREALLOC and MM_ZREALLOC_SZ do the same thing as their Z-less counterparts, but in addition zero out the extended part of the allocation.
If the passed pointer is NULL, then these macros are equivalent to an allocation of the
desired amount. If nelems or size are zero, a null pointer is returned and the original
allocation is freed.
RETURN VALUE
Pointer to the reallocated object.

383

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

MM_STRDUP()
NAME
MM_STRDUP duplicate a string
SYNOPSIS
MM_STRDUP(str);

DESCRIPTION
Corresponds to the traditional strdup() function, but uses the instrumentation of the
Simics memory allocator.
RETURN VALUE
Pointer to the newly allocated string.

384

VIRTUTECH CONFIDENTIAL

3.3.7

3.3. Simics API Functions

Python-specific Functions

This list describes the Python-specific functions that are available for writing commands,
scripts and Python modules in Simics.

385

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

Function List
cli.arg()
NAME
arg define a command argument
NAMESPACE
cli
SYNOPSIS

arg(handler, name = "", spec = "1", default = None, data = None,


doc = "", expander = None, pars = [], is_a = None)

DESCRIPTION
Define a CLI command argument when using new_command(). A complete explanation of new_command() and arg() is available in the Simics Programming Guide.

386

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

cli.eval_cli_line()
NAME
eval_cli_line evaluate a CLI command line
NAMESPACE
cli
SYNOPSIS

eval_cli_line(text, user_typed = 0)

DESCRIPTION
Evaluate a CLI command line as if it has been entered at the prompt. This is useful to re-use existing command code when writing Python scripts. Command errors
are printed on the console, and not reported back to Python. Note that the ! and @
modifiers are not supported when using eval_cli_line().

387

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

cli.get_available_object_name()
NAME
get_available_object_name return a non-allocated object name
NAMESPACE
cli
SYNOPSIS

get_available_object_name(prefix)

DESCRIPTION
Return an object name suitable for creating a new object (i.e., that has not been used
yet) based on the prefix passed as argument.

388

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

cli.new_command()
NAME
new_command define a new CLI command
NAMESPACE
cli
SYNOPSIS

new_command(name, fun, args = [], doc = "", type = "misc commands",


pri = 0, infix = 0, left = 1,
short = "", group_short = "", alias = [], doc_with = "",
check_args = 2,
doc_items = [], see_also = [], namespace = "",
method = "", namespace_copy = (), internal = 0,
filename = "", linenumber = "", module = "",
object = None, repeat = None, deprecated = None)

DESCRIPTION
Define a new CLI command. A complete explanation of new_command() is available
in the Simics Programming Guide.

389

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

cli.number_str()
NAME
number_str return a ready-to-print representation of a number
NAMESPACE
cli
SYNOPSIS

number_str(val, radix = -1)

DESCRIPTION
Return a ready-to-print representation of the number val in a given base (radix) or the
current base by defaultfollowing the current settings for number representation.
RETURN VALUE
A string representing the number.

390

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

cli.object_expander()
NAME
object_expander Standard expander for an object argument
NAMESPACE
cli
SYNOPSIS

object_expander(kind)

DESCRIPTION
For command writing: standard expander that can be use to provide argument completion on all objects of a given class or matching a given interface (kind). For example,
to expand a string with the list of processor available in the machine, you would write:
arg(str_t, "cpu", expander =

object_expander("processor"))

To expand a string to all gcache objects:


arg(str_t, "cache", expander = object_expander("gcache"))

391

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

cli.quiet_run_command()
NAME
quiet_run_command Run a CLI command and return output
NAMESPACE
cli
SYNOPSIS

quiet_run_command(text)

DESCRIPTION
Runs a CLI command, or a CLI expression, as if it has been entered at the prompt.
Errors are reported using CliError exception. The quiet_run_command() is similar to
run_command() but returns a tuple with the command return value as first entry, and
the text output as the second. Note that the ! and @ modifiers are not supported when
using quiet_run_command().

392

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

cli.run_command()
NAME
run_command Run a CLI command
NAMESPACE
cli
SYNOPSIS

run_command(text)

DESCRIPTION
Runs a CLI command, or a CLI expression, as if it has been entered at the prompt. Errors are reported using CliError exception, and any return value from the command is
returned by this function to Python. Note that the ! and @ modifiers are not supported
when using run_command().

393

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

sim_commands.new_info_command()
NAME
new_info_command define a new info command
NAMESPACE
sim_commands
SYNOPSIS

new_info_command(cls, get_info, ctype = None)

DESCRIPTION
Define a new info command for a given device. cls is the class for which the info
command should be registered. get_info is a function returning the information to be
printed. get_info() should return a data structure of the following kind: [(SectionName1,
[(DataName1.1, DataValue1.1), (DataName1.2, DataValue1.2), ...]
), (SectionName2, [(DataName2.1, DataValue2.1), (DataName2.2, DataValue2.
2), ...]), ...]
Each section will be printed separately. Each piece of data will
be printed on one line. If no sections are necessary, just provide None as the only
sections name, followed by the list of data.

394

VIRTUTECH CONFIDENTIAL

3.3. Simics API Functions

sim_commands.new_status_command()
NAME
new_status_command define a new status command
NAMESPACE
sim_commands
SYNOPSIS

new_status_command(cls, get_status, ctype = None)

DESCRIPTION
Define a new status command for a given device. cls is the class for which the status
command should be registered. get_status is a function returning the information to be
printed. get_status() should return a data structure of the same kind as in new_info_
command().
SEE ALSO
sim_commands.new_info_command

395

VIRTUTECH CONFIDENTIAL

3.4

3.4. Backwards Compatibility

Backwards Compatibility

It is unfortunately necessary to change the Simics API from time to time for different reasons. In order to make the transition as easy as possible for programmers, we try to maintain
backwards compatibility when possible. To enable backwards compatibility mode when including the Simics API header files, you need to define different preprocessor macros, as
described in the following chapters. This is an example of how you could use SIM_BC_
LOG_CONSTRUCTOR:
#define SIM_BC_LOG_CONSTRUCTOR
#include "simics_api.h"
typedef struct {
log_object_t log;
:
} my_device_t;
static conf_object_t *
my_new_instance(parse_object_t *parse_obj)
{
my_device_t *dev = malloc(sizeof *dev);
log_constructor(&dev->log, parse_obj);
:
}

3.4.1

SIM_BC_NO_STDOUT_REDEFINE

When this macro is defined, Simics will not define the following macros to override some
standard C library functions:
#undef printf
#if defined(HAVE_VARARG_MACROS)
#define printf(...) SIM_printf(__VA_ARGS__)
#else
#define printf SIM_printf
#endif
#undef vprintf
#define vprintf(str, ap) SIM_printf_vararg(str, ap)
#undef puts
#define puts(str) SIM_puts(str)
#undef putchar
#define putchar(c) SIM_putchar(c)

396

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

#undef fwrite
#define fwrite(ptr, size, nmemb, stream)
((stream) == stdout
? (size_t)SIM_write((ptr), (size) * (nmemb))
: fwrite(ptr, size, nmemb, stream))
#undef fputs
#define fputs(str, stream)
((stream) == stdout
? SIM_write((str), strlen(str))
: fputs((str), (stream)))

\
\
\

\
\
\

#undef fflush
#define fflush(stream) ((stream) == stdout ? SIM_flush() : fflush(stream))

397

VIRTUTECH CONFIDENTIAL

3.4.2

3.4. Backwards Compatibility

Obsolete API Types

event_poster_interface_describe_event_t, event_poster_interface_get_event_info_t, event_


poster_interface_set_event_info_t
NAME
event_poster_interface_describe_event_t event_poster_interface_get_event_info_t event_
poster_interface_set_event_info_t
DESCRIPTION
These datatypes are obsolete and should not be used.

398

VIRTUTECH CONFIDENTIAL

3.4.3

3.4. Backwards Compatibility

Obsolete API Functions

SIM_add_mode_counter()
NAME
SIM_add_mode_counter obsolete API function
SYNOPSIS
int
SIM_add_mode_counter(conf_object_t *cpu, const char *desc);

DESCRIPTION
This function will be obsolete in the next version of Simics.

399

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_all_classes()
NAME
SIM_all_classes obsolete API function
SYNOPSIS
class_vector_t
SIM_all_classes(void);

DESCRIPTION
This function will be obsolete in the next version of Simics. Use SIM_get_all_classes()
instead.
SEE ALSO
SIM_get_all_classes

400

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_all_objects()
NAME
SIM_all_objects obsolete API function
SYNOPSIS
object_vector_t
SIM_all_objects(void);

DESCRIPTION
This function will be obsolete in the next version of Simics. Use SIM_get_all_objects()
instead.
SEE ALSO
SIM_get_all_objects

401

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_breakpoint_action()
NAME
SIM_breakpoint_action obsolete API function
SYNOPSIS
int
SIM_breakpoint_action(breakpoint_id_t id, const char *action);

DESCRIPTION
Obsolete since Simics 2.0. Use the Core_Breakpoint hap instead to connect your own
callback to a breakpoint.

402

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_c_frontend_exception()
NAME
SIM_c_frontend_exception obsolete API function
SYNOPSIS
void
SIM_c_frontend_exception(void *fe,
sim_exception_t exc_type,
const char *str);

DESCRIPTION
Obsolete since Simics 3.0. Use SIM_frontend_exception() instead.
SEE ALSO
SIM_frontend_exception

403

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_check_exception()
NAME
SIM_check_exception obsolete API function
SYNOPSIS
sim_exception_t
SIM_check_exception(void);

DESCRIPTION
Obsolete since Simics 3.0. Use SIM_clear_exception() and SIM_get_pending_exception()
instead.
SEE ALSO
SIM_clear_exception, SIM_get_pending_exception

404

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_clear_atomic_reservation_bit()
NAME
SIM_clear_atomic_reservation_bit obsolete API function
SYNOPSIS
void
SIM_clear_atomic_reservation_bit(processor_t *cpu);

DESCRIPTION
Obsolete since Simics 1.8. Use clear_atomic_reservation_bit() in the ppc interface
instead.

405

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_cpu_by_mid()
NAME
SIM_cpu_by_mid obsolete API function
SYNOPSIS
processor_t *
SIM_cpu_by_mid(int mid);

DESCRIPTION
Obsolete since Simics 1.6.
SEE ALSO

406

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_cpu_enabled()
NAME
SIM_cpu_enabled obsolete API function
SYNOPSIS
int
SIM_cpu_enabled(conf_object_t *cpu);

DESCRIPTION
This function will be obsolete in the next version of Simics. Use SIM_processor_
enabled() instead.
SEE ALSO
SIM_processor_enabled

407

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_cpu_issue_cycles()
NAME
SIM_cpu_issue_cycles obsolete API function
SYNOPSIS
simtime_t
SIM_cpu_issue_cycles(processor_t *cpu);

DESCRIPTION
Obsolete since Simics 1.6. Use SIM_step_count()() instead.
SEE ALSO
SIM_step_count

408

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_cpu_privilege_level()
NAME
SIM_cpu_privilege_level obsolete API function
SYNOPSIS
int
SIM_cpu_privilege_level(conf_object_t *cpu);

DESCRIPTION
This function will be obsolete in the next version of Simics. Use SIM_processor_
privilege_level() instead.
SEE ALSO
SIM_processor_privilege_level

409

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_device_log()
NAME
SIM_device_log obsolete API function
SYNOPSIS
void
SIM_device_log(conf_object_t *obj, const char *msg);

DESCRIPTION
Obsolete since Simics 1.8. Use SIM_log_message() and the new log system macros
instead.
SEE ALSO
SIM_log_message

410

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_disassemble_physical()
NAME
SIM_disassemble_physical obsolete API function
SYNOPSIS
const char *
SIM_disassemble_physical(processor_t *cpu_ptr, physical_address_t pa);

DESCRIPTION
Obsolete since Simics 1.6. Use SIM_disassemble() instead.
SEE ALSO
SIM_disassemble

411

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_dump_caches()
NAME
SIM_dump_caches obsolete API function
SYNOPSIS
void
SIM_dump_caches(void);

DESCRIPTION
This function will be obsolete in the next version of Simics. Use SIM_flush_all_caches()
instead.
SEE ALSO
SIM_flush_all_caches

412

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_exception_has_occurred()
NAME
SIM_exception_has_occurred obsolete API function
SYNOPSIS
int
SIM_exception_has_occurred(void);

DESCRIPTION
Obsolete since Simics 3.0. Use SIM_get_pending_exception() instead.
SEE ALSO
SIM_get_pending_exception

413

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_for_all_hap_types()
NAME
SIM_for_all_hap_types obsolete API function
SYNOPSIS
void
SIM_for_all_hap_types(void (*func)(char *));

DESCRIPTION
This function will be obsolete in the next version of Simics. Use SIM_get_all_hap_
types() instead.

414

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_for_all_modules()
NAME
SIM_for_all_modules obsolete API function
SYNOPSIS
void
SIM_for_all_modules(void (*func)(char *, char *, char *, char *));

DESCRIPTION
This function will be obsolete in the next version of Simics. Use SIM_get_all_modules()
instead.

415

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_for_all_modules_failed()
NAME
SIM_for_all_modules_failed obsolete API function
SYNOPSIS
void
SIM_for_all_modules_failed(void (*func)(char *, char *, char *,
char *, char *));

DESCRIPTION
This function will be obsolete in the next version of Simics. Use SIM_get_all_failed_
modules() instead.

416

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_for_all_processors()
NAME
SIM_for_all_processors obsolete API function
SYNOPSIS
void
SIM_for_all_processors(void (*func)(conf_object_t *, lang_void *user_data),
lang_void *user_data);

DESCRIPTION
This function will be obsolete in the next version of Simics. Use SIM_get_all_processors()
and a loop instead.
SEE ALSO
SIM_get_all_processors

417

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_get_No_Exception()
NAME
SIM_get_No_Exception obsolete API function
SYNOPSIS
exception_type_t
SIM_get_No_Exception(void);

DESCRIPTION
Obsolete since Simics 1.6. Use the enum value Sim_PE_No_Exception instead.

418

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_get_base_pointer()
NAME
SIM_get_base_pointer obsolete API function
SYNOPSIS
logical_address_t
SIM_get_base_pointer(conf_object_t *cpu);

DESCRIPTION
Obsolete since Simics 1.8. Use SIM_read_register() on the register that is defined as
the base pointer on your target.
SEE ALSO
SIM_read_register

419

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_get_control_register_name()
NAME
SIM_get_control_register_name obsolete API function
SYNOPSIS
const char *
SIM_get_control_register_name(processor_t *cpu_ptr, int reg);

DESCRIPTION
Obsolete since Simics 1.6. Use SIM_get_register_name() instead.
SEE ALSO
SIM_get_register_number

420

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_get_control_register_number()
NAME
SIM_get_control_register_number obsolete API function
SYNOPSIS
int
SIM_get_control_register_number(processor_t *cpu_ptr, const char *regname);

DESCRIPTION
Obsolete since Simics 1.6. Use SIM_get_register_number() instead.
SEE ALSO
SIM_get_register_number

421

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_get_current_proc_no()
NAME
SIM_get_current_proc_no obsolete API function
SYNOPSIS
int
SIM_get_current_proc_no(void);

DESCRIPTION
This function will be obsolete in the next version of Simics. Use SIM_get_processor_
number() and SIM_current_processor() instead.
SEE ALSO
SIM_get_processor_number, SIM_current_processor

422

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_get_file_size()
NAME
SIM_get_file_size obsolete API function
SYNOPSIS
uint64
SIM_get_file_size(const char *filename);

DESCRIPTION
Obsolete since Simics 2.0. Use the corresponding library function on your host system.

423

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_get_history_match()
NAME
SIM_get_history_match obsolete API function
SYNOPSIS
const char *
SIM_get_history_match(const char *str);

DESCRIPTION
Obsolete since Simics 3.0.
SEE ALSO

424

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_get_mmu_data()
NAME
SIM_get_mmu_data obsolete API function
SYNOPSIS
conf_object_t *
SIM_get_mmu_data(processor_t *cpu);

DESCRIPTION
Obsolete since Simics 1.6. Read the mmu attribute of cpu instead.

425

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_get_mode_counter()
NAME
SIM_get_mode_counter obsolete API function
SYNOPSIS
integer_t
SIM_get_mode_counter(conf_object_t *cpu, processor_mode_t mode, int counter);

DESCRIPTION
This function will be obsolete in the next version of Simics.

426

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_get_proc_no()
NAME
SIM_get_proc_no obsolete API function
SYNOPSIS
int
SIM_get_proc_no(const conf_object_t *cpu);

DESCRIPTION
This function will be obsolete in the next version of Simics. Use SIM_get_processor_
number() instead.
SEE ALSO
SIM_get_processor_number

427

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_get_simics_home()
NAME
SIM_get_simics_home obsolete API function
SYNOPSIS
const char *
SIM_get_simics_home(void);

DESCRIPTION
The use of this function is deprecated. The simics_home attribute in the sim class can
be used instead.

428

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_get_stack_pointer()
NAME
SIM_get_stack_pointer obsolete API function
SYNOPSIS
logical_address_t
SIM_get_stack_pointer(conf_object_t *cpu);

DESCRIPTION
Obsolete since Simics 1.8. Use SIM_read_register() on the register that is defined as
the stack pointer on your target.
SEE ALSO
SIM_read_register

429

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_get_trap_time()
NAME
SIM_get_trap_time obsolete API function
SYNOPSIS
integer_t
SIM_get_trap_time(processor_t *cpu_ptr, int trap_level);

DESCRIPTION
Obsolete since Simics 1.6. Read the trap_times attribute of the corresponding cpu instead.

430

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_hap_install_callback()
NAME
SIM_hap_install_callback obsolete API function
SYNOPSIS
hap_handle_t
SIM_hap_install_callback(hap_type_t hap,
hap_func_t func,
lang_void *user_data);

DESCRIPTION
Obsolete since Simics 2.2. Use the new hap functions, in this case the functions SIM_
hap_add_callback() or SIM_hap_add_callback_obj().
SEE ALSO
SIM_hap_add_callback

431

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_hap_install_callback_idx()
NAME
SIM_hap_install_callback_idx obsolete API function
SYNOPSIS
hap_handle_t
SIM_hap_install_callback_idx(hap_type_t hap,
hap_func_t func,
integer_t idx,
lang_void *user_data);

DESCRIPTION
Obsolete since Simics 2.2. Use the new hap functions, in this case the functions SIM_
hap_add_callback_index() or SIM_hap_add_callback_obj_index().
SEE ALSO
SIM_hap_add_callback

432

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_hap_install_callback_range()
NAME
SIM_hap_install_callback_range obsolete API function
SYNOPSIS
hap_handle_t
SIM_hap_install_callback_range(hap_type_t hap,
hap_func_t func,
integer_t low,
integer_t high,
lang_void *user_data);

DESCRIPTION
Obsolete since Simics 2.2. Use the new hap functions, in this case the functions SIM_
hap_add_callback_range() or SIM_hap_add_callback_obj_range().
SEE ALSO
SIM_hap_add_callback

433

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_hap_new_type()
NAME
SIM_hap_new_type obsolete API function
SYNOPSIS
hap_type_t
SIM_hap_new_type(const
const
const
const
const

char
char
char
char
char

*hap,
*params,
*param_desc,
*index,
*desc);

DESCRIPTION
Obsolete since Simics 2.2. Use the new hap functions, in this case the function SIM_
hap_add_type().
SEE ALSO
SIM_hap_add_type

434

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_hap_register_callback()
NAME
SIM_hap_register_callback obsolete API function
SYNOPSIS
hap_handle_t
SIM_hap_register_callback(const char *id,
hap_func_t func,
lang_void *user_data);

DESCRIPTION
Obsolete since Simics 2.2. Use the new hap functions, in this case the functions SIM_
hap_add_callback() or SIM_hap_add_callback_obj().
SEE ALSO
SIM_hap_add_callback

435

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_hap_register_callback_idx()
NAME
SIM_hap_register_callback_idx obsolete API function
SYNOPSIS
hap_handle_t
SIM_hap_register_callback_idx(const char *id,
hap_func_t func,
integer_t idx,
lang_void *user_data);

DESCRIPTION
Obsolete since Simics 2.2. Use the new hap functions, in this case the functions SIM_
hap_add_callback_index() or SIM_hap_add_callback_obj_index().
SEE ALSO
SIM_hap_add_callback

436

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_hap_register_callback_range()
NAME
SIM_hap_register_callback_range obsolete API function
SYNOPSIS
hap_handle_t
SIM_hap_register_callback_range(const char *id,
hap_func_t func,
integer_t low,
integer_t high,
lang_void *user_data);

DESCRIPTION
Obsolete since Simics 2.2. Use the new hap functions, in this case the functions SIM_
hap_add_callback_range() or SIM_hap_add_callback_obj_range().
SEE ALSO
SIM_hap_add_callback

437

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_hap_remove_callback()
NAME
SIM_hap_remove_callback obsolete API function
SYNOPSIS
void
SIM_hap_remove_callback(hap_type_t hap, hap_handle_t handle);

DESCRIPTION
Obsolete since Simics 2.2. Use the new hap functions, in this case the functions SIM_
hap_delete_callback_id() or SIM_hap_delete_callback_obj_id().
SEE ALSO
SIM_hap_delete_callback

438

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_hap_unregister_callback()
NAME
SIM_hap_unregister_callback obsolete API function
SYNOPSIS
void
SIM_hap_unregister_callback(const char *id,
hap_func_t func,
lang_void *user_data);

DESCRIPTION
Obsolete since Simics 2.2. Use the new hap functions, and this case the functions SIM_
hap_delete_callback() or SIM_hap_delete_callback_obj().
SEE ALSO
SIM_hap_delete_callback

439

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_inc_cur_mode_counter()
NAME
SIM_inc_cur_mode_counter obsolete API function
SYNOPSIS
void
SIM_inc_cur_mode_counter(conf_object_t *cpu, int counter);

DESCRIPTION
This function will be obsolete in the next version of Simics.

440

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_inc_mode_counter()
NAME
SIM_inc_mode_counter obsolete API function
SYNOPSIS
void
SIM_inc_mode_counter(conf_object_t *cpu, processor_mode_t mode, int counter);

DESCRIPTION
This function will be obsolete in the next version of Simics.

441

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_install_default_ASI_handler()
NAME
SIM_install_default_ASI_handler obsolete API function
SYNOPSIS
void
SIM_install_default_ASI_handler(
exception_type_t (*handler)(generic_transaction_t *),
int asi);

DESCRIPTION
Obsolete since Simics 1.6.

442

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_install_user_ASI_handler()
NAME
SIM_install_user_ASI_handler obsolete API function
SYNOPSIS
void
SIM_install_user_ASI_handler(
exception_type_t (*handler)(generic_transaction_t *),
int asi);

DESCRIPTION
Obsolete since Simics 1.6.

443

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_instruction_info()
NAME
SIM_instruction_info obsolete API function
SYNOPSIS
instr_info_t *
SIM_instruction_info(conf_object_t *cpu, logical_address_t vaddr);

DESCRIPTION
This function will be obsolete in the next version of Simics. Use instruction_info() in
the processor interface instead.

444

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_no_windows()
NAME
SIM_no_windows obsolete API function
SYNOPSIS
int
SIM_no_windows(void);

DESCRIPTION
This function will be obsolete in the next version of Simics. Use the open_windows
attribute in the sim object instead.

445

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_num_control_registers()
NAME
SIM_num_control_registers obsolete API function
SYNOPSIS
int
SIM_num_control_registers(processor_t *cpu_ptr);

DESCRIPTION
Obsolete since Simics 1.6.
SEE ALSO

446

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_object_by_id()
NAME
SIM_object_by_id obsolete API function
SYNOPSIS
conf_object_t *
SIM_object_by_id(int id);

DESCRIPTION
This function is obsolete since Simics 2.2. The object id will be removed in future
Simics versions, code relying on it should be rewritten.
SEE ALSO

447

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_proc_no_2_ptr()
NAME
SIM_proc_no_2_ptr obsolete API function
SYNOPSIS
conf_object_t *
SIM_proc_no_2_ptr(int proc_no);

DESCRIPTION
This function will be obsolete in the next version of Simics. Use SIM_get_processor()
instead.
SEE ALSO
SIM_get_processor

448

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_processor_break()
NAME
SIM_processor_break obsolete API function
SYNOPSIS
void
SIM_processor_break(conf_object_t *cpu, integer_t steps);

DESCRIPTION
This function will be obsolete in the next version of Simics. Use SIM_break_step()
instead.
SEE ALSO
SIM_break_step

449

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_raise_general_exception()
NAME
SIM_raise_general_exception obsolete API function
SYNOPSIS
void
SIM_raise_general_exception(const char *msg);

DESCRIPTION
Obsolete since Simics 3.0. Use SIM_frontend_exception() instead.
SEE ALSO
SIM_frontend_exception

450

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_read_control_register()
NAME
SIM_read_control_register obsolete API function
SYNOPSIS
uinteger_t
SIM_read_control_register(processor_t *cpu_ptr, int reg);

DESCRIPTION
Obsolete since Simics 1.6. Use SIM_read_register() instead.
SEE ALSO
SIM_read_register

451

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_read_fp_register()
NAME
SIM_read_fp_register obsolete API function
SYNOPSIS
ia64_fp_register_t
SIM_read_fp_register(processor_t *cpu_ptr, int reg);

DESCRIPTION
Obsolete since Simics 1.8. Use read_fp_register() in the ia64 interface instead.

452

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_read_fp_register_d()
NAME
SIM_read_fp_register_d obsolete API function
SYNOPSIS
double
SIM_read_fp_register_d(processor_t *cpu_ptr, int reg);

DESCRIPTION
Obsolete since Simics 1.8. Use read_fp_register_d() in the sparc-v9 or alpha interface instead.

453

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_read_fp_register_i()
NAME
SIM_read_fp_register_i obsolete API function
SYNOPSIS
uint32
SIM_read_fp_register_i(processor_t *cpu_ptr, int reg);

DESCRIPTION
Obsolete since Simics 1.8. Use read_fp_register_i() in the sparc-v9 interface instead.

454

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_read_fp_register_s()
NAME
SIM_read_fp_register_s obsolete API function
SYNOPSIS
float
SIM_read_fp_register_s(processor_t *cpu_ptr, int reg);

DESCRIPTION
Obsolete since Simics 1.8. Use read_fp_register_s() in the sparc-v9 interface instead.

455

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_read_fp_register_x()
NAME
SIM_read_fp_register_x obsolete API function
SYNOPSIS
uint64
SIM_read_fp_register_x(processor_t *cpu_ptr, int reg);

DESCRIPTION
Obsolete since Simics 1.8. Use read_fp_register_x() in the sparc-v9 or alpha interface instead.

456

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_read_global_register()
NAME
SIM_read_global_register obsolete API function
SYNOPSIS
uinteger_t
SIM_read_global_register(processor_t *cpu_ptr, int globals, int reg);

DESCRIPTION
Obsolete since Simics 1.6. Use read_global_register() in the sparc-v9 interface instead.

457

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_read_window_register()
NAME
SIM_read_window_register obsolete API function
SYNOPSIS
uinteger_t
SIM_read_window_register(processor_t *cpu_ptr, int window, int reg);

DESCRIPTION
Obsolete since Simics 1.6. Use read_window_register() in the sparc-v9 interface instead.

458

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_set_mode_counter()
NAME
SIM_set_mode_counter obsolete API function
SYNOPSIS
void
SIM_set_mode_counter(conf_object_t *cpu, processor_mode_t mode,
int counter, integer_t value);

DESCRIPTION
This function will be obsolete in the next version of Simics.

459

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_sparc_ASI_info()
NAME
SIM_sparc_ASI_info obsolete API function
SYNOPSIS
int
SIM_sparc_ASI_info(processor_t *cpu_ptr, int asi, int info);

DESCRIPTION
Obsolete since Simics 1.6.

460

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_void_to_processor_t()
NAME
SIM_void_to_processor_t obsolete API function
SYNOPSIS
processor_t *
SIM_void_to_processor_t(void *cpu);

DESCRIPTION
Obsolete since Simics 1.6. Use a C cast to processor_t * instead.

461

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_write_control_register()
NAME
SIM_write_control_register obsolete API function
SYNOPSIS
void
SIM_write_control_register(processor_t *cpu_ptr, int reg, uinteger_t value);

DESCRIPTION
Obsolete since Simics 1.6. Use SIM_write_register() instead.
SEE ALSO
SIM_write_register

462

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_write_fp_register()
NAME
SIM_write_fp_register obsolete API function
SYNOPSIS
void
SIM_write_fp_register(processor_t *cpu_ptr, int reg, ia64_fp_register_t val);

DESCRIPTION
Obsolete since Simics 1.8. Use write_fp_register() in the ia64 interface instead.

463

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_write_fp_register_d()
NAME
SIM_write_fp_register_d obsolete API function
SYNOPSIS
void
SIM_write_fp_register_d(processor_t *cpu_ptr, int reg, double value);

DESCRIPTION
Obsolete since Simics 1.8. Use write_fp_register_d() in the sparc-v9 interface instead.

464

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_write_fp_register_i()
NAME
SIM_write_fp_register_i obsolete API function
SYNOPSIS
void
SIM_write_fp_register_i(processor_t *cpu_ptr, int reg, uint32 value);

DESCRIPTION
Obsolete since Simics 1.8. Use write_fp_register_i() in the sparc-v9 interface instead.

465

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_write_fp_register_s()
NAME
SIM_write_fp_register_s obsolete API function
SYNOPSIS
void
SIM_write_fp_register_s(processor_t *cpu_ptr, int reg, float value);

DESCRIPTION
Obsolete since Simics 1.8. Use write_fp_register_s() in the sparc-v9 interface instead.

466

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_write_fp_register_x()
NAME
SIM_write_fp_register_x obsolete API function
SYNOPSIS
void
SIM_write_fp_register_x(processor_t *cpu_ptr, int reg, uint64 value);

DESCRIPTION
Obsolete since Simics 1.8. Use write_fp_register_x() in the sparc-v9 interface instead.

467

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_write_global_register()
NAME
SIM_write_global_register obsolete API function
SYNOPSIS
void
SIM_write_global_register(processor_t *cpu_ptr, int globals,
int reg, uinteger_t value);

DESCRIPTION
Obsolete since Simics 1.6. Use write_global_register() in the sparc-v9 interface instead.

468

VIRTUTECH CONFIDENTIAL

3.4. Backwards Compatibility

SIM_write_window_register()
NAME
SIM_write_window_register obsolete API function
SYNOPSIS
void
SIM_write_window_register(processor_t *cpu_ptr, int window,
int reg, uinteger_t value);

DESCRIPTION
Obsolete since Simics 1.6. Use write_window_register() in the sparc-v9 interface
instead.

469

VIRTUTECH CONFIDENTIAL

Chapter 4

Commands
4.1

Complete List

!
!=
$
%
&

+
+=
-=
->
/
<
<<
<=
<address_profiler>.address-profile-data
<address_profiler>.address-profile-info
<address_profiler>.address-profile-toplist
<agp-voodoo3>.info
<agp-voodoo3>.status
<alpha-lx164-system>.info
<alpha-lx164-system>.status
<AM79C960-dml>.connect
<AM79C960-dml>.disconnect
<AM79C960-dml>.info
<AM79C960-dml>.status

execute a shell command


not equal
get the value of an environment variable
read register by name
bitwise AND operation
arithmetic multiplication
arithmetic addition
set an environment variable
arithmetic subtraction
set an environment variable
access object attribute
arithmetic division
less than
bitwise left shift
less or equal
linear map of address profiling data
general info about an address profiler
print toplist of address profiling data
print information about the device
print status of the device
print information about the device
print status of the device
connect to a simulated Ethernet link
disconnect from simulated link
print information about the device
print status of the device

470

VIRTUTECH CONFIDENTIAL

<AM79C960>.connect
<AM79C960>.disconnect
<AM79C960>.info
<AM79C960>.status
<AM79C973>.info
<AM79C973>.pci-header
<AM79C973>.status
<apic-bus>.info
<apic-bus>.status
<apic>.info
<apic>.status
<apm>.status
<arm-sa1110-system>.info
<arm-sa1110-system>.status
<arm>.pscc-regs
<AT24C164>.info
<AT24C164>.status
<base-trace-mem-hier>.start
<base-trace-mem-hier>.stop
<base-trace-mem-hier>.trace-start
<base-trace-mem-hier>.trace-stop
<BCM5703C>.connect
<BCM5703C>.disconnect
<BCM5703C>.info
<BCM5703C>.pci-header
<BCM5703C>.status
<BCM5704C>.connect
<BCM5704C>.disconnect
<BCM5704C>.info
<BCM5704C>.pci-header
<BCM5704C>.status
<bitmask-translator>.info
<bitmask-translator>.status
<branch_recorder>.clean
<branch_recorder>.info
<branch_recorder>.print-branch-arcs
<branch_recorder>.status
<breakpoint>.break
<breakpoint>.tbreak
<cassini>.connect
<cassini>.disconnect

4.1. Complete List


connect to a simulated Ethernet link
disconnect from simulated link
print information about the device
print status of the device
print information about the device
print PCI device header
print status of the device
print information about the device
print status of the device
print information about the device
print status of the device
print status of the device
print information about the device
print status of the device
print coprocessor 15 (scc) registers.
print information about the device
print status of the device
control default tracer
stop default tracer
alias for <base-trace-mem-hier>.start
alias for <base-trace-mem-hier>.stop
connect to a simulated Ethernet link
disconnect from simulated link
print information about the device
print PCI device header
print status of the device
connect to a simulated Ethernet link
disconnect from simulated link
print information about the device
print PCI device header
print status of the device
print information about the device
print status of the device
delete all branch arcs in the branch recorder
print information about the device
print branch arcs
print status of the device
set breakpoint
set temporary breakpoint on current processor
connect to a simulated Ethernet link
disconnect from simulated link

471

VIRTUTECH CONFIDENTIAL

<cassini>.info
<cassini>.pci-header
<cassini>.status
<central-client>.connect
<central-client>.disconnect
<central-client>.info
<central-client>.links
<central-server>.connections
<central-server>.info
<cheerio-e2bus>.info
<cheerio-e2bus>.pci-header
<cheerio-e2bus>.status
<cheerio-hme>.connect
<cheerio-hme>.disconnect
<cheerio-hme>.i