Skip to content
Snippets Groups Projects
  • Jiangshuai Li's avatar
    02cd1b4e
    gdbserver/csky add csky gdbserver support · 02cd1b4e
    Jiangshuai Li authored
    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;
    };
    02cd1b4e
    History
    gdbserver/csky add csky gdbserver support
    Jiangshuai Li authored
    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;
    };