VIRTUTECH CONFIDENTIAL    Previous - Up - Next

x86-486sx

Provided by
x86-486sx, x86-486sx-turbo
Class Hierarchy
conf-objectlog-objectx86-486sx
Interfaces Implemented
log_object, x86, a20, interrupt_ack, exception, int_register, processor, event_poster
Description
The x86-486sx class implements an x86 processor.

Attributes

Attributes inherited from class conf-object
attributes, classname, component, iface, name, object_id, queue
Attributes inherited from class log-object
access_count, log_buffer, log_buffer_last, log_buffer_size, log_group_mask, log_groups, log_level, log_type_mask
Attribute List
a20mask
Optional attribute; read/write access; type: unknown type.

The a20mask.

access_type_name
Pseudo attribute; read-only access; ; integer indexed; indexed type: String.

Get string describing the specified access type (x86_access_type_t).

activity_state
Optional attribute; read/write access; type: unknown type.

Processor activity state.

address_width
Pseudo class attribute; read-only access; type: unknown type.

(phys-bits, virt-bits) Number of bits in physical and virtual addresses.

ah
Pseudo attribute; read/write access; type: unknown type.

Register ah (bits 8-15 from eax).

al
Pseudo attribute; read/write access; type: unknown type.

Register al (lower 8 bits of eax).

aprof_views
Session attribute; read/write access; type: [[o,i]*].

((address profiler, view)*) Address profiler views selected for this processor. Affects only the display of profiling information, and has nothing to do with collecting it.

This attribute should contain a list of lists: one list for each address profiler view you want to select (in the order they are to appear), each containing first the address profiler object, then the index of the desired view.

architecture
Pseudo class attribute; read-only access; type: unknown type.

Implemented architecture (x86)

ax
Pseudo attribute; read/write access; type: unknown type.

Register ax (lower 16 bits of eax).

bh
Pseudo attribute; read/write access; type: unknown type.

Register bh (bits 8-15 from ebx).

big_endian
Pseudo attribute; read-only access; type: b.

This attribute is TRUE if the processor uses big-endian byte order and FALSE if it uses little-endian.

bl
Pseudo attribute; read/write access; type: unknown type.

Register bl (lower 8 bits of ebx).

block_init
Optional attribute; read/write access; type: unknown type.

INIT will be blocked if this flag is set.

block_nmi
Optional attribute; read/write access; type: unknown type.

NMI will be blocked if this flag is set.

block_smi
Optional attribute; read/write access; type: unknown type.

SMI will be blocked if this flag is set.

bp
Pseudo attribute; read/write access; type: unknown type.

Register bp (lower 16 bits of ebp).

branch_prof_support
Pseudo attribute; read-only access; type: b.

True if this processor supports branch profiling in -stall mode, false otherwise.

bx
Pseudo attribute; read/write access; type: unknown type.

Register bx (lower 16 bits of ebx).

ch
Pseudo attribute; read/write access; type: unknown type.

Register ch (bits 8-15 from ecx).

cl
Pseudo attribute; read/write access; type: unknown type.

Register cl (lower 8 bits of ecx).

committed_instructions
Session attribute; read/write access; type: unknown type.

Number of committed instructions for an out of order target. Same as step count for an in-order Simics.

cpl
Optional attribute; read/write access; type: unknown type.

Current privilige level.

cpu_group
Optional attribute; read/write access; type: Object or Nil.

The group that this processor belongs to. A cpu group is a collection if cpus that may share memory and/or send interrupts between them. The group must implement the "cpu_group"interface.

cpuid_2_eax
Optional attribute; read/write access; type: unknown type.

Value returned in EAX for CPUID when input EAX == 2.

cpuid_2_ebx
Optional attribute; read/write access; type: unknown type.

Value returned in EBX for CPUID when input EAX == 2.

cpuid_2_ecx
Optional attribute; read/write access; type: unknown type.

Value returned in ECX for CPUID when input EAX == 2.

