gdb:csky add support target-descriptions for CSKY arch
authorJiangshuai Li <jiangshuai_li@c-sky.com>
Mon, 13 Jun 2022 11:17:58 +0000 (19:17 +0800)
committerJiangshuai Li <jiangshuai_li@c-sky.com>
Mon, 13 Jun 2022 11:17:58 +0000 (19:17 +0800)
commitafd53c3c0a22528b9e56f599c4fd2cf6585ed8fa
tree56c6dc8b2e6f4bba42f9adace3d6412a59947bcc
parentf25123df34b037c7f5b3f25eddb7baa1de2befef
gdb:csky add support target-descriptions for CSKY arch

Registers in CSKY architecture included:
1. 32 gprs
2. 16 ars (alternative gprs used for quick interrupt)
3. hi, lo, pc
4. fr0~fr31, fcsr, fid, fesr
5. vr0~vr15
6. ((32 banks) * 32) cr regs (max 32 banks, 32 control regs a bank)

For register names:
Except over control registers, other registers, like gprs, hi, lo ...
are fixed names. Among the 32*32 control registers, some used registers
will have fixed names, others will have a default name "cpxcry". 'x'
refers to bank, y refers index in the bank(a control register in bank
4 with index 14 will has a default name cp4cr14).

For register numbers in GDB:
We assign a fixed number to each register in GDB, like:
r0~r31 with 0~31
hi, lo with 36, 37
fpu/vpu with 40~71
...
described in function csky_get_supported_register_by_index().

Function csky_get_supported_tdesc_registers_count():
To calculate the total number of registers that GDB can analyze,
including those with fixed names and those with default register names.

Function csky_get_supported_register_by_index():
To find a supported struct csky_supported_tdesc_register, return a
struct include name with regnum via index.

Arrays csky_supported_tdesc_feature_names[]:
Include all supported feature names in tdesc-xmls.

We use the information described above to load the register description
file of the target from the stub. When loading, do a little check that
whether the register description file contains SP, LR and PC.
gdb/csky-tdep.c
gdb/csky-tdep.h