Skip to content

Commit d650f67

Browse files
authored
RISCV: the Ventana vendor is missing in the API (#2917)
* RISCV: the Ventana vendor was missing in the API * Update docs
1 parent a2b119e commit d650f67

9 files changed

Lines changed: 26 additions & 8 deletions

File tree

arch/RISCV/RISCVDisassemblerExtension.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,9 @@ bool RISCV_getFeatureBits(unsigned int mode, unsigned int feature)
6969
case RISCV_FeatureVendorXTHeadVdot:
7070
return mode & CS_MODE_RISCV_THEAD;
7171

72+
case RISCV_FeatureVendorXVentanaCondOps:
73+
return mode & CS_MODE_RISCV_VENTANA;
74+
7275
case RISCV_FeatureStdExtZba:
7376
return mode & CS_MODE_RISCV_ZBA;
7477
case RISCV_FeatureStdExtZbb:

bindings/python/capstone/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,8 @@
146146
"CS_MODE_RISCV_XSFVFWMACCQQQ",
147147
"CS_MODE_RISCV_XSFVQMACCDOD",
148148
"CS_MODE_RISCV_XSFVQMACCQOQ",
149+
"CS_MODE_RISCV_VENTANA",
150+
"CS_MODE_RISCV_XVENTANACONDOPS",
149151
"CS_MODE_RISCV_BITMANIP",
150152
"CS_MODE_RISCV_ZBA",
151153
"CS_MODE_RISCV_ZBB",
@@ -449,6 +451,8 @@
449451
CS_MODE_RISCV_ZBKC = 1 << 18
450452
CS_MODE_RISCV_ZBKX = 1 << 19
451453
CS_MODE_RISCV_ZBS = 1 << 20
454+
CS_MODE_RISCV_VENTANA = 1 << 21
455+
CS_MODE_RISCV_XVENTANACONDOPS = CS_MODE_RISCV_VENTANA
452456
CS_MODE_MOS65XX_6502 = 1 << 1 # MOS65XXX MOS 6502
453457
CS_MODE_MOS65XX_65C02 = 1 << 2 # MOS65XXX WDC 65c02
454458
CS_MODE_MOS65XX_W65C02 = 1 << 3 # MOS65XXX WDC W65c02

cs.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -223,9 +223,10 @@ typedef struct cs_arch_config {
223223
CS_MODE_RISCV_ZCMP_ZCMT_ZCE | CS_MODE_RISCV_ZICFISS | \
224224
CS_MODE_RISCV_E | CS_MODE_RISCV_A | CS_MODE_RISCV_COREV | \
225225
CS_MODE_RISCV_SIFIVE | CS_MODE_RISCV_THEAD | \
226-
CS_MODE_RISCV_ZBA | CS_MODE_RISCV_ZBB | CS_MODE_RISCV_ZBC | \
227-
CS_MODE_RISCV_ZBKB | CS_MODE_RISCV_ZBKC | \
228-
CS_MODE_RISCV_ZBKX | CS_MODE_RISCV_ZBS), \
226+
CS_MODE_RISCV_VENTANA | CS_MODE_RISCV_ZBA | \
227+
CS_MODE_RISCV_ZBB | CS_MODE_RISCV_ZBC | CS_MODE_RISCV_ZBKB | \
228+
CS_MODE_RISCV_ZBKC | CS_MODE_RISCV_ZBKX | \
229+
CS_MODE_RISCV_ZBS), \
229230
}
230231
#define CS_ARCH_CONFIG_SH \
231232
{ \

cstool/cstool.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,11 @@ static struct {
228228
{ CS_ARCH_RISCV, CS_ARCH_MAX },
229229
0,
230230
CS_MODE_RISCV_SIFIVE },
231+
{ "+ventana",
232+
"Enables the RISCV ventana extension",
233+
{ CS_ARCH_RISCV, CS_ARCH_MAX },
234+
0,
235+
CS_MODE_RISCV_VENTANA },
231236
{ "+bitmanip",
232237
"Enables the RISCV bit manipulation extension",
233238
{ CS_ARCH_RISCV, CS_ARCH_MAX },

docs/cs_v6_release_guide.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,7 @@ Nonetheless, we hope this additional information is useful to you.
233233
* `CS_MODE_RISCV_ZBKC = 1 << 18`
234234
* `CS_MODE_RISCV_ZBKX = 1 << 19`
235235
* `CS_MODE_RISCV_ZBS = 1 << 20`
236+
* `CS_MODE_RISCV_VENTANA = 1 << 21`
236237
- Added two syntax options for alias control:
237238
* `CS_OPT_SYNTAX_NO_ALIAS_TEXT`: RISC-V assigns readable aliases to special cases of more flexible instructions, for example: `ret` is a `jalr`, a more general instruction that takes an arbitrary register as jump destination and a link register. `ret` is the special case where those 2 arguments are restricted to `ra` and `x0` respectively.
238239

include/capstone/capstone.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,7 @@ typedef enum cs_mode {
231231
CS_MODE_RISCV_ZBKC = 1 << 18,
232232
CS_MODE_RISCV_ZBKX = 1 << 19,
233233
CS_MODE_RISCV_ZBS = 1 << 20,
234+
CS_MODE_RISCV_VENTANA = 1 << 21,
234235
CS_MODE_MOS65XX_6502 = 1 << 1, ///< MOS65XXX MOS 6502
235236
CS_MODE_MOS65XX_65C02 = 1 << 2, ///< MOS65XXX WDC 65c02
236237
CS_MODE_MOS65XX_W65C02 = 1 << 3, ///< MOS65XXX WDC W65c02

suite/auto-sync/src/autosync/mcupdater.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,8 +223,9 @@
223223
"xtheadcmo": ["CS_MODE_RISCV_XTHEADCMO"],
224224
"xtheadcondmov": ["CS_MODE_RISCV_XTHEADCONDMOV"],
225225
"xtheadsync": ["CS_MODE_RISCV_XTHEADSYNC"],
226-
"xtheadvdot": ["CS_MODE_RISCV_XTHEADVDOT"]
226+
"xtheadvdot": ["CS_MODE_RISCV_XTHEADVDOT"],
227227

228+
"xventanacondops": ["CS_MODE_RISCV_XVENTANACONDOPS"]
228229
}
229230
}
230231
}

