Enumerations
temu_ARMExecMode
temu_ARMMode
Type
enum temu_ARMMode {
teARM_Usr = 0,
teARM_Fiq = 1,
teARM_Irq = 2,
teARM_Svc = 3,
teARM_Mon = 4,
teARM_Abt = 5,
teARM_Hyp = 6,
teARM_Und = 7,
teARM_Sys = 8,
}
Enumerators
Name | Value | Description |
---|---|---|
teARM_Usr |
0 |
User 0b10000 0x10 16 |
teARM_Fiq |
1 |
Fast irq 0b10001 0x11 17 |
teARM_Irq |
2 |
Interrupt 0b10010 0x12 18 |
teARM_Svc |
3 |
Supervisor 0b10011 0x13 19 |
teARM_Mon |
4 |
Monitor 0b10110 0x14 20 |
teARM_Abt |
5 |
Abort 0b10111 0x15 21 |
teARM_Hyp |
6 |
Hypervisor 0b11010 0x1a 26 |
teARM_Und |
7 |
Undefined 0b11011 0b1b 27 |
teARM_Sys |
8 |
System 0b11111 0b1f 31 |
temu_BTStatID
Type
enum temu_BTStatID {
teBTS_TranslatedInstructions = 0,
teBTS_ExecutedInstructions = 1,
teBTS_TranslatedBlocks = 2,
teBTS_ExecutedBlocks = 3,
teBTS_CodeSize = 4,
}
Enumerators
Name | Value | Description |
---|---|---|
teBTS_TranslatedInstructions |
0 |
Number of translated instructions |
teBTS_ExecutedInstructions |
1 |
Number of executed instructions |
teBTS_TranslatedBlocks |
2 |
Number of translated blocks |
teBTS_ExecutedBlocks |
3 |
Number of executed blocks |
teBTS_CodeSize |
4 |
Translated code size in bytes |
temu_ClockStopReason
Type
enum temu_ClockStopReason {
teCSR_Normal = 0,
teCSR_Halt = 1,
teCSR_BreakWatch = 2,
teCSR_Early = 3,
teCSR_Panic = 4,
teCSR_Sync = 5,
}
Enumerators
Name | Value | Description |
---|---|---|
teCSR_Normal |
0 |
Normal exit (cannot be passed to early exit) |
teCSR_Halt |
1 |
Exited due to clock halting |
teCSR_BreakWatch |
2 |
Exited due to breakpoint or watchpoint hit |
teCSR_Early |
3 |
Other early stop reason |
teCSR_Panic |
4 |
Clock had a serious internal error |
teCSR_Sync |
5 |
Clock needs to synchronize |
temu_CmdOptionKind
Type
enum temu_CmdOptionKind {
teCOK_Path = 1,
teCOK_Object = 2,
teCOK_Int = 3,
teCOK_Double = 4,
teCOK_Prop = 5,
teCOK_Iface = 6,
teCOK_Reg = 7,
teCOK_Field = 8,
teCOK_Class = 9,
}
Enumerators
Name | Value | Description |
---|---|---|
teCOK_Path |
1 |
Path is a string, but with auto completion of file names |
teCOK_Object |
2 |
Object is a named object |
teCOK_Int |
3 |
Any integer number |
teCOK_Double |
4 |
Any floating point number |
teCOK_Prop |
5 |
Property reference |
teCOK_Iface |
6 |
Interface reference |
teCOK_Reg |
7 |
Register reference |
teCOK_Field |
8 |
Register field reference |
teCOK_Class |
9 |
Class option |
temu_CpuExitReason
Type
enum temu_CpuExitReason {
teCER_Normal = 0,
teCER_Trap = 2,
teCER_Halt = 3,
teCER_Event = 4,
teCER_Break = 5,
teCER_WatchR = 6,
teCER_WatchW = 7,
teCER_Early = 8,
teCER_Panic = 9,
teCER_Sync = 10,
}
Enumerators
Name | Value | Description |
---|---|---|
teCER_Normal |
0 |
Normal exit (cannot be passed to early exit) |
teCER_Trap |
2 |
Exited due to trap (sync trap) |
teCER_Halt |
3 |
Exited due to halting (e.g. sparc error mode) |
teCER_Event |
4 |
Exited due to synchronised event (internally, returned for any event) |
teCER_Break |
5 |
Exited due to breakpoint hit |
teCER_WatchR |
6 |
Exited due to watchpoint read hit |
teCER_WatchW |
7 |
Exited due to watchpoint write hit |
teCER_Early |
8 |
Other early exit reason |
teCER_Panic |
9 |
Emulator panic (e.g. illegal mode transition) |
teCER_Sync |
10 |
Instruction cache sync operation |
temu_CpuState
Enumerators
Name | Value | Description |
---|---|---|
teCS_Nominal |
0 |
Normal all ok CPU state |
teCS_Halted |
1 |
Halted CPU (e.g. SPARC error mode), the CPU can go to the normal state using a reset |
teCS_Idling |
2 |
The CPU is in idle mode. It will not run instructions, only advance the CPUs event queue (until the CPU moves to another mode). |
temu_InstructionFlags
Type
enum temu_InstructionFlags {
teIF_Branch = 1,
teIF_IndirectBranch = 2,
teIF_Load = 4,
teIF_Store = 8,
teIF_Integer = 16,
teIF_Float = 32,
teIF_Arithmetic = 64,
teIF_Annulled = 128,
teIF_UnconditionalTaken = 256,
teIF_UnconditionalNotTaken = 512,
teIF_OnPage = 1024,
teIF_ModeSwitch = 2048,
teIF_Call = 4096,
}
Enumerators
Name | Value | Description |
---|---|---|
teIF_Branch |
1 |
Instruction is a branch |
teIF_IndirectBranch |
2 |
Instruction is an indirect branch |
teIF_Load |
4 |
Instruction is a load |
teIF_Store |
8 |
Instruction is a store |
teIF_Integer |
16 |
Integer instruction |
teIF_Float |
32 |
Floating point instruction |
teIF_Arithmetic |
64 |
Arithmetic instruction |
teIF_Annulled |
128 |
Annulled branch |
teIF_UnconditionalTaken |
256 |
Unconditional taken branch |
teIF_UnconditionalNotTaken |
512 |
Unconditional not-taken branch |
teIF_OnPage |
1024 |
On page branch |
teIF_ModeSwitch |
2048 |
Privilege mode switching instruction |
teIF_Call |
4096 |
Call instruction |
temu_LogLevel
temu_MemoryAttr
Type
enum temu_MemoryAttr {
teMA_Break = 1,
teMA_WatchRead = 2,
teMA_WatchWrite = 4,
teMA_Upset = 8,
teMA_Faulty = 16,
teMA_User1 = 32,
teMA_User2 = 64,
teMA_User3 = 128,
}
Description
The emulator provides 5 standard attributes, and 3 user defined ones. The attributes are set in the memory space (not the memory models), so it is possible to set a watch point on memory mapped devices. When an attribute is set on a page, that page will get a shadow attribute page (same size as the page), enabling attributes to be set on a per byte level.
Attributes are only checked on the address being accessed, the transaction size is not taken into account.
Enumerators
Name | Value | Description |
---|---|---|
teMA_Break |
1 |
Breakpoint set |
teMA_WatchRead |
2 |
Read watchpoint set |
teMA_WatchWrite |
4 |
Write watchpoint set |
teMA_Upset |
8 |
Single event upset |
teMA_Faulty |
16 |
Multiple event upset / uncorrectable |
teMA_User1 |
32 |
User definable |
teMA_User2 |
64 |
User definable |
teMA_User3 |
128 |
User definable |
temu_MemoryEndianness
temu_MemoryKind
temu_PatternAction
Type
enum temu_PatternAction {
tePA_Idle = 0,
tePA_Skip = 1,
tePA_Call = 2,
tePA_CallAndSkip = 3,
tePA_Invalid = 4,
}
Enumerators
Name | Value | Description |
---|---|---|
tePA_Idle |
0 |
Enter idle when running pattern |
tePA_Skip |
1 |
Skip over code pattern (currently not supported) |
tePA_Call |
2 |
Call function but run code after function returns (currently not supported) |
tePA_CallAndSkip |
3 |
Call function and skip the matched instructions (currently not supported) |
tePA_Invalid |
4 |
Invalid action, do not use! Internal API use only. |
temu_Type
Type
enum temu_Type {
teTY_Invalid = 0,
teTY_Intptr = 1,
teTY_Uintptr = 2,
teTY_Float = 3,
teTY_Double = 4,
teTY_U8 = 5,
teTY_U16 = 6,
teTY_U32 = 7,
teTY_U64 = 8,
teTY_I8 = 9,
teTY_I16 = 10,
teTY_I32 = 11,
teTY_I64 = 12,
teTY_Obj = 13,
teTY_InternalPtr = 14,
teTY_IfaceRef = 15,
teTY_IfaceRefArray = 16,
teTY_String = 17,
teTY_Buffer = 18,
teTY_Dict = 19,
teTY_Vector = 20,
teTY_List = 21,
}
Description
Type tag
The TEMU object system uses type tags to track which type is registered and in use at runtime. Type tags are used in for example the property registration functions.
Enumerators
Name | Value | Description |
---|---|---|
teTY_Invalid |
0 |
Invalid value 0 |
teTY_Intptr |
1 |
Pointer sized signed integer (intptr_t) |
teTY_Uintptr |
2 |
Pointer sized unsigned integer (uintptr_t) |
teTY_Float |
3 |
Single precision floating point value |
teTY_Double |
4 |
Double precision floating point value |
teTY_U8 |
5 |
8-bit fixed width unsigned integer |
teTY_U16 |
6 |
16-bit fixed width unsigned integer |
teTY_U32 |
7 |
32-bit fixed width unsigned integer |
teTY_U64 |
8 |
64-bit fixed width unsigned integer |
teTY_I8 |
9 |
8-bit fixed width signed integer |
teTY_I16 |
10 |
16-bit fixed width signed integer |
teTY_I32 |
11 |
32-bit fixed width signed integer |
teTY_I64 |
12 |
64-bit fixed width signed integer |
teTY_Obj |
13 |
Pointer to temu_Object |
teTY_InternalPtr |
14 |
Internal pointer |
teTY_IfaceRef |
15 |
Interface reference |
teTY_IfaceRefArray |
16 |
Dynamic object/interface array |
teTY_String |
17 |
C-string, useful for serialization |
teTY_Buffer |
18 |
Buffer (see Buffer.h) |
teTY_Dict |
19 |
Dictionary |
teTY_Vector |
20 |
Vector (i.e. dynamic array) |
teTY_List |
21 |
List |