• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..29-Apr-2021-

0001-capstone-riscv-patchs.patchH A D29-Apr-2021108.8 KiB3,1623,057

0002-update-TableGen-for-generate-RISCV-port-inc-for-CAPS.patchH A D29-Apr-202133.6 KiB906869

0003-clear-old-patchs.patchH A D29-Apr-202155.6 KiB1,6031,599

0004-fix-riscv-registerclass-array-of-genregisterinfo.patchH A D29-Apr-2021206.7 KiB5,7445,739

0005-fix-riscv-registerclass-array-of-genregisterinfo.patchH A D29-Apr-2021204.9 KiB5,7045,700

0006-fix-output-TAB-for-riscv-capstone.patchH A D29-Apr-2021947 3327

0007-fix-riscv-alias-inst-output-useless-newline.patchH A D29-Apr-20211.1 KiB3329

0008-fix-riscv-inst-output-more-formal.patchH A D29-Apr-2021835 2521

0009-fix-riscv-asmwriter-variable-declaration-place.patchH A D29-Apr-20211.4 KiB3934

0010-fix-riscvgenasmwiter.inc-memory-leak.patchH A D29-Apr-2021820 2521

0011-using-static-array-contain-temp-string-for-riscv-asm.patchH A D29-Apr-20212.2 KiB5450

README.mdH A D29-Apr-20212.1 KiB6260

README.md

1# How to update RISCV tables.
2
3* Checkout LLVM. Patches are tested on commit `b81d715c`.
4  ```
5      git clone https://github.com/llvm/llvm-project.git
6      git checkout b81d715c
7  ```
8* Apply patches from the current directory.
9* Run tablegen.
10  ```
11      cd $LLVM
12      mkdir build
13      cd build
14      cmake -DCMAKE_CXX_FLAGS=-DCAPSTONE -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="RISCV" ..
15      make RISCVCommonTableGen
16   ```
17* Copy `.inc` files.
18  ```
19      cp arch/RISCV/RISCVGenInsnNameMaps.inc \
20         arch/RISCV/RISCVGenInsnNameMaps.inc.old
21      for inc in $(cd arch/RISCV && ls *.inc); do
22        cp $LLVM/build/lib/Target/RISCV/$inc arch/RISCV/
23      done
24  ```
25* Fixup `RISCVGenInsnNameMaps.inc`.
26  ```
27      comm -1 -3 \
28          <(grep RISCV_INS_ <arch/RISCV/RISCVGenInsnNameMaps.inc.old \
29            | sort -u) \
30          <(grep RISCV_INS_ <arch/RISCV/RISCVGenInsnNameMaps.inc \
31            | sort -u) \
32          >arch/RISCV/RISCVGenInsnNameMaps.inc.new
33      cat arch/RISCV/RISCVGenInsnNameMaps.inc.old \
34          arch/RISCV/RISCVGenInsnNameMaps.inc.new \
35          >arch/RISCV/RISCVGenInsnNameMaps.inc
36  ```
37* Add new groups, insns, registers and formats.
38  * `include/capstone/RISCV.h`
39    * `enum RISCV_insn`:
40      ```
41          comm -1 -3 \
42              <(perl -ne 'if (/(RISCV_INS_.+),/) { print "\t$1,\n" }' \
43                <include/capstone/RISCV.h | sort -u) \
44              <(perl -ne 'if (/(RISCV_INS_.+),/) { print "\t$1,\n" }' \
45                <arch/RISCV/RISCVMappingInsn.inc | sort -u)
46      ```
47    * `enum RISCV_insn_group`:
48      ```
49       perl -ne 'if (/(\{.RISCV_GRP_.*?\}),/) { print "\t$1,\n"; }' < \
50            arch/RISCV/RISCVMappingInsn.inc | sort -u
51      ```
52  * `arch/RISCV/RISCVDisassembler.c`
53  * `arch/RISCV/RISCVInstPrinter.c`
54  * `arch/RISCV/RISCVMCTargetDesc.c`
55  * `arch/RISCV/RISCVMCTargetDesc.h`
56  * `arch/RISCV/RISCVMapping.c`
57    * `enum group_name_maps`:
58      ```
59          perl -ne 'if (/(RISCV_GRP_(.*?)),/) { print "\t{ $1, \"" . lc($2) . "\" },\n"; }' \
60              arch/RISCV/RISCVMappingInsn.inc | sort -u
61      ```
62