aboutsummaryrefslogtreecommitdiff
path: root/opcodes
diff options
context:
space:
mode:
authorMichael Eager <eager@eagercon.com>2012-11-21 17:34:14 +0000
committerMichael Eager <eager@eagercon.com>2012-11-21 17:34:14 +0000
commit0db4b3260cfc1818dba17ee53bb8e6ca6fdefecc (patch)
treeebab98525dfab07eff0f4c02b90b40d3770ca3ee /opcodes
parente0f33b1fbf3b88882abd0d4136b8d1307e351c9d (diff)
downloadgdb-0db4b3260cfc1818dba17ee53bb8e6ca6fdefecc.zip
gdb-0db4b3260cfc1818dba17ee53bb8e6ca6fdefecc.tar.gz
gdb-0db4b3260cfc1818dba17ee53bb8e6ca6fdefecc.tar.bz2
Add stack high register and stack low register for MicroBlaze
hardware assisted stack protection, stores stack low / stack high limits for detecting stack overflow / underflow binutils/opcodes * microblaze-opcm.h: Add REG_SLR_MASK, REG_SHR_MASK, REG_SHR and REG_SLR * microblaze-dis.c (get_field_special): Handle REG_SLR_MASK and REG_SHR_MASK binutils/gas * config/tc-microblaze.c (parse_reg): Parse REG_SLR, REG_SHR binutils/gas * gas/microblaze/allinsn.s: Test use of SHR, SLR * gas/microblaze/allinsn.d: Likewise
Diffstat (limited to 'opcodes')
-rw-r--r--opcodes/ChangeLog5
-rw-r--r--opcodes/microblaze-dis.c6
-rw-r--r--opcodes/microblaze-opcm.h4
3 files changed, 15 insertions, 0 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 2540f4d..e5d08b0 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,8 @@
+2012-11-21 Edgar E. Iglesias <edgar.iglesias@gmail.com>
+
+ * microblaze-opcm.h: Add REG_SLR_MASK, REG_SHR_MASK, REG_SHR and REG_SLR
+ * microblaze-dis.c (get_field_special): Handle REG_SLR_MASK and REG_SHR_MASK
+
2012-11-20 Kirill Yukhin <kirill.yukhin@intel.com>
H.J. Lu <hongjiu.lu@intel.com>
diff --git a/opcodes/microblaze-dis.c b/opcodes/microblaze-dis.c
index e204e36..7e3a546 100644
--- a/opcodes/microblaze-dis.c
+++ b/opcodes/microblaze-dis.c
@@ -139,6 +139,12 @@ get_field_special (long instr, struct op_code_struct * op)
case REG_TLBSX_MASK :
strcpy (spr, "tlbsx");
break;
+ case REG_SHR_MASK :
+ strcpy (spr, "shr");
+ break;
+ case REG_SLR_MASK :
+ strcpy (spr, "slr");
+ break;
default :
if (((((instr & IMM_MASK) >> IMM_LOW) ^ op->immval_mask) & 0xE000)
== REG_PVR_MASK)
diff --git a/opcodes/microblaze-opcm.h b/opcodes/microblaze-opcm.h
index 867263e..a2a42d0 100644
--- a/opcodes/microblaze-opcm.h
+++ b/opcodes/microblaze-opcm.h
@@ -79,6 +79,8 @@ enum microblaze_instr_type
#define REG_BTR_MASK 0x800b
#define REG_EDR_MASK 0x800d
#define REG_PVR_MASK 0xa000
+#define REG_SLR_MASK 0x8800
+#define REG_SHR_MASK 0x8802
#define REG_PID_MASK 0x9000
#define REG_ZPR_MASK 0x9001
@@ -100,6 +102,8 @@ enum microblaze_instr_type
#define REG_FSR 39 /* FPU Status reg. */
#define REG_BTR 43 /* Branch Target reg. */
#define REG_EDR 45 /* Exception reg. */
+#define REG_SHR 50 /* Stack High reg. */
+#define REG_SLR 51 /* Stack Low reg. */
#define REG_PVR 40960 /* Program Verification reg. */
#define REG_PID 36864 /* MMU: Process ID reg. */