cpuid_2_edx
Optional attribute; read/write access; type: unknown type.

Value returned in EDX for CPUID when input EAX == 2.

cpuid_brand_id
Optional attribute; read/write access; type: unknown type.

Brand ID for CPUID.

cpuid_clflush_size
Optional attribute; read/write access; type: unknown type.

Size of CLFLUSH as reported by CPUID.

cpuid_extended_family
Optional attribute; read/write access; type: unknown type.

Extended family for CPUID.

cpuid_extended_model
Optional attribute; read/write access; type: unknown type.

Extended model for CPUID.

cpuid_family
Optional attribute; read/write access; type: unknown type.

Family for CPUID.

cpuid_l2_cache_assoc
Optional attribute; read/write access; type: unknown type.

Level 2 cache information returned by CPUID function 8000.0006.

cpuid_l2_cache_line_size
Optional attribute; read/write access; type: unknown type.

Level 2 cache information returned by CPUID function 8000.0006.

cpuid_l2_cache_lines_per_tag
Optional attribute; read/write access; type: unknown type.

Level 2 cache information returned by CPUID function 8000.0006.

cpuid_l2_cache_size_kb
Optional attribute; read/write access; type: unknown type.

Level 2 cache information returned by CPUID function 8000.0006.

cpuid_logical_processor_count
Optional attribute; read/write access; type: unknown type.

Count of logical processors for CPUID. Setting this to non-zero will enable the HTT feature bit (bit 28).

cpuid_model
Optional attribute; read/write access; type: unknown type.

Model for CPUID.

cpuid_physical_apic_id
Optional attribute; read/write access; type: unknown type.

Physical local APIC ID for CPUID.

cpuid_processor_name
Optional attribute; read/write access; type: unknown type.

Processor name for CPUID.

cpuid_stepping
Optional attribute; read/write access; type: unknown type.

Stepping for CPUID.

cpuid_vendor_id
Optional attribute; read/write access; type: unknown type.

Vendor ID string for CPUID.

cr0
Optional attribute; read/write access; type: unknown type.

Control register 0.

cr2
Optional attribute; read/write access; type: unknown type.

Control register 2.

cr3
Optional attribute; read/write access; type: unknown type.

Control register 3.

cr4
Optional attribute; read/write access; type: unknown type.

Control register 4.

cs
Optional attribute; read/write access; type: unknown type.

X86 segment register. All fields are stored in a list of integers as follows: (selector, d, dpl, g, p, s, type, base, limit, valid) The limit field always specifies the limit in bytes.

current_context
Session attribute; read/write access; type: Object.

Current context object.

cx
Pseudo attribute; read/write access; type: unknown type.

Register cx (lower 16 bits of ecx).

cycle_fractions
Optional attribute; read/write access; type: Integer.

Modeling parameter related to processor scheduling.

cycles
Optional attribute; read/write access; type: Integer.

Time measured in cycles from machine start.

dbg_compile_block
Pseudo attribute; write-only access; type: unknown type.

Force compile of block.

dh
Pseudo attribute; read/write access; type: unknown type.

Register dh (bits 8-15 from edx).

di
Pseudo attribute; read/write access; type: unknown type.

Register di (lower 16 bits of edi).

disable_block_merge
Optional attribute; read/write access; type: unknown type.

Internal.

disabled_breakpoints_update_dr6
Optional attribute; read/write access; type: unknown type.

Set to non-zero if you want debug breakpoints that are not enabled either through DR7.L nor DR7.G to still set the B bits in DR6.

dl
Pseudo attribute; read/write access; type: unknown type.

Register dl (lower 8 bits of edx).

do_allocate_target_registers
Session class attribute; read/write access; type: unknown type.

Target register allocation enable.

do_reissue
Session attribute; write-only access; type: Integer.

Obsolete attribute that was used to keep information about the current memory transaction if is_stalling is set.

dr0
Optional attribute; read/write access; type: unknown type.

