RISC-V: Minimal support of scalar crypto extension.
authorjiawei <jiawei@iscas.ac.cn>
Mon, 15 Nov 2021 03:03:41 +0000 (11:03 +0800)
committerNelson Chu <nelson.chu@sifive.com>
Tue, 16 Nov 2021 03:47:50 +0000 (11:47 +0800)
Minimal support of scalar crypto extension, add "k" in the
riscv_supported_std_ext, to make the order check right with
"zk" behind "zb".

bfd/
* elfxx-riscv.c (riscv_implicit_subsets): Added implicit
rules for zk* extensions.
(riscv_supported_std_ext): Added entry for k.
(riscv_supported_std_z_ext): Added entries for zk*.

bfd/elfxx-riscv.c

index 3ffbaad66dd77830a5b3f6a152dd5913b0e30851..9879480371e0ac8a67e7853ca5aa8c7ba1de04c1 100644 (file)
@@ -1075,6 +1075,20 @@ static struct riscv_implicit_subset riscv_implicit_subsets[] =
   {"q", "d",           check_implicit_always},
   {"d", "f",           check_implicit_always},
   {"f", "zicsr",       check_implicit_always},
+  {"zk", "zkn",                check_implicit_always},
+  {"zk", "zkr",                check_implicit_always},
+  {"zk", "zkt",                check_implicit_always},
+  {"zkn", "zbkb",      check_implicit_always},
+  {"zkn", "zbkc",      check_implicit_always},
+  {"zkn", "zbkx",      check_implicit_always},
+  {"zkn", "zkne",      check_implicit_always},
+  {"zkn", "zknd",      check_implicit_always},
+  {"zkn", "zknh",      check_implicit_always},
+  {"zks", "zbkb",      check_implicit_always},
+  {"zks", "zbkc",      check_implicit_always},
+  {"zks", "zbkx",      check_implicit_always},
+  {"zks", "zksed",     check_implicit_always},
+  {"zks", "zksh",      check_implicit_always},
   {NULL, NULL, NULL}
 };
 
@@ -1127,6 +1141,7 @@ static struct riscv_supported_ext riscv_supported_std_ext[] =
   {"c",                ISA_SPEC_CLASS_20190608,        2, 0, 0 },
   {"c",                ISA_SPEC_CLASS_2P2,             2, 0, 0 },
   {"b",                ISA_SPEC_CLASS_NONE, RISCV_UNKNOWN_VERSION, RISCV_UNKNOWN_VERSION, 0 },
+  {"k",                ISA_SPEC_CLASS_NONE, RISCV_UNKNOWN_VERSION, RISCV_UNKNOWN_VERSION, 0 },
   {"j",                ISA_SPEC_CLASS_NONE, RISCV_UNKNOWN_VERSION, RISCV_UNKNOWN_VERSION, 0 },
   {"t",                ISA_SPEC_CLASS_NONE, RISCV_UNKNOWN_VERSION, RISCV_UNKNOWN_VERSION, 0 },
   {"p",                ISA_SPEC_CLASS_NONE, RISCV_UNKNOWN_VERSION, RISCV_UNKNOWN_VERSION, 0 },
@@ -1145,7 +1160,20 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] =
   {"zbb",              ISA_SPEC_CLASS_DRAFT,           1, 0,  0 },
   {"zba",              ISA_SPEC_CLASS_DRAFT,           1, 0,  0 },
   {"zbc",              ISA_SPEC_CLASS_DRAFT,           1, 0,  0 },
-  {"zbs",               ISA_SPEC_CLASS_DRAFT,           1, 0,  0 },
+  {"zbs",              ISA_SPEC_CLASS_DRAFT,           1, 0,  0 },
+  {"zbkb",             ISA_SPEC_CLASS_DRAFT,           1, 0,  0 },
+  {"zbkc",             ISA_SPEC_CLASS_DRAFT,           1, 0,  0 },
+  {"zbkx",             ISA_SPEC_CLASS_DRAFT,           1, 0,  0 },
+  {"zk",               ISA_SPEC_CLASS_DRAFT,           1, 0,  0 },
+  {"zkn",              ISA_SPEC_CLASS_DRAFT,           1, 0,  0 },
+  {"zknd",             ISA_SPEC_CLASS_DRAFT,           1, 0,  0 },
+  {"zkne",             ISA_SPEC_CLASS_DRAFT,           1, 0,  0 },
+  {"zknh",             ISA_SPEC_CLASS_DRAFT,           1, 0,  0 },
+  {"zkr",              ISA_SPEC_CLASS_DRAFT,           1, 0,  0 },
+  {"zks",              ISA_SPEC_CLASS_DRAFT,           1, 0,  0 },
+  {"zksed",            ISA_SPEC_CLASS_DRAFT,           1, 0,  0 },
+  {"zksh",             ISA_SPEC_CLASS_DRAFT,           1, 0,  0 },
+  {"zkt",              ISA_SPEC_CLASS_DRAFT,           1, 0,  0 },
   {NULL, 0, 0, 0, 0}
 };