aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2020-05-11 09:34:49 +0930
committerAlan Modra <amodra@gmail.com>2020-05-11 21:08:37 +0930
commit94ba9882d5acfdc38267a8a822a8b0b8eb3e44ef (patch)
tree007e183baea4230be47a5fe232d7dee4e4fc9ac6 /bfd
parentf4791f1afad449b81804cb6b62ed238603592d1b (diff)
downloadgdb-94ba9882d5acfdc38267a8a822a8b0b8eb3e44ef.zip
gdb-94ba9882d5acfdc38267a8a822a8b0b8eb3e44ef.tar.gz
gdb-94ba9882d5acfdc38267a8a822a8b0b8eb3e44ef.tar.bz2
Power10 VSX 32-byte storage access
bfd/ * elf64-ppc.c (xlate_pcrel_opt): Handle lxvp and stxvp. opcodes/ * ppc-opc.c (insert_xtp, extract_xtp): New functions. (XTP, DQXP, DQXP_MASK): Define. (powerpc_opcodes): Add lxvp, stxvp, lxvpx, stxvpx. (prefix_opcodes): Add plxvp and pstxvp. gas/ * testsuite/gas/ppc/vsx_32byte.d, * testsuite/gas/ppc/vsx_32byte.s: New test. * testsuite/gas/ppc/ppc.exp: Run it. ld/ * testsuite/ld-powerpc/pcrelopt.s: Add lxvp and stxvp. * testsuite/ld-powerpc/pcrelopt.d: Update.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog4
-rw-r--r--bfd/elf64-ppc.c9
2 files changed, 13 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index b99f437..7852737 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,9 @@
2020-05-11 Alan Modra <amodra@gmail.com>
+ * elf64-ppc.c (xlate_pcrel_opt): Handle lxvp and stxvp.
+
+2020-05-11 Alan Modra <amodra@gmail.com>
+
* elf64-ppc.c: Rename powerxx to power10 throughout.
2020-05-11 Alan Modra <amodra@gmail.com>
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index ae4a4ba..da4a8c7 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -8605,6 +8605,15 @@ xlate_pcrel_opt (uint64_t *pinsn1, uint64_t *pinsn2, bfd_signed_vma *poff)
off = insn2 & 0xffff;
break;
+ case 6: /* lxvp, stxvp */
+ if ((insn2 & 0xe) != 0)
+ return FALSE;
+ insn1 = ((1ULL << 58) | (1ULL << 52)
+ | ((insn2 & 1) == 0 ? 58ULL << 26 : 62ULL << 26)
+ | (insn2 & (31ULL << 21)));
+ off = insn2 & 0xfff0;
+ break;
+
case 62: /* std, stq */
if ((insn2 & 1) != 0)
return FALSE;