aboutsummaryrefslogtreecommitdiff
path: root/gdb/arch
diff options
context:
space:
mode:
authorJiangshuai Li <jiangshuai_li@linux.alibaba.com>2022-09-13 11:20:54 +0800
committerJiangshuai Li <jiangshuai_li@linux.alibaba.com>2022-09-13 11:20:54 +0800
commit02cd1b4e97120f71710c4246953bcb2d63cb4aea (patch)
tree56cc29e73e55f8396c49d4572edc8b7d983396df /gdb/arch
parent20e2bd5c636b4bf6d049eb202b3322fae835eefa (diff)
downloadgdb-02cd1b4e97120f71710c4246953bcb2d63cb4aea.zip
gdb-02cd1b4e97120f71710c4246953bcb2d63cb4aea.tar.gz
gdb-02cd1b4e97120f71710c4246953bcb2d63cb4aea.tar.bz2
gdbserver/csky add csky gdbserver support
Add new files: gdb/arch/csky.c gdb/arch/csky.h gdb/features/cskyv2-linux.c gdbserver/linux-csky-low.cc 1. In gdb/arch/csky.c file, add function "csky_create_target_description()" for csky_target::low_arch_setup(). later, it can be used for csky native gdb. 2. In gdb/features/cskyv2-linux.c file, create target_tdesc for csky, include gprs, pc, hi, lo, float, vector and float control registers. 3. In gdbserver/linux-csky-low.cc file, using PTRACE_GET/SET_RGESET to get/set registers. The main data structures in asm/ptrace.h are: struct pt_regs { unsigned long tls; unsigned long lr; unsigned long pc; unsigned long sr; unsigned long usp; /* * a0, a1, a2, a3: * r0, r1, r2, r3 */ unsigned long orig_a0; unsigned long a0; unsigned long a1; unsigned long a2; unsigned long a3; /* * r4 ~ r13 */ unsigned long regs[10]; /* r16 ~ r30 */ unsigned long exregs[15]; unsigned long rhi; unsigned long rlo; unsigned long dcsr; }; struct user_fp { unsigned long vr[96]; unsigned long fcr; unsigned long fesr; unsigned long fid; unsigned long reserved; };
Diffstat (limited to 'gdb/arch')
-rw-r--r--gdb/arch/csky.c38
-rw-r--r--gdb/arch/csky.h29
2 files changed, 67 insertions, 0 deletions
diff --git a/gdb/arch/csky.c b/gdb/arch/csky.c
new file mode 100644
index 0000000..8877967
--- /dev/null
+++ b/gdb/arch/csky.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 2022 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include "gdbsupport/common-defs.h"
+#include "csky.h"
+#include <stdlib.h>
+
+#include "../features/cskyv2-linux.c"
+
+target_desc_up
+csky_create_target_description (void)
+{
+ /* Now we should create a new target description. */
+ target_desc_up tdesc = allocate_target_description ();
+
+#ifndef IN_PROCESS_AGENT
+ std::string arch_name = "csky";
+ set_tdesc_architecture (tdesc.get (), arch_name.c_str ());
+#endif
+
+ create_feature_cskyv2_linux (tdesc.get ());
+
+ return tdesc;
+}
diff --git a/gdb/arch/csky.h b/gdb/arch/csky.h
new file mode 100644
index 0000000..1c147a9
--- /dev/null
+++ b/gdb/arch/csky.h
@@ -0,0 +1,29 @@
+/* Common target-dependent functionality for CSKY
+
+ Copyright (C) 2022 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef ARCH_CSKY_H
+#define ARCH_CSKy_H
+
+#include "gdbsupport/tdesc.h"
+
+/* Used for gdbserver. */
+
+target_desc_up csky_create_target_description (void);
+
+#endif /* ARCH_CSKY_H */