aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudiu Zissulescu <claziss@gmail.com>2018-07-23 11:09:43 +0200
committerClaudiu Zissulescu <claziss@gmail.com>2018-07-23 11:09:43 +0200
commit04e65276fa99a0de996142b054bb76f8491ae103 (patch)
tree96c49386157449d8e235a4e271b23a74202bf19d
parent47e6f81c7c269ab5ef2b3004bb5ebe0de5cfb969 (diff)
downloadgdb-04e65276fa99a0de996142b054bb76f8491ae103.zip
gdb-04e65276fa99a0de996142b054bb76f8491ae103.tar.gz
gdb-04e65276fa99a0de996142b054bb76f8491ae103.tar.bz2
[ARC] Fix decoding of w6 signed short immediate.
gas/ Claudiu Zissulescu <claziss@synopsys.com> * testsuite/gas/arc/st.d: Fix test. opcodes/ Claudiu Zissulescu <claziss@synopsys.com> * arc-opc.c (extract_w6): Fix extending the sign.
-rw-r--r--gas/ChangeLog4
-rw-r--r--gas/testsuite/gas/arc/st.d2
-rw-r--r--opcodes/ChangeLog4
-rw-r--r--opcodes/arc-opc.c6
4 files changed, 14 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index dbaa02d..8b36246 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,5 +1,9 @@
2018-07-23 Claudiu Zissulescu <claziss@synopsys.com>
+ * testsuite/gas/arc/st.d: Fix test.
+
+2018-07-23 Claudiu Zissulescu <claziss@synopsys.com>
+
* config/tc-arc.c (tokenize_extinsn): Convert to lower case the
name of extension instructions.
* testsuite/gas/arc/textinsn_case.d: New file.
diff --git a/gas/testsuite/gas/arc/st.d b/gas/testsuite/gas/arc/st.d
index 6fe5b88..269b2cf 100644
--- a/gas/testsuite/gas/arc/st.d
+++ b/gas/testsuite/gas/arc/st.d
@@ -13,7 +13,7 @@ Disassembly of section .text:
10: 1a02 004c st[hw]+.aw r1,\[r2,2\]
14: 1e00 7040 0000 0384 st r1,\[0x384\]
1c: 1a00 0003 stb 0,\[r2\]
- 20: 1af8 8e01 st 56,\[r2,-8\]
+ 20: 1af8 8e01 st -8,\[r2,-8\]
24: 1e00 7080 0000 0000 st r2,\[0\]
28: R_ARC_32_ME foo
2c: 1a02 0060 st.di r1,\[r2,2\]
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 9d0de43..d99b85c 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,5 +1,9 @@
2018-07-23 Claudiu Zissulescu <claziss@synopsys.com>
+ * arc-opc.c (extract_w6): Fix extending the sign.
+
+2018-07-23 Claudiu Zissulescu <claziss@synopsys.com>
+
* arc-tbl.h (vewt): Allow it for ARC EM family.
2018-07-23 Alan Modra <amodra@gmail.com>
diff --git a/opcodes/arc-opc.c b/opcodes/arc-opc.c
index 5349e13..b87a231 100644
--- a/opcodes/arc-opc.c
+++ b/opcodes/arc-opc.c
@@ -651,10 +651,14 @@ static long long
extract_w6 (unsigned long long insn,
bfd_boolean * invalid ATTRIBUTE_UNUSED)
{
- unsigned value = 0;
+ int value = 0;
value |= ((insn >> 6) & 0x003f) << 0;
+ /* Extend the sign. */
+ int signbit = 1 << 5;
+ value = (value ^ signbit) - signbit;
+
return value;
}