ARM: Add an operand for accessing the current PC.
authorGabe Black <gblack@eecs.umich.edu>
Wed, 2 Jun 2010 17:58:00 +0000 (12:58 -0500)
committerGabe Black <gblack@eecs.umich.edu>
Wed, 2 Jun 2010 17:58:00 +0000 (12:58 -0500)
src/arch/arm/isa/operands.isa

index a27f612281dc28b704ff286f6f733e217bfce7a0..fefe9d925b50f07256911d2416a3c57b279e5f9c 100644 (file)
@@ -61,6 +61,9 @@ let {{
          xc->%(func)s(this, %(op_idx)s, %(final_val)s))
     '''
 
+    readPC = 'xc->readPC() & ~PcModeMask'
+    writePC = 'setPC(xc, %(final_val)s)'
+
     readNPC = 'xc->readNextPC() & ~PcModeMask'
     writeNPC = 'setNextPC(xc, %(final_val)s)'
 }};
@@ -101,6 +104,8 @@ def operands {{
     'Fpsid': ('ControlReg', 'uw', 'MISCREG_FPSID', None, 43),
     'Fpscr': ('ControlReg', 'uw', 'MISCREG_FPSCR', None, 44),
     'Fpexc': ('ControlReg', 'uw', 'MISCREG_FPEXC', None, 45),
-    'NPC': ('NPC', 'ud', None, (None, None, 'IsControl'), 50,
+    'PC':  ('PC', 'ud', None, (None, None, 'IsControl'), 50,
+            readPC, writePC),
+    'NPC': ('NPC', 'ud', None, (None, None, 'IsControl'), 51,
             readNPC, writeNPC),
 }};