add Control Bitfield class
--HG-- extra : convert_revision : 31e7243c8820cb9f6744c53c417460dee9adaf44
This commit is contained in:
parent
753adb38d5
commit
c6d137f565
1 changed files with 20 additions and 0 deletions
|
@ -25,6 +25,7 @@
|
||||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#
|
#
|
||||||
# Authors: Steve Reinhardt
|
# Authors: Steve Reinhardt
|
||||||
|
# Gabe Black
|
||||||
# Korey Sewell
|
# Korey Sewell
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
@ -1410,6 +1411,25 @@ class ControlRegOperand(Operand):
|
||||||
error(0, 'Attempt to write control register as FP')
|
error(0, 'Attempt to write control register as FP')
|
||||||
wb = 'xc->setMiscRegOperand(this, %s, %s);\n' % \
|
wb = 'xc->setMiscRegOperand(this, %s, %s);\n' % \
|
||||||
(self.dest_reg_idx, self.base_name)
|
(self.dest_reg_idx, self.base_name)
|
||||||
|
|
||||||
|
class ControlBitfieldOperand(ControlRegOperand):
|
||||||
|
def makeRead(self):
|
||||||
|
bit_select = 0
|
||||||
|
if (self.ctype == 'float' or self.ctype == 'double'):
|
||||||
|
error(0, 'Attempt to read control register as FP')
|
||||||
|
base = 'xc->readMiscReg(%s)' % self.reg_spec
|
||||||
|
name = self.base_name
|
||||||
|
return '%s = bits(%s, %s_HI, %s_LO);' % \
|
||||||
|
(name, base, name, name)
|
||||||
|
|
||||||
|
def makeWrite(self):
|
||||||
|
if (self.ctype == 'float' or self.ctype == 'double'):
|
||||||
|
error(0, 'Attempt to write control register as FP')
|
||||||
|
base = 'xc->readMiscReg(%s)' % self.reg_spec
|
||||||
|
name = self.base_name
|
||||||
|
wb_val = 'insertBits(%s, %s_HI, %s_LO, %s)' % \
|
||||||
|
(base, name, name, self.base_name)
|
||||||
|
wb = 'xc->setMiscRegOperand(this, %s, %s );\n' % (self.dest_reg_idx, wb_val)
|
||||||
wb += 'if (traceData) { traceData->setData(%s); }' % \
|
wb += 'if (traceData) { traceData->setData(%s); }' % \
|
||||||
self.base_name
|
self.base_name
|
||||||
return wb
|
return wb
|
||||||
|
|
Loading…
Reference in a new issue