Debug register 0.

dr1
Optional attribute; read/write access; type: unknown type.

Debug register 1.

dr2
Optional attribute; read/write access; type: unknown type.

Debug register 2.

dr3
Optional attribute; read/write access; type: unknown type.

Debug register 3.

dr6
Optional attribute; read/write access; type: unknown type.

Debug register 6.

dr7
Optional attribute; read/write access; type: unknown type.

Debug register 7.

ds
Optional attribute; read/write access; type: unknown type.

X86 segment register. All fields are stored in a list of integers as follows: (selector, d, dpl, g, p, s, type, base, limit, valid) The limit field always specifies the limit in bytes.

dx
Pseudo attribute; read/write access; type: unknown type.

Register dx (lower 16 bits of edx).

eax
Optional attribute; read/write access; type: unknown type.

General purpose register.

ebp
Optional attribute; read/write access; type: unknown type.

General purpose register.

ebx
Optional attribute; read/write access; type: unknown type.

General purpose register.

ecx
Optional attribute; read/write access; type: unknown type.

General purpose register.

edi
Optional attribute; read/write access; type: unknown type.

General purpose register.

edx
Optional attribute; read/write access; type: unknown type.

General purpose register.

eflags
Optional attribute; read/write access; type: unknown type.

Flag register.

eip
Optional attribute; read/write access; type: unknown type.

Instruction pointer.

enabled_flag
Optional attribute; read/write access; type: b.

TRUE if the processor is enabled. If FALSE, it will see time (cycles) pass but not execute steps.

es
Optional attribute; read/write access; type: unknown type.

X86 segment register. All fields are stored in a list of integers as follows: (selector, d, dpl, g, p, s, type, base, limit, valid) The limit field always specifies the limit in bytes.

esi
Optional attribute; read/write access; type: unknown type.

General purpose register.

esp
Optional attribute; read/write access; type: unknown type.

General purpose register.

event_desc
Pseudo attribute; read-only access; ; integer indexed; indexed type: [[o|n,s,i]*].

((object, description, time)*). All events in queue with a human-readable description. The attribute is indexed by queue (Sim_Queue_Step/Time).

exception_description
Pseudo attribute; read-only access; type: String.

Description of current exception. Only valid when read from the Core_Exception hap. The value can be Nil in which case the exception number, source, and optional error code can be used to gain an understanding of why the exception triggered.

exception_error_code
Pseudo attribute; read-only access; type: Integer.

Error code for the current exception. Only valid when read from the Core_Exception hap. This attribute is undefined for exceptions that do not have an error code.

ext
Optional attribute; read/write access; type: unknown type.

A bit indicating if the current exception is external.

ferr_status
Optional attribute; read/write access; type: unknown type.

Status for the ferr output pin.

ferr_target
Optional attribute; read/write access; type: unknown type.

Object to which the FERR pin (used for external x87 exception emulation) is connected.

fpu_commit_last_instr
Optional attribute; read/write access; type: unknown type.

If this attribute is non-zero, the next FPU instruction will shift the FPU instruction, operand, and opcode values.

fpu_control
Optional attribute; read/write access; type: unknown type.

X86 register.

fpu_last_instr_pointer0
Optional attribute; read/write access; type: unknown type.

FPU instruction pointer offset.

fpu_last_instr_pointer1
Optional attribute; read/write access; type: unknown type.

Next FPU instruction pointer offset.

fpu_last_instr_selector0
Optional attribute; read/write access; type: unknown type.

FPU instruction pointer selector.

fpu_last_instr_selector1
Optional attribute; read/write access; type: unknown type.

Next FPU instruction pointer selector.

fpu_last_opcode0
Optional attribute; read/write access; type: unknown type.

FPU instruction opcode.

fpu_last_opcode1
Optional attribute; read/write access; type: unknown type.

Next FPU instruction opcode.

fpu_last_operand_pointer0
Optional attribute; read/write access; type: unknown type.

