kit

kit
git clone https://git.ryansepassi.com/git/kit.git
Log | Files | Refs | README

variant.c (801B)


      1 /* The two immutable RISC-V XLEN variants. See variant.h for the contract. */
      2 #include "arch/riscv/variant.h"
      3 
      4 const RiscvVariant riscv_variant_rv32 = {
      5     .kind = KIT_ARCH_RV32,
      6     .name = "rv32",
      7     .isa_prefix = "rv32",
      8     .xlen = 32u,
      9     .ptr_bytes = 4u,
     10     .gp_slot_bytes = 4u,
     11     .has_w_forms = 0u,
     12     .shamt_bits = 5u,
     13     .frame_save_size = 8u, /* 2 * ptr_bytes */
     14 };
     15 
     16 const RiscvVariant riscv_variant_rv64 = {
     17     .kind = KIT_ARCH_RV64,
     18     .name = "rv64",
     19     .isa_prefix = "rv64",
     20     .xlen = 64u,
     21     .ptr_bytes = 8u,
     22     .gp_slot_bytes = 8u,
     23     .has_w_forms = 1u,
     24     .shamt_bits = 6u,
     25     .frame_save_size = 16u, /* 2 * ptr_bytes */
     26 };
     27 
     28 const RiscvVariant* riscv_variant_for_kind(KitArchKind kind) {
     29   return kind == KIT_ARCH_RV32 ? &riscv_variant_rv32 : &riscv_variant_rv64;
     30 }