Make two simple utility functions to determine if a MiscReg index corresponding to an IPR is readable or writable.
--HG-- extra : convert_revision : 89eebba5eec01e629213997d24c734a6acad0ecb
This commit is contained in:
parent
312a4710d7
commit
fb5ba85abb
2 changed files with 11 additions and 6 deletions
|
@ -218,6 +218,15 @@ namespace AlphaISA
|
|||
NumInternalProcRegs // number of IPR registers
|
||||
};
|
||||
|
||||
inline bool IprIsWritable(int index)
|
||||
{
|
||||
return index < minReadOnlyIpr || index > maxReadOnlyIpr;
|
||||
}
|
||||
|
||||
inline bool IprIsReadable(int index)
|
||||
{
|
||||
return index < minWriteOnlyIpr || index > maxWriteOnlyIpr;
|
||||
}
|
||||
|
||||
extern md_ipr_names MiscRegIndexToIpr[NumInternalProcRegs];
|
||||
extern int IprToMiscRegIndex[MaxInternalProcRegs];
|
||||
|
|
|
@ -746,9 +746,7 @@ decode OPCODE default Unknown::unknown() {
|
|||
format HwMoveIPR {
|
||||
1: hw_mfpr({{
|
||||
int miscRegIndex = IprToMiscRegIndex[ipr_index];
|
||||
if(miscRegIndex < 0 ||
|
||||
(miscRegIndex >= MinWriteOnlyIpr &&
|
||||
miscRegIndex <= MaxWriteOnlyIpr))
|
||||
if(miscRegIndex < 0 || !IprIsReadable(miscRegIndex))
|
||||
fault = new UnimplementedOpcodeFault;
|
||||
else
|
||||
Ra = xc->readMiscRegWithEffect(miscRegIndex, fault);
|
||||
|
@ -761,9 +759,7 @@ decode OPCODE default Unknown::unknown() {
|
|||
format HwMoveIPR {
|
||||
1: hw_mtpr({{
|
||||
int miscRegIndex = IprToMiscRegIndex[ipr_index];
|
||||
if(miscRegIndex < 0 ||
|
||||
(miscRegIndex >= MinReadOnlyIpr &&
|
||||
miscRegIndex <= MaxWriteOnlyIpr))
|
||||
if(miscRegIndex < 0 || !IprIsWritable(miscRegIndex))
|
||||
fault = new UnimplementedOpcodeFault;
|
||||
else
|
||||
xc->setMiscRegWithEffect(miscRegIndex, Ra);
|
||||
|
|
Loading…
Reference in a new issue