aboutsummaryrefslogtreecommitdiff
path: root/gdb/arch
diff options
context:
space:
mode:
authorHui Li <lihui@loongson.cn>2024-01-25 16:32:35 +0800
committerTiezhu Yang <yangtiezhu@loongson.cn>2024-02-06 18:40:02 +0800
commit1e9569f383a3d5a88ee07d0c2401bd95613c222e (patch)
tree987349cbcb070f5ec779c7f16a71df16fbc4f86f /gdb/arch
parent60c95acdaca94eca79b81ec75bfab97826cc0271 (diff)
downloadbinutils-1e9569f383a3d5a88ee07d0c2401bd95613c222e.zip
binutils-1e9569f383a3d5a88ee07d0c2401bd95613c222e.tar.gz
binutils-1e9569f383a3d5a88ee07d0c2401bd95613c222e.tar.bz2
gdb: LoongArch: Add vector extensions support
Add LoongArch's vector extensions support, which including 128bit LSX (i.e., Loongson SIMD eXtension) and 256bit LASX (i.e., Loongson Advanced SIMD eXtension). This patch support gdb to fetch/store vector registers. Signed-off-by: Hui Li <lihui@loongson.cn> Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Diffstat (limited to 'gdb/arch')
-rw-r--r--gdb/arch/loongarch.c6
-rw-r--r--gdb/arch/loongarch.h4
2 files changed, 10 insertions, 0 deletions
diff --git a/gdb/arch/loongarch.c b/gdb/arch/loongarch.c
index d1a7bad..e9995c9 100644
--- a/gdb/arch/loongarch.c
+++ b/gdb/arch/loongarch.c
@@ -25,6 +25,8 @@
#include "../features/loongarch/base32.c"
#include "../features/loongarch/base64.c"
#include "../features/loongarch/fpu.c"
+#include "../features/loongarch/lsx.c"
+#include "../features/loongarch/lasx.c"
#ifndef GDBSERVER
#define STATIC_IN_GDB static
@@ -63,6 +65,10 @@ loongarch_create_target_description (const struct loongarch_gdbarch_features fea
/* For now we only support creating single float and double float. */
regnum = create_feature_loongarch_fpu (tdesc.get (), regnum);
+ /* For now we only support creating lsx and lasx. */
+ regnum = create_feature_loongarch_lsx (tdesc.get (), regnum);
+ regnum = create_feature_loongarch_lasx (tdesc.get (), regnum);
+
return tdesc;
}
diff --git a/gdb/arch/loongarch.h b/gdb/arch/loongarch.h
index 1fe75d0..d166f9d 100644
--- a/gdb/arch/loongarch.h
+++ b/gdb/arch/loongarch.h
@@ -41,6 +41,10 @@ enum loongarch_regnum
LOONGARCH_FIRST_FCC_REGNUM = LOONGARCH_FIRST_FP_REGNUM + LOONGARCH_LINUX_NUM_FPREGSET,
LOONGARCH_LINUX_NUM_FCC = 8,
LOONGARCH_FCSR_REGNUM = LOONGARCH_FIRST_FCC_REGNUM + LOONGARCH_LINUX_NUM_FCC,
+ LOONGARCH_FIRST_LSX_REGNUM = LOONGARCH_FCSR_REGNUM + 1,
+ LOONGARCH_LINUX_NUM_LSXREGSET = 32,
+ LOONGARCH_FIRST_LASX_REGNUM = LOONGARCH_FIRST_LSX_REGNUM + LOONGARCH_LINUX_NUM_LSXREGSET,
+ LOONGARCH_LINUX_NUM_LASXREGSET = 32,
};
enum loongarch_fputype