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 }