diff options
Diffstat (limited to 'src/arch/isa_parser.py')
-rwxr-xr-x | src/arch/isa_parser.py | 54 |
1 files changed, 13 insertions, 41 deletions
diff --git a/src/arch/isa_parser.py b/src/arch/isa_parser.py index 4e06c2ded..8e13b6a6a 100755 --- a/src/arch/isa_parser.py +++ b/src/arch/isa_parser.py @@ -681,71 +681,43 @@ class MemOperand(Operand): def makeAccSize(self): return self.size -class PCOperand(Operand): +class PCStateOperand(Operand): def makeConstructor(self): return '' def makeRead(self): - return '%s = xc->readPC();\n' % self.base_name + return '%s = xc->pcState();\n' % self.base_name def makeWrite(self): - return 'xc->setPC(%s);\n' % self.base_name + return 'xc->pcState(%s);\n' % self.base_name -class UPCOperand(Operand): - def makeConstructor(self): - return '' - - def makeRead(self): - if self.read_code != None: - return self.buildReadCode('readMicroPC') - return '%s = xc->readMicroPC();\n' % self.base_name - - def makeWrite(self): - if self.write_code != None: - return self.buildWriteCode('setMicroPC') - return 'xc->setMicroPC(%s);\n' % self.base_name + def makeDecl(self): + return 'TheISA::PCState ' + self.base_name + ' M5_VAR_USED;\n'; -class NUPCOperand(Operand): +class PCOperand(Operand): def makeConstructor(self): return '' def makeRead(self): - if self.read_code != None: - return self.buildReadCode('readNextMicroPC') - return '%s = xc->readNextMicroPC();\n' % self.base_name + return '%s = xc->instAddr();\n' % self.base_name - def makeWrite(self): - if self.write_code != None: - return self.buildWriteCode('setNextMicroPC') - return 'xc->setNextMicroPC(%s);\n' % self.base_name - -class NPCOperand(Operand): +class UPCOperand(Operand): def makeConstructor(self): return '' def makeRead(self): if self.read_code != None: - return self.buildReadCode('readNextPC') - return '%s = xc->readNextPC();\n' % self.base_name - - def makeWrite(self): - if self.write_code != None: - return self.buildWriteCode('setNextPC') - return 'xc->setNextPC(%s);\n' % self.base_name + return self.buildReadCode('microPC') + return '%s = xc->microPC();\n' % self.base_name -class NNPCOperand(Operand): +class NPCOperand(Operand): def makeConstructor(self): return '' def makeRead(self): if self.read_code != None: - return self.buildReadCode('readNextNPC') - return '%s = xc->readNextNPC();\n' % self.base_name - - def makeWrite(self): - if self.write_code != None: - return self.buildWriteCode('setNextNPC') - return 'xc->setNextNPC(%s);\n' % self.base_name + return self.buildReadCode('nextInstAddr') + return '%s = xc->nextInstAddr();\n' % self.base_name class OperandList(object): '''Find all the operands in the given code block. Returns an operand |