Architectural Parameters
The following 147 parameters are defined in this manual:
| Name | Type | Existence | Additional Requirements | Description | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
ASID_WIDTH |
0 to 16 |
Sa |
( |
Number of implemented ASID bits. Maximum is 16 for XLEN==64, and 9 for XLEN==32 |
||||||
CACHE_BLOCK_SIZE |
[1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432, 67108864, 134217728, 268435456, 536870912, 1073741824, 2147483648, 4294967296, 8589934592, 17179869184, 34359738368, 68719476736, 137438953472, 274877906944, 549755813888, 1099511627776, 2199023255552, 4398046511104, 8796093022208, 17592186044416, 35184372088832, 70368744177664, 140737488355328, 281474976710656, 562949953421312, 1125899906842624, 2251799813685248, 4503599627370496, 9007199254740992, 18014398509481984, 36028797018963968, 72057594037927936, 144115188075855872, 288230376151711744, 576460752303423488, 1152921504606846976, 2305843009213693952, 4611686018427387904, 9223372036854775808] |
(Zicbom pass:[ |
] Zicbop pass:[ |
|||||||
] Zicboz)a |
None |
The observable size of a cache block, in bytes. A cache block is a naturally aligned power-of-two (NAPOT) range of memory. |
CACHE_BLOCK_SIZE |
|||||||
[1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432, 67108864, 134217728, 268435456, 536870912, 1073741824, 2147483648, 4294967296, 8589934592, 17179869184, 34359738368, 68719476736, 137438953472, 274877906944, 549755813888, 1099511627776, 2199023255552, 4398046511104, 8796093022208, 17592186044416, 35184372088832, 70368744177664, 140737488355328, 281474976710656, 562949953421312, 1125899906842624, 2251799813685248, 4503599627370496, 9007199254740992, 18014398509481984, 36028797018963968, 72057594037927936, 144115188075855872, 288230376151711744, 576460752303423488, 1152921504606846976, 2305843009213693952, 4611686018427387904, 9223372036854775808] |
(Zicbom pass:[ |
] Zicbop pass:[ |
||||||||
] Zicboz)a |
None |
The observable size of a cache block, in bytes. A cache block is a naturally aligned power-of-two (NAPOT) range of memory. |
CACHE_BLOCK_SIZE |
[1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432, 67108864, 134217728, 268435456, 536870912, 1073741824, 2147483648, 4294967296, 8589934592, 17179869184, 34359738368, 68719476736, 137438953472, 274877906944, 549755813888, 1099511627776, 2199023255552, 4398046511104, 8796093022208, 17592186044416, 35184372088832, 70368744177664, 140737488355328, 281474976710656, 562949953421312, 1125899906842624, 2251799813685248, 4503599627370496, 9007199254740992, 18014398509481984, 36028797018963968, 72057594037927936, 144115188075855872, 288230376151711744, 576460752303423488, 1152921504606846976, 2305843009213693952, 4611686018427387904, 9223372036854775808] |
||||||
(Zicbom pass:[ |
] Zicbop pass:[ |
] Zicboz)a |
||||||||
None |
The observable size of a cache block, in bytes. A cache block is a naturally aligned power-of-two (NAPOT) range of memory. |
ELEN |
[8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152] |
|||||||
None |
The maximum size in bits of a vector element that any operation can produce or consume. |
FOLLOW_VTYPE_RESET_RECOMMENDATION |
boolean |
|||||||
None |
It is recommended that at reset, vtype.vill is set, the remaining bits in vtype are zero, and vl is set to zero. If this parameter is set to true, this recommendation is followed. If it is false, at reset the respective fields will be UNDEFINED_LEGAL. |
FORCE_UPGRADE_CBO_INVAL_TO_FLUSH |
boolean |
|||||||
None |
When true, an implementation prohibits setting menvcfg.CBIE == When false, an implementation allows a true INVAL operation for cbo.inval, and thus supports
the setting menvcfg.CBIE == |
GSTAGE_MODE_BARE |
boolean |
Ha |
||||||
(((32 in |
Whether or not writing mode=Bare is supported in the hgatp register. |
HCOUNTENABLE_EN |
32-element array of boolean |
Ha |
||||||
(((!Zicntr → |
Indicates which counters can delegated via hcounteren An unimplemented counter cannot be specified, i.e., if HPM_COUNTER_EN[3] is false, it would be illegal to set HCOUNTENABLE_EN[3] to true. |
HPM_COUNTER_EN |
32-element array where: |
Sma |
||||||
None |
Whether each HPM counter is implemented in hardware.
There is one entry for each hpmcounter, indexed 0-31. Indices 0-2 must be false: they are placeholders for the three counters (cycle/mcycle (CY), time ™, and instret/minstret (IR)) whose implementation this parameter does not control. These counters are associated with indexes 0, 1, and 2. The rest of the HPM counters logically follow at indexes 3-31. Index 3 in HPM_COUNTER_EN corresponds to mhpmcounter3. Index 31 in HPM_COUNTER_EN corresponds to mhpmcounter31. |
IGNORE_INVALID_VSATP_MODE_WRITES_WHEN_V_EQ_ZERO |
boolean |
Ha |
||||||
None |
Whether writes from M-mode, U-mode, or S-mode to vsatp with an illegal mode setting are ignored (as they are with satp), or if they are treated as WARL, leading to undpredictable behavior. |
IMPRECISE_VECTOR_TRAP_SETTABLE |
boolean |
|||||||
None |
Some profiles may provide a privileged configuration bit that selects between precise and imprecise vector trap behavior, allowing flexibility in how traps and partial updates are reported. |
JVT_BASE_TYPE |
[mask, custom] |
Zcmta |
||||||
None |
Type of the jvt.BASE CSR field. One of:
|
JVT_READ_ONLY |
boolean |
Zcmta |
||||||
None |
If Zcmt is implemented, JVT is implemented, but can contain a read-only value |
LEGAL_VSTART |
[1_stride, 2_stride, 4_stride, custom] |
|||||||
None |
MARCHID_IMPLEMENTED |
boolean |
Sma |
|||||||
None |
MCOUNTENABLE_EN |
32-element array of boolean |
Sma |
|||||||
(((!Zicntr → |
Indicates which counters can be delegated via mcounteren. An unimplemented counter cannot be specified, i.e., if HPM_COUNTER_EN[3] is false, it would be illegal to set MCOUNTENABLE_EN[3] to true. |
MCOUNTINHIBIT_IMPLEMENTED |
boolean |
Sma |
||||||
None |
Options:
|
MIMPID_IMPLEMENTED |
boolean |
Sma |
||||||
None |
MISALIGNED_LDST |
boolean |
Sma |
|||||||
None |
Does the implementation perform non-atomic misaligned loads and stores to main memory (does not affect misaligned support to device memory)? If not, the implementation always throws a misaligned exception. |
MISALIGNED_LDST_EXCEPTION_PRIORITY |
[low, high] |
Sma |
||||||
( |
The relative priority of a load/store/AMO exception vs. load/store/AMO page-fault or access-fault exceptions. May be one of:
MISALIGNED_LDST_EXCEPTION_PRIORITY cannot be "high" when MISALIGNED_MAX_ATOMICITY_GRANULE_SIZE is non-zero, since the atomicity of an access cannot be determined in that case until after address translation. |
MISA_CSR_IMPLEMENTED |
boolean |
Sma |
||||||
None |
MSTATUS_FS_LEGAL_VALUES |
1-element to 4-element array of [0, 1, 2, 3] |
||||||||
] S))a |
((F && ( |
] |
||||||||
The set of values that mstatus.FS supports. |
MSTATUS_VS_LEGAL_VALUES |
1-element to 4-element array of [0, 1, 2, 3] |
||||||||
] S))a |
((V → |
] |
The set of values that mstatus.VS will accept from a software write. |
|||||||
MTVAL_WIDTH |
0 to 64 |
Sma |
(( |
|||||||
] |
] |
] |
||||||||
] |
] |
|||||||||
] |
] |
] |
||||||||
The number of implemented bits in the mtval CSR. This is the CSR that may be written when a trap is taken into M-mode with exception-specific information to assist software in handling the trap (e.g., address associated with exception). Must be greater than or equal to max( |
MTVEC_ACCESS |
[ro, rw] |
Sma |
None |
||||||
MTVEC_ILLEGAL_WRITE_BEHAVIOR |
[retain, custom] |
Sma |
None |
|||||||
Options:
Other values may be added over time once other common behaviors are identified. |
MTVEC_MODES |
1-element to 2-element array of [0, 1] |
Sma |
( |
||||||
Options:
If only one mode is given, mtvec.MODE is assumed to be read-only with that value. Otherwise, mtvec.MODE is read-write. |
MUTABLE_MISA_H |
boolean |
( |
|||||||
MUTABLE_MISA_S |
boolean |
( |
||||||||
MXLEN |
[32, 64] |
Sma |
(( |
|||||||
XLEN in machine mode, specified in bits |
M_MODE_ENDIANNESS |
[little, big, dynamic] |
Sma |
None |
||||||
Options:
|
NUM_EXTERNAL_GUEST_INTERRUPTS |
1 to 63 |
Ha |
( |
||||||
Number of supported virtualized guest interrupts Corresponds to the |
NUM_PMP_ENTRIES |
[0, 16, 64] |
Sma |
None |
||||||
Number of implemented PMP entries. The architecture mandates that the number of implemented PMP registers
must appear to be 0, 16, or 64, so NUM_PMP_ENTRIES must be one of those values.
It directly determines which PMP registers exist: pmpaddr0-
An implemented entry may still be read-only zero (but will never cause an exception). The number of entries that are actually usable is given by NUM_USABLE_PMP_ENTRIES. |
PHYS_ADDR_WIDTH |
1 to 64 |
Sma |
(( |
||||||
Implementation-defined size of the physical address space. |
PMA_GRANULARITY |
2 to 66 |
Sma |
None |
||||||
Generally, for systems with an MMU, should not be smaller than 12, as that would preclude caching PMA results in the TLB along with virtual memory translations |
PRECISE_SYNCHRONOUS_EXCEPTIONS |
boolean |
Sma |
None |
||||||
If false, any exception not otherwise mandated to precise (e.g., PMP violation) will cause execution to enter an unpredictable state. |
REPORT_CAUSE_IN_MTVAL_ON_LANDING_PAD_SOFTWARE_CHECK |
boolean |
None |
|||||||
REPORT_CAUSE_IN_MTVAL_ON_SHADOW_STACK_SOFTWARE_CHECK |
boolean |
None |
||||||||
REPORT_CAUSE_IN_STVAL_ON_LANDING_PAD_SOFTWARE_CHECK |
boolean |
None |
||||||||
REPORT_CAUSE_IN_STVAL_ON_SHADOW_STACK_SOFTWARE_CHECK |
boolean |
None |
||||||||
REPORT_CAUSE_IN_VSTVAL_ON_LANDING_PAD_SOFTWARE_CHECK |
boolean |
None |
||||||||
REPORT_CAUSE_IN_VSTVAL_ON_SHADOW_STACK_SOFTWARE_CHECK |
boolean |
None |
||||||||
REPORT_ENCODING_IN_MTVAL_ON_ILLEGAL_INSTRUCTION |
boolean |
Sma |
None |
|||||||
REPORT_ENCODING_IN_STVAL_ON_ILLEGAL_INSTRUCTION |
boolean |
Sa |
None |
|||||||
REPORT_ENCODING_IN_VSTVAL_ON_ILLEGAL_INSTRUCTION |
boolean |
Ha |
None |
|||||||
REPORT_ENCODING_IN_VSTVAL_ON_VIRTUAL_INSTRUCTION |
boolean |
Ha |
None |
|||||||
REPORT_GPA_IN_HTVAL_ON_GUEST_PAGE_FAULT |
boolean |
Ha |
None |
|||||||
REPORT_GPA_IN_TVAL_ON_INSTRUCTION_GUEST_PAGE_FAULT |
boolean |
Ha |
None |
|||||||
Whether or not GPA >> 2 is written into htval/mtval2 when an instruction guest page fault occurs. If false, 0 will be written into htval/mtval2 on an instruction guest page fault. |
REPORT_GPA_IN_TVAL_ON_INTERMEDIATE_GUEST_PAGE_FAULT |
boolean |
Ha |
None |
||||||
Whether or not GPA >> 2 is written into htval/mtval2 when a guest page fault occurs while walking a VS-mode page table. If false, 0 will be written into htval/mtval2 on an intermediate guest page fault. |
REPORT_GPA_IN_TVAL_ON_LOAD_GUEST_PAGE_FAULT |
boolean |
Ha |
None |
||||||
Whether or not GPA >> 2 is written into htval/mtval2 when a load guest page fault occurs. If false, 0 will be written into htval/mtval2 on a load guest page fault. |
REPORT_GPA_IN_TVAL_ON_STORE_AMO_GUEST_PAGE_FAULT |
boolean |
Ha |
None |
||||||
Whether or not GPA >> 2 is written into htval/mtval2 when a store/amo guest page fault occurs. If false, 0 will be written into htval/mtval2 on a store/amo guest page fault. |
REPORT_VA_IN_MTVAL_ON_BREAKPOINT |
boolean |
Sma |
None |
||||||
REPORT_VA_IN_MTVAL_ON_INSTRUCTION_ACCESS_FAULT |
boolean |
Sma |
None |
|||||||
REPORT_VA_IN_MTVAL_ON_INSTRUCTION_MISALIGNED |
boolean |
Sma |
None |
|||||||
REPORT_VA_IN_MTVAL_ON_INSTRUCTION_PAGE_FAULT |
boolean |
Sa |
None |
|||||||
REPORT_VA_IN_MTVAL_ON_LOAD_ACCESS_FAULT |
boolean |
Sma |
None |
|||||||
REPORT_VA_IN_MTVAL_ON_LOAD_MISALIGNED |
boolean |
Sma |
None |
|||||||
REPORT_VA_IN_MTVAL_ON_LOAD_PAGE_FAULT |
boolean |
Sa |
None |
|||||||
REPORT_VA_IN_MTVAL_ON_STORE_AMO_ACCESS_FAULT |
boolean |
Sma |
None |
|||||||
REPORT_VA_IN_MTVAL_ON_STORE_AMO_MISALIGNED |
boolean |
Sma |
None |
|||||||
REPORT_VA_IN_MTVAL_ON_STORE_AMO_PAGE_FAULT |
boolean |
Sa |
None |
|||||||
REPORT_VA_IN_STVAL_ON_BREAKPOINT |
boolean |
Sa |
None |
|||||||
REPORT_VA_IN_STVAL_ON_INSTRUCTION_ACCESS_FAULT |
boolean |
Sa |
None |
|||||||
REPORT_VA_IN_STVAL_ON_INSTRUCTION_MISALIGNED |
boolean |
Sa |
None |
|||||||
When true, stval is written with the virtual PC when an instruction fetch is misaligned. When false, stval is written with 0 when an instruction fetch is misaligned. Note that when IALIGN=16 (i.e., when the C or one of the |
REPORT_VA_IN_STVAL_ON_INSTRUCTION_PAGE_FAULT |
boolean |
Sa |
None |
||||||
REPORT_VA_IN_STVAL_ON_LOAD_ACCESS_FAULT |
boolean |
Sa |
None |
|||||||
REPORT_VA_IN_STVAL_ON_LOAD_MISALIGNED |
boolean |
Sa |
None |
|||||||
REPORT_VA_IN_STVAL_ON_LOAD_PAGE_FAULT |
boolean |
Sa |
None |
|||||||
REPORT_VA_IN_STVAL_ON_STORE_AMO_ACCESS_FAULT |
boolean |
Sa |
None |
|||||||
REPORT_VA_IN_STVAL_ON_STORE_AMO_MISALIGNED |
boolean |
Sa |
None |
|||||||
REPORT_VA_IN_STVAL_ON_STORE_AMO_PAGE_FAULT |
boolean |
Sa |
None |
|||||||
REPORT_VA_IN_VSTVAL_ON_BREAKPOINT |
boolean |
Ha |
None |
|||||||
REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_ACCESS_FAULT |
boolean |
Ha |
None |
|||||||
REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_MISALIGNED |
boolean |
Ha |
None |
|||||||
When true, vstval is written with the virtual PC when an instruction fetch is misaligned. When false, vstval is written with 0 when an instruction fetch is misaligned. Note that when IALIGN=16 (i.e., when the C or one of the |
REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_PAGE_FAULT |
boolean |
Ha |
None |
||||||
REPORT_VA_IN_VSTVAL_ON_LOAD_ACCESS_FAULT |
boolean |
Ha |
None |
|||||||
REPORT_VA_IN_VSTVAL_ON_LOAD_MISALIGNED |
boolean |
Ha |
None |
|||||||
REPORT_VA_IN_VSTVAL_ON_LOAD_PAGE_FAULT |
boolean |
Ha |
None |
|||||||
REPORT_VA_IN_VSTVAL_ON_STORE_AMO_ACCESS_FAULT |
boolean |
Ha |
None |
|||||||
REPORT_VA_IN_VSTVAL_ON_STORE_AMO_MISALIGNED |
boolean |
Ha |
None |
|||||||
REPORT_VA_IN_VSTVAL_ON_STORE_AMO_PAGE_FAULT |
boolean |
Ha |
None |
|||||||
RESERVED_VSET_X0X0_VILL_SET |
[never, always, custom] |
None |
||||||||
When rs1 = x0 and rd = x0, vset instructions act as if the current
vector length in vl is used as the AVL. If |
RESERVED_VSET_X0X0_VLMAX_CHANGE |
[never, always, custom] |
None |
|||||||
When rs1=x0 and rd=x0, the instructions operate as if the current vector length in vl is used as the AVL. Use of the vset instructions with a new SEW/LMUL ratio that would result in a change of VLMAX is reserved. Implementations may set vill in either case. |
RVV_VL_WHEN_AVL_LT_DOUBLE_VLMAX |
[ceil(AVL/2), VLMAX, custom] |
None |
|||||||
The value assigned to VL when AVL < 2*VLMAX. |
SATP_MODE_BARE |
boolean |
Sa |
None |
||||||
Whether or not satp.MODE == Bare is supported. |
SCOUNTENABLE_EN |
32-element array of boolean |
Sa |
(((!Zicntr → |
||||||
Indicates which counters can delegated via scounteren An unimplemented counter cannot be specified, i.e., if HPM_COUNTER_EN[3] is false, it would be illegal to set SCOUNTENABLE_EN[3] to true. |
SEW_MIN |
[8, 16, 32, 64] |
None |
|||||||
Implementations must provide fractional LMUL settings that allow the narrowest supported element width (SEW) to occupy a fractional portion of a vector register relative to the widest supported SEW. In general, implementations must support LMUL >= SEW_MIN/ELEN, where SEW_MIN is the narrowest supported SEW and ELEN is the widest SEW. |
STVAL_WIDTH |
0 to 64 |
Sa |
None |
||||||
The number of implemented bits in stval. Must be greater than or equal to max( |
STVEC_MODES |
1-element to 2-element array of [0, 1] |
Sa |
None |
||||||
Options:
If only one mode is given, stvec.MODE is assumed to be read-only with that value. Otherwise, stvec.MODE is read-write. |
SUPPORT_FRACTIONAL_LMUL_BEYOND_REQUIRED |
[no_unrequired_supported, custom] |
None |
|||||||
For a given supported fractional LMUL setting, implementations must provide support for SEW settings covering the range from SEW_MIN up to LMUL * ELEN, inclusive. This ensures types narrower than the maximum SEW are supported when fractional LMULs are selected. |
SXLEN |
1-element to 2-element array of [32, 64] |
Sa |
( |
||||||
Set of XLENs supported in S-mode. Can be one of:
|
S_MODE_ENDIANNESS |
[little, big, dynamic] |
Sa |
None |
||||||
Endianness of data in S-mode. Can be one of:
|
TIME_CSR_IMPLEMENTED |
boolean |
None |
|||||||
Whether or not a real hardware time CSR exists. Implementations can either provide a real CSR or emulate access at M-mode. Possible values:
|
TINST_VALUE_ON_BREAKPOINT |
[always zero, custom] |
Ha |
None |
||||||
Value written into htinst/mtinst on a Breakpoint exception from VU/VS-mode. Possible values: * "always zero": Always write the value zero * "custom": Write a custom value, which results in UNPREDICTABLE |
TINST_VALUE_ON_FINAL_INSTRUCTION_GUEST_PAGE_FAULT |
[always zero, always pseudoinstruction] |
Ha |
None |
||||||
Value written into htinst/mtinst when there is an instruction guest-page fault on a final translation. Possible values: * "always zero": Always write the value zero * "always pseudoinstruction": Always write the pseudoinstruction |
TINST_VALUE_ON_FINAL_LOAD_GUEST_PAGE_FAULT |
[always zero, always pseudoinstruction, always transformed standard instruction, custom] |
Ha |
None |
||||||
Value written into htinst/mtinst when there is a load guest-page fault on a final translation. Possible values: * "always zero": Always write the value zero * "always pseudoinstruction": Always write the pseudoinstruction * "always transformed standard instruction": Always write the transformation of the standard instruction encoding * "custom": A custom value, which will cause an UNPREDICTABLE event. |
TINST_VALUE_ON_FINAL_STORE_AMO_GUEST_PAGE_FAULT |
[always zero, always pseudoinstruction, always transformed standard instruction, custom] |
Ha |
None |
||||||
Value written into htinst/mtinst when there is a store/AMO guest-page fault on a final translation. Possible values: * "always zero": Always write the value zero * "always pseudoinstruction": Always write the pseudoinstruction * "always transformed standard instruction": Always write the transformation of the standard instruction encoding * "custom": A custom value, which will cause an UNPREDICTABLE event. |
TINST_VALUE_ON_INSTRUCTION_ADDRESS_MISALIGNED |
[always zero, custom] |
Ha |
None |
||||||
Value written into htinst/mtinst when there is an instruction address misaligned exception. Possible values: * "always zero": Always write the value zero * "custom": Write a custom value, which results in UNPREDICTABLE |
TINST_VALUE_ON_LOAD_ACCESS_FAULT |
[always zero, always transformed standard instruction, custom] |
Ha |
None |
||||||
Value written into htinst/mtinst on an AccessFault exception from VU/VS-mode. Possible values: * "always zero": Always write the value zero * "always transformed standard instruction": Always write a transformed standard instruction as defined by H * "custom": Write a custom value, which results in UNPREDICTABLE |
TINST_VALUE_ON_LOAD_ADDRESS_MISALIGNED |
[always zero, always transformed standard instruction, custom] |
Ha |
None |
||||||
Value written into htinst/mtinst on a LoadAddressMisaligned exception from VU/VS-mode. Possible values: * "always zero": Always write the value zero * "always transformed standard instruction": Always write a transformed standard instruction as defined by H * "custom": Write a custom value, which results in UNPREDICTABLE |
TINST_VALUE_ON_LOAD_PAGE_FAULT |
[always zero, always transformed standard instruction, custom] |
Ha |
None |
||||||
Value written into htinst/mtinst on a LoadPageFault exception from VU/VS-mode. Possible values: * "always zero": Always write the value zero * "always transformed standard instruction": Always write a transformed standard instruction as defined by H * "custom": Write a custom value, which results in UNPREDICTABLE |
TINST_VALUE_ON_MCALL |
[always zero, custom] |
Ha |
None |
||||||
Value written into htinst/mtinst on a MCall exception from VU/VS-mode. Possible values: * "always zero": Always write the value zero * "custom": Write a custom value, which results in UNPREDICTABLE |
TINST_VALUE_ON_SCALL |
[always zero, custom] |
Ha |
None |
||||||
Value written into htinst/mtinst on a SCall exception from VU/VS-mode. Possible values: * "always zero": Always write the value zero * "custom": Write a custom value, which results in UNPREDICTABLE |
TINST_VALUE_ON_STORE_AMO_ACCESS_FAULT |
[always zero, always transformed standard instruction, custom] |
Ha |
None |
||||||
Value written into htinst/mtinst on an AccessFault exception from VU/VS-mode. Possible values: * "always zero": Always write the value zero * "always transformed standard instruction": Always write a transformed standard instruction as defined by H * "custom": Write a custom value, which results in UNPREDICTABLE |
TINST_VALUE_ON_STORE_AMO_ADDRESS_MISALIGNED |
[always zero, always transformed standard instruction, custom] |
Ha |
None |
||||||
Value written into htinst/mtinst on a StoreAmoAddressMisaligned exception from VU/VS-mode. Possible values: * "always zero": Always write the value zero * "always transformed standard instruction": Always write a transformed standard instruction as defined by H * "custom": Write a custom value, which results in UNPREDICTABLE |
TINST_VALUE_ON_STORE_AMO_PAGE_FAULT |
[always zero, always transformed standard instruction, custom] |
Ha |
None |
||||||
Value written into htinst/mtinst on a StoreAmoPageFault exception from VU/VS-mode. Possible values: * "always zero": Always write the value zero * "always transformed standard instruction": Always write a transformed standard instruction as defined by H * "custom": Write a custom value, which results in UNPREDICTABLE |
TINST_VALUE_ON_UCALL |
[always zero, custom] |
Ha |
None |
||||||
Value written into htinst/mtinst on a UCall exception from VU/VS-mode. Possible values: * "always zero": Always write the value zero * "custom": Write a custom value, which results in UNPREDICTABLE |
TINST_VALUE_ON_VIRTUAL_INSTRUCTION |
[always zero, custom] |
Ha |
None |
||||||
Value written into htinst/mtinst on a VirtualInstruction exception from VU/VS-mode. Possible values: * "always zero": Always write the value zero * "custom": Write a custom value, which results in UNPREDICTABLE |
TINST_VALUE_ON_VSCALL |
[always zero, custom] |
Ha |
None |
||||||
Value written into htinst/mtinst on a VSCall exception from VU/VS-mode. Possible values: * "always zero": Always write the value zero * "custom": Write a custom value, which results in UNPREDICTABLE |
TRAP_ON_EBREAK |
boolean |
Sma |
None |
||||||
The spec states that implementations may handle EBREAKs transparently without raising a trap, in which case the EEI must provide a builtin. |
TRAP_ON_ECALL_FROM_M |
boolean |
Sma |
None |
||||||
The spec states that implementations may handle ECALLs transparently without raising a trap, in which case the EEI must provide a builtin. |
TRAP_ON_ECALL_FROM_S |
boolean |
Sa |
None |
||||||
Whether or not an ECALL-from-S-mode causes a synchronous exception. The spec states that implementations may handle ECALLs transparently without raising a trap, in which case the EEI must provide a builtin. |
TRAP_ON_ECALL_FROM_U |
boolean |
Ua |
None |
||||||
Whether or not an ECALL-from-U-mode causes a synchronous exception. The spec states that implementations may handle ECALLs transparently without raising a trap, in which case the EEI must provide a builtin. |
TRAP_ON_ECALL_FROM_VS |
boolean |
Ha |
None |
||||||
Whether or not an ECALL-from-VS-mode causes a synchronous exception. The spec states that implementations may handle ECALLs transparently without raising a trap, in which case the EEI must provide a builtin. |
TRAP_ON_ILLEGAL_WLRL |
boolean |
Sma |
None |
||||||
Options:
|
TRAP_ON_RESERVED_INSTRUCTION |
boolean |
Sma |
None |
||||||
Options:
TRAP_ON_RESERVED_INSTRUCTION may be false while TRAP_ON_UNIMPLEMENTED_INSTRUCTION is true when a custom instruction is implemented in the standard/reserved opcode space. |
TRAP_ON_UNIMPLEMENTED_CSR |
boolean |
Sma |
None |
||||||
TRAP_ON_UNIMPLEMENTED_INSTRUCTION |
boolean |
Sma |
None |
|||||||
Options:
An unimplemented instruction is any instruction encoding that is not defined by the implementation. Custom instructions are considered implemented. |
UXLEN |
1-element to 2-element array of [32, 64] |
Ua |
(( |
||||||
Set of XLENs supported in U-mode. When both 32 and 64 are supported, UXLEN can be changed, via mstatus.UXL, between 32 and 64. |
U_MODE_ENDIANNESS |
[little, big, dynamic] |
Ua |
None |
||||||
Endianness of data in U-mode. Can be one of:
|
VECTOR_FF_NO_EXCEPTION_TRIM |
boolean |
None |
|||||||
VECTOR_FF_SEG_EXCEPTION_PARTIAL_LOAD |
[no_subsegment_loaded, custom] |
None |
||||||||
For fault-only-first segment loads, if an exception occurs partway through the zeroth segment, the trap is taken. If it occurs in a subsequent segment, vl may be reduced to the index of that segment. It is implementation-defined whether a partial subset of the segment is loaded before the trap. |
VECTOR_FF_UPDATE_PAST_TRIM |
[update_none, custom] |
None |
|||||||
Fault-only-first (FF) load instructions may update active destination elements beyond the index that causes vector-length trimming, but not past the original vl. These spurious updates need not reflect the true memory contents; non-idempotent memory should only be accessed when the load is guaranteed not to be retried. |
VECTOR_LOAD_PAST_TRAP |
boolean |
None |
|||||||
Vector load instructions may overwrite active destination vector register group elements past the element index where a trap is reported; the behavior for elements beyond the trap index is implementation-defined. |
VECTOR_LOAD_SEG_FF_OVERWRITE_ELEMENTS_AFTER_FAULT |
[no_overwrite, custom] |
None |
|||||||
Fault-only-first segment load instructions may overwrite destination vector register group elements beyond the point where a trap is reported or where vl is trimmed; the exact values written may be implementation-defined. |
VECTOR_LS_INDEX_MAX_EEW |
[8, 16, 32, 64, XLEN] |
None |
|||||||
A profile may place an upper limit on the maximum supported index EEW used by vector load/store indexing. For example, some profiles may limit indexing to sizes no larger than XLEN or a fixed EEW value. |
VECTOR_LS_MISALIGNED_LEGAL |
boolean |
None |
|||||||
If an element accessed by a vector memory instruction is not naturally aligned to the size of the element, either the element is transferred successfully or an address misaligned exception is raised on that element. Support for misaligned vector memory accesses is independent of an implementation’s support for misaligned scalar memory accesses. |
VECTOR_LS_SEG_PARTIAL_ACCESS |
boolean |
None |
|||||||
If a trap occurs during access to a segment, it is implementation-defined whether some, all, or none of that segment’s element accesses are performed before the trap is taken. |
VECTOR_LS_WHOLEREG_MISALIGNED_LEGAL |
boolean |
None |
|||||||
Implementations may raise a misaligned address exception for whole-register loads/stores if the base address is not aligned to the maximum of the encoded EEW size (in bytes) or the implementation’s smallest supported SEW (in bytes). |
VENDOR_ID_BANK |
25-bit integer |
Sma |
None |
||||||
Encodes the number of one-byte continuation codes in the Bank field of mvendorid. iN JEDEC’s parlance, the bank number is one greater than the number of continuation codes; hence, the mvendorid Bank field encodes a value that is one less than the JEDEC bank number. |
VENDOR_ID_OFFSET |
7-bit integer |
Sma |
None |
||||||
Encodes the final byte of a JEDEC manufactor ID, discarding the parity bit. |
VFREDUSUM_FINAL_NODE_ELEMENT_BEHAVIOR |
[additive_identity, copy] |
None |
|||||||
Implementations are permitted to insert an additional additive identity into the final reduction result, which may affect the final outcome when no active elements are present. |
VFREDUSUM_INACTIVE_NODE_ELEMENT_BEHAVIOR |
[additive_identity, copy] |
None |
|||||||
A reduction node that receives an input derived solely from masked-off elements or elements beyond vl may either treat that input as the additive identity for the appropriate element width or copy the other input through unchanged to the node output. |
VFREDUSUM_NAN |
[no_change, custom] |
None |
|||||||
The reduction tree structure must be deterministic for a given vtype and vl; as a consequence, implementations need not preserve NaN payloads when no elements are active. If no elements are active and the scalar input is NaN, implementations may canonicalize it (and raise an exception if it is a signaling NaN) or pass it through unchanged. |
VFREDUSUM_NODE_ROUNDING_BEHAVIOR |
[SEW_precision, custom] |
None |
|||||||
Each reduction operator computes an exact sum using an ideal scalar floating-point addition, then converts that result into a floating- point format with range and precision at least as large as the element SEW, rounding with the current dynamic rounding mode and raising exceptions as needed. Implementations may choose the exact range and precision per operator. |
VILL_SET_ON_RESERVED_VTYPE |
boolean |
None |
|||||||
Use of vtype encodings with LMUL < SEW_MIN/ELEN is reserved. Implementations
may set the |
VLEN |
[32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536] |
None |
|||||||
The number of bits in a single vector register. |
VMID_WIDTH |
0 to 14 |
Ha |
( |
||||||
Number of bits supported in hgatp.VMID (i.e., the supported width of a virtual machine ID). |
VSSTAGE_MODE_BARE |
boolean |
Ha |
(((32 in |
||||||
Whether or not writing mode=Bare is supported in the vsatp register. |
VSSTATUS_VS_EXISTS |
boolean |
None |
|||||||
Some implementations provide a vsstatus.VS field even when the misa.V bit is clear. This parameter indicates whether vsstatus.VS exists independently of the misa.V setting. |
VSTVEC_MODES |
1-element to 2-element array of [0, 1] |
Ha |
None |
||||||
Options:
If only one mode is given, vstvec.MODE is assumed to be read-only with that value. Otherwise, vstvec.MODE is read-write. |
VSXLEN |
1-element to 2-element array of [32, 64] |
Ha |
(!64 in |
||||||
Set of XLENs supported in VS-mode. Can be one of:
|
VS_MODE_ENDIANNESS |
[little, big, dynamic] |
Ha |
None |
||||||
Endianness of data in VS-mode. Can be one of:
|
VUXLEN |
1-element to 2-element array of [32, 64] |
Ha |
(!64 in |
||||||
Set of XLENs supported in VU-mode. When both 32 and 64 are supported, VUXLEN can be changed via vsstatus.UXL. |
VU_MODE_ENDIANNESS |
[little, big, dynamic] |
Ha |
None |
||||||
Endianness of data in VU-mode. Can be one of:
|
ZAWRS_NTO_IS_NOP |
boolean |
None |