FPU operand pointer offset.

fpu_last_operand_pointer1
Optional attribute; read/write access; type: unknown type.

Next FPU operand pointer offset.

fpu_last_operand_selector0
Optional attribute; read/write access; type: unknown type.

FPU operand pointer selector.

fpu_last_operand_selector1
Optional attribute; read/write access; type: unknown type.

Next FPU operand pointer selector.

fpu_regs
Optional attribute; read/write access; type: unknown type.

((empty, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9){8}). X86 floating point registers. The 8 80-bits registers is stored as a list of 11 bytes. The first byte tells if the register is empty (1) or not (0). The other bytes contain the register value with the lowest (least significant) bits in b0 and the highest (most significant bits in b9.

fpu_status
Optional attribute; read/write access; type: unknown type.

X86 register.

fpu_tag
Optional attribute; read/write access; type: unknown type.

X86 register.

freq_mhz
Required attribute; read/write access; type: i|f.

Processor clock frequency in MHz.

fs
Optional attribute; read/write access; type: unknown type.

X86 segment register. All fields are stored in a list of integers as follows: (selector, d, dpl, g, p, s, type, base, limit, valid) The limit field always specifies the limit in bytes.

gdtr_base
Optional attribute; read/write access; type: unknown type.

Global descriptor table base.

gdtr_limit
Optional attribute; read/write access; type: unknown type.

Global descriptor table limit.

gs
Optional attribute; read/write access; type: unknown type.

X86 segment register. All fields are stored in a list of integers as follows: (selector, d, dpl, g, p, s, type, base, limit, valid) The limit field always specifies the limit in bytes.

halt_steps
Optional attribute; read/write access; type: unknown type.

Number of steps waiting in HLT instructions.

idtr_base
Optional attribute; read/write access; type: unknown type.

Interrupt descriptor table base.

idtr_limit
Optional attribute; read/write access; type: unknown type.

Interrupt descriptor table limit.

ignne_status
Optional attribute; read/write access; type: unknown type.

Status for the ignne input pin.

in_smm
Optional attribute; read/write access; type: unknown type.

Set iff the processor is in system management mode.

instruction_fetch_line_size
Session attribute; read/write access; type: Integer.

Instruction fetch line size for this processor.

instruction_fetch_mode
Session attribute; read/write access; type: String.

Instruction fetch mode

ip
Pseudo attribute; read/write access; type: unknown type.

Register ip (lower 16 bits of eip).

is_stalling
Optional attribute; read/write access; type: b.

TRUE if the processor is currently stalling by request of a timing-model.

latch_init
Optional attribute; read/write access; type: unknown type.

INIT is currently latched.

latch_nmi
Optional attribute; read/write access; type: unknown type.

NMI is currently latched.

latch_smi
Optional attribute; read/write access; type: unknown type.

SMI is currently latched.

ldtr
Optional attribute; read/write access; type: unknown type.

X86 segment register. All fields are stored in a list of integers as follows: (selector, d, dpl, g, p, s, type, base, limit, valid) The limit field always specifies the limit in bytes.

load_test_file
Pseudo attribute; write-only access; type: String.

Internal. Load test file into memory.

lock_granularity
Optional attribute; read/write access; type: Integer.

Lock granularity of atomic instructions

lsq_enabled
Optional attribute; read/write access; type: Integer.

When non-zero, the internal load/store queue is enabled. Only applicable if ooo-mode is "micro-architecture"

mai_debug
Optional attribute; read/write access; type: String.

(internal) Set debug file for MAI

memory_profiling_granularity_log2
Pseudo attribute; read-only access; type: Integer.

Base 2 logarithm of memory profiling granularity.

min_cacheline_size
Pseudo attribute; read-only access; type: Integer.

The minimum size (in bytes) of a cache line that can be represented by Simics (when connecting a cache memhier).

mmu_stalling
Optional attribute; read/write access; type: Integer.

0: mmu stalling off when using MAI, 1: mmu stalling on when using MAI.

mode_counters
Pseudo attribute; read-only access; type: [[sii]*].

((name, user-value, supervisor-value), ...) List of per-mode counters.

ooo_mode
Optional attribute; read/write access; type: String.

"in-order" or "micro-architecture".

panic_string
Pseudo class attribute; read-only access; type: String.

Description of the last internal simulator panic.

pending_debug_exception
Optional attribute; read/write access; type: unknown type.

A debug exception is pending. Additional information about the exception is stored in pending_debug_exception_dr6.

pending_debug_exception_dr6
Optional attribute; read/write access; type: unknown type.

Valid if pending_debug_exception is non-zero. Attribute has the same format as the DR6 register.

pending_exception
Optional attribute; read/write access; type: unknown type.

If this attribute is non-zero, then we have a pending exception that will be handled before the next instruction. This will only happen for exceptions that are handled after instruction completion (traps).

pending_exception_error_code
Optional attribute; read/write access; type: unknown type.

Error code to be delivered on the next pending exception.

pending_exception_instruction_length
Optional attribute; read/write access; type: unknown type.

Length of pending trap instruction.

pending_interrupt
Optional attribute; read/write access; type: unknown type.

This attribute is non-zero when an interrupt should be taken before the next instruction.

pending_vector
Optional attribute; read/write access; type: unknown type.

Pending interrupt vector. Only valid between interrupt ack and the actual handling of the interrupt (when pending_vector_valid is set).

pending_vector_valid
Optional attribute; read/write access; type: unknown type.

Valid flag for pending_vector.

physical_bits
Pseudo class attribute; read-only access; type: Integer.

Number of physical address bits.

physical_io
Optional attribute; read/write access; type: Object.

I/O space. Must implement both the memory-space and the breakpoint interface.

physical_memory
Required attribute; read/write access; type: Object.

Physical memory space. Must implement both the memory-space and the breakpoint interface.

port_space
Required attribute; read/write access; type: unknown type.

I/O space of the cpu targeted by the IN, INS, OUT, and OUTS instructions. Must implement either the port interface (typically an instance of the port-space class), or the lookup interface (typically an instance of the memory-space class).

processor_number
Optional attribute; read/write access; type: Integer.

Simics internal processor number for this CPU. Each processor must have a unique processor number. This attribute can only be set as part of an initial configuration.

reorder_buffer_size
Optional attribute; read/write access; type: unknown type.

Size of the reorder buffer (for x86 MAI).

si
Pseudo attribute; read/write access; type: unknown type.

Register si (lower 16 bits of esi).

sp
Pseudo attribute; read/write access; type: unknown type.

Register sp (lower 16 bits of esp).

ss
Optional attribute; read/write access; type: unknown type.

Segment register. All fields are stored in a list of integers as follows: (selector, b, dpl, g, p, s, type, base, limit, valid) The limit field always specifies the limit in bytes.

stall_time
Optional attribute; read/write access; type: Integer.

The number of cycles the processor will stall

stalling_info
Optional attribute; read/write access; type: [iii].

If is_stalling is set, this contains information about the current memory operation.

step_per_cycle_mode
Optional attribute; read/write access; type: String.

"constant" indicates a constant finite step/cycle factor; "infinite" means that steps are run without advancing time.

step_queue
Optional attribute; read/write access; type: [[o|n,a,s,i]*].

((object, value, slot, step)*). Pending step queue events. object must implement the event_poster interface.

step_rate
Optional attribute; read/write access; type: [iii].

(q, p, r) where q/p is the step per cycle rate, p is a power of 2 and r indicates how much of a cycle that the current step has consumed.

steps
Optional attribute; read/write access; type: Integer.

Number steps executed since machine start.

temporary_interrupt_mask
Optional attribute; read/write access; type: unknown type.

If non-zero, interrupts are temporarily disabled even though EFLAGS.IF may be set.

time_queue
Optional attribute; read/write access; type: [[o|n,a,s,i]*].

((object, value, slot, cycle)*). Pending time queue events. object must implement the event_poster interface.

tlb
Required attribute; read/write access; type: Object.

Object handling the TLBs for this CPU.

tr
Optional attribute; read/write access; type: unknown type.

X86 segment register. All fields are stored in a list of integers as follows: (selector, d, dpl, g, p, s, type, base, limit, valid) The limit field always specifies the limit in bytes.

turbo_alloc_memory
Session class attribute; read/write access; type: unknown type.

Force allocation of memory.

turbo_block_info
Pseudo class attribute; read/write access; type: unknown type.

Block stats.

turbo_blocks
Pseudo class attribute; read-only access; type: [[iiiii]*].

Compiled blocks.

turbo_code_area
Session class attribute; read-only access; type: unknown type.

Code areas.

turbo_debug_level
Session class attribute; read/write access; type: unknown type.

Turbo engine debug level.

turbo_execution_mode
Session class attribute; read/write access; type: unknown type.

Turbo enable.

turbo_exhaust_current_block
Pseudo class attribute; write-only access; type: unknown type.

Allocate all code space in the current block.

turbo_global_vars
Pseudo class attribute; read-only access; type: unknown type.

Global symbols.

turbo_heap_start
Session class attribute; read-only access; type: unknown type.

Start of heap.

turbo_link_targets
Pseudo class attribute; read-only access; type: unknown type.

Link targets.

turbo_max_compiled_blocks
Session class attribute; read/write access; type: unknown type.

Max number of blocks.

turbo_max_trace_size
Session class attribute; read/write access; type: unknown type.

Max translation unit size.

turbo_processor_offsets
Pseudo class attribute; read-only access; type: unknown type.

Processor offsets.

turbo_register_offsets
Pseudo class attribute; read-only access; type: unknown type.

Register offsets.

turbo_segbase_optimization_delay
Session class attribute; read/write access; type: unknown type.

Segment base optimization delay.

turbo_stat
Pseudo class attribute; read/write access; type: unknown type; string indexed; indexed type: unknown type.

Stats.

turbo_stats
Pseudo class attribute; write-only access; type: unknown type.

When set to one, print stats.

turbo_threshold
Session class attribute; read/write access; type: unknown type.

Translation threshold.

turbo_use_direct_sp
Session class attribute; read/write access; type: unknown type.

Direct stack pointer enable.

turbo_use_dstc_direct_lookup
Session class attribute; read/write access; type: unknown type.

Direct DSTC lookup enable.

turbo_use_off_page_chaining
Session class attribute; read/write access; type: unknown type.

Off page chaining enable.

waiting_device
Optional attribute; read/write access; type: unknown type.

The device that requested the waiting interrupt. Only valid when waiting_interrupt is non-zero.

waiting_interrupt
Optional attribute; read/write access; type: unknown type.

If an interrupt is requested, but it cannot be immediately handled because interrupts are masked.

Command List

Commands defined by interface log_object
log, log-group, log-level, log-size, log-type
Commands defined by interface x86
memory-configuration, msrs, pregs-fpu, pregs-sse, print-gdt, print-idt
Commands defined by interface processor
add-memory-profiler, aprof-views, attach-branch-recorder, break-cr, cycle-break, cycle-break-absolute, detach-branch-recorder, disable, disassemble, down, enable, frame, info, instruction-fetch-mode, io-read, io-write, list, list-memory-profilers, load-binary, logical-to-physical, pos, pregs, pregs-hyper, print-statistics, print-time, psym, read, read-reg, register-number, remove-memory-profiler, set-context, set-pc, stack-trace, start-instruction-profiling, step-break, step-break-absolute, sum, symval, trace-cr, unbreak-cr, untrace-cr, up, wait-for-cycle, wait-for-step, write, write-reg, x

VIRTUTECH CONFIDENTIAL    Previous - Up - Next