E500v2
The E500v2 models the NXP processor core of the same name. This includes the SPE instruction set.
@e500v2 Reference
e500v2 Reference
Properties
Name | Type | Description |
---|---|---|
CPUId |
uint32_t |
|
Class |
*void |
Class object |
Component |
*void |
Pointer to component object if part of component |
LoggingFlags |
uint64_t |
Flags for logging info |
Name |
*char |
Object name |
TimeSource |
*void |
Time source object |
acc |
uint64_t |
Accumulator register |
atbl |
uint32_t |
|
atbu |
uint32_t |
|
bbear |
uint32_t |
|
bbtar |
uint32_t |
|
bucsr |
uint32_t |
|
cr |
uint32_t |
|
csrrs |
[uint32_t; 2] |
|
ctr |
uint32_t |
|
cycles |
int64_t |
|
dac1 |
uint32_t |
|
dac2 |
uint32_t |
|
dbcrs |
[uint32_t; 3] |
|
dbsr |
uint32_t |
|
dear |
uint32_t |
|
dec |
uint32_t |
|
decar |
uint32_t |
|
devices |
temu_IfaceRefArray |
|
dvc1 |
uint32_t |
|
dvc2 |
uint32_t |
|
esr |
uint32_t |
|
freq |
uint64_t |
|
gprs |
[uint64_t; 32] |
|
hids |
[uint32_t; 2] |
|
iac1 |
uint32_t |
|
iac2 |
uint32_t |
|
irq |
int8_t |
|
irqClient |
temu_IfaceRef/ <unknown> |
|
ivors |
[uint32_t; 64] |
|
ivpr |
uint32_t |
|
l1cfg0 |
uint32_t |
|
l1cfg1 |
uint32_t |
|
lr |
uint32_t |
|
machine |
temu_IfaceRef/ <unknown> |
|
mass |
[uint32_t; 7] |
|
mcar |
uint32_t |
|
mcsr |
uint32_t |
|
mcsrrs |
[uint32_t; 2] |
|
memAccess |
temu_IfaceRef/ <unknown> |
|
memAccessL2 |
temu_IfaceRef/ <unknown> |
|
memory |
temu_IfaceRef/ <unknown> |
|
mmucfg |
uint32_t |
|
mmucsr0 |
uint32_t |
|
msr |
uint32_t |
|
nextEvent |
int64_t |
|
pc |
uint32_t |
|
pid0 |
uint32_t |
|
pid1 |
uint32_t |
|
pid2 |
uint32_t |
|
pir |
uint32_t |
|
pmc0 |
uint32_t |
|
pmc1 |
uint32_t |
|
pmc2 |
uint32_t |
|
pmc3 |
uint32_t |
|
pmgc0 |
uint32_t |
|
pmlca0 |
uint32_t |
|
pmlca1 |
uint32_t |
|
pmlca2 |
uint32_t |
|
pmlca3 |
uint32_t |
|
pmlcb0 |
uint32_t |
|
pmlcb1 |
uint32_t |
|
pmlcb2 |
uint32_t |
|
pmlcb3 |
uint32_t |
|
powerState |
uint32_t |
|
pvr |
uint32_t |
|
spefscr |
uint32_t |
|
sprgs |
[uint32_t; 8] |
|
srrs |
[uint32_t; 2] |
|
state |
int32_t |
|
steps |
int64_t |
|
svr |
uint32_t |
|
tcr |
uint32_t |
|
tlb0cfg |
uint32_t |
|
tlb1cfg |
uint32_t |
|
tsr |
uint32_t |
|
upmc0 |
uint32_t |
|
upmc1 |
uint32_t |
|
upmc2 |
uint32_t |
|
upmc3 |
uint32_t |
|
upmgc0 |
uint32_t |
|
upmlca0 |
uint32_t |
|
upmlca1 |
uint32_t |
|
upmlca2 |
uint32_t |
|
upmlca3 |
uint32_t |
|
upmlcb0 |
uint32_t |
|
upmlcb1 |
uint32_t |
|
upmlcb2 |
uint32_t |
|
upmlcb3 |
uint32_t |
|
usrpg0 |
uint32_t |
|
xer |
uint32_t |
Interfaces
Name | Type | Description |
---|---|---|
ClockIface |
ClockIface |
|
CpuIface |
temu::CpuIface |
|
EventIface |
temu::EventIface |
|
InvalidMemAccessIface |
MemAccessIface |
|
IrqIface |
IrqCtrlIface |
|
MemoryIface |
MemoryIface |
|
MmuMemAccessIface |
MemAccessIface |
MMU access interface |
ObjectIface |
ObjectIface |
|
PowerIface |
PowerIface |
|
PowerPCIface |
temu::PowerPCIface |
|
ResetIface |
ResetIface |
Commands
Name | Description |
---|---|
delete |
Dispose instance of e500v2 |
printTLB0 |
Print TLB0 |
printTLB1 |
Print TLB1 |
raiseCritical |
Raise critical interrupt |
raiseExternal |
Raise external interrupt |
setPC |
Set PC |
setTLB0Entry |
Add entry to TLB0 |
setTLB1Entry |
Add entry to TLB1 |
Limitations
-
No static timing model is defined at this moment. That means that one instruction take one cycle to finish.
-
AltiVec instructions are not implemented at this moment. These can be added if such a PowerPC model is requested.
-
MMU model is not yet validated against hardware.
-
Cache control interfaces are not implemented or supported, this can be addressed if needed.
-
The errata described in the e500CORERMAD is not correctly simulated. the following instructions deviates from hardware errata and are implemented as documented instead:
-
evmwlssiaaw
-
evmwlssianw
-
evmwlusiaaw
-
evmwlusianw
-