suite/cstest/include/test_mapping.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,8 @@ static const cs_enum_id_map test_mode_map[] = {
182182
{ .str = "CS_MODE_RISCV_XTHEADMEMPAIR", .val = CS_MODE_RISCV_THEAD },
183183
{ .str = "CS_MODE_RISCV_XTHEADSYNC", .val = CS_MODE_RISCV_THEAD },
184184
{ .str = "CS_MODE_RISCV_XTHEADVDOT", .val = CS_MODE_RISCV_THEAD },
185+
{ .str = "CS_MODE_RISCV_XVENTANACONDOPS",
186+
.val = CS_MODE_RISCV_VENTANA },
185187
{ .str = "CS_MODE_RISCV_ZBA", .val = CS_MODE_RISCV_ZBA },
186188
{ .str = "CS_MODE_RISCV_ZBB", .val = CS_MODE_RISCV_ZBB },
187189
{ .str = "CS_MODE_RISCV_ZBC", .val = CS_MODE_RISCV_ZBC },

tests/MC/RISCV/XVentanaCondOps_valid_riscv64_xventanacondops_syntax_no_alias_text.txt.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ test_cases:
33
input:
44
bytes: [ 0x7b, 0x60, 0x00, 0x00 ]
55
arch: "CS_ARCH_RISCV"
6-
options: [ "CS_MODE_RISCV64", "xventanacondops", "CS_OPT_SYNTAX_NO_ALIAS_TEXT" ]
6+
options: [ "CS_MODE_RISCV64", "CS_MODE_RISCV_XVENTANACONDOPS", "CS_OPT_SYNTAX_NO_ALIAS_TEXT" ]
77
expected:
88
insns:
99
-
@@ -13,7 +13,7 @@ test_cases:
1313
input:
1414
bytes: [ 0x7b, 0x70, 0x00, 0x00 ]
1515
arch: "CS_ARCH_RISCV"
16-
options: [ "CS_MODE_RISCV64", "xventanacondops", "CS_OPT_SYNTAX_NO_ALIAS_TEXT" ]
16+
options: [ "CS_MODE_RISCV64", "CS_MODE_RISCV_XVENTANACONDOPS", "CS_OPT_SYNTAX_NO_ALIAS_TEXT" ]
1717
expected:
1818
insns:
1919
-
@@ -23,7 +23,7 @@ test_cases:
2323
input:
2424
bytes: [ 0xfb, 0x60, 0x31, 0x00 ]
2525
arch: "CS_ARCH_RISCV"
26-
options: [ "CS_MODE_RISCV64", "xventanacondops", "CS_OPT_SYNTAX_NO_ALIAS_TEXT" ]
26+
options: [ "CS_MODE_RISCV64", "CS_MODE_RISCV_XVENTANACONDOPS", "CS_OPT_SYNTAX_NO_ALIAS_TEXT" ]
2727
expected:
2828
insns:
2929
-
@@ -33,7 +33,7 @@ test_cases:
3333
input:
3434
bytes: [ 0xfb, 0x70, 0x31, 0x00 ]
3535
arch: "CS_ARCH_RISCV"
36-
options: [ "CS_MODE_RISCV64", "xventanacondops", "CS_OPT_SYNTAX_NO_ALIAS_TEXT" ]
36+
options: [ "CS_MODE_RISCV64", "CS_MODE_RISCV_XVENTANACONDOPS", "CS_OPT_SYNTAX_NO_ALIAS_TEXT" ]
3737
expected:
3838
insns:
3939
-

0 commit comments

Comments
 (0)