gdbserver/csky add csky gdbserver support
authorJiangshuai Li <jiangshuai_li@linux.alibaba.com>
Tue, 13 Sep 2022 03:20:54 +0000 (11:20 +0800)
committerJiangshuai Li <jiangshuai_li@linux.alibaba.com>
Tue, 13 Sep 2022 03:20:54 +0000 (11:20 +0800)
commit02cd1b4e97120f71710c4246953bcb2d63cb4aea
tree56cc29e73e55f8396c49d4572edc8b7d983396df
parent20e2bd5c636b4bf6d049eb202b3322fae835eefa
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;
};
gdb/NEWS
gdb/arch/csky.c [new file with mode: 0644]
gdb/arch/csky.h [new file with mode: 0644]
gdb/features/cskyv2-linux.c [new file with mode: 0644]
gdbserver/Makefile.in
gdbserver/configure.srv
gdbserver/linux-csky-low.cc [new file with mode: 0644]