From: Luke Kenneth Casson Leighton Date: Fri, 21 Jun 2019 06:23:32 +0000 (+0100) Subject: whitespace X-Git-Tag: convert-csv-opcode-to-binary~4579 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1489a607d39361b181e5b3757e8009e5c22cdc40;p=libreriscv.git whitespace --- diff --git a/simple_v_extension/specification.mdwn b/simple_v_extension/specification.mdwn index d661442b3..70a7ab0a0 100644 --- a/simple_v_extension/specification.mdwn +++ b/simple_v_extension/specification.mdwn @@ -2322,17 +2322,32 @@ Open Questions: ## Limitations on instructions. -To greatly simplify implementations, it is required to treat the VLIW group as a separate sub-program with its own separate PC. The sub-pc advances separately whilst the main PC remains pointing at the beginning of the VLIW instruction (not to be confused with how VL works, which is exactly the same principle, except it is VStart in the STATE CSR that increments). - -This has implications, namely that a new set of CSRs identical to xepc (mepc, srpc, hepc and uepc) must be created and managed and respected as being a sub extension of the xepc set of CSRs. Thus, xepcvliw CSRs must be context switched and saved / restored in traps. - -The VStart indices in the STATE CSR may be similarly regarded as another sub-execution context, giving in effect two sets of nested sub-levels of the RISCV Program Counter. - -In addition, as xepcvliw CSRs are relative to the beginning of the VLIW block, branches MUST be restricted to within the block, i.e. addressing is now restricted to the start (and very short) length of the block. - -Also: calling subroutines is inadviseable, unless they can be entirely accomplished within a block. - -A normal jump and a normal function call may only be taken by letting the VLIW end, returning to "normal" standard RV mode, using RVC, 32 bit or P48-*-type opcodes. +To greatly simplify implementations, it is required to treat the VLIW +group as a separate sub-program with its own separate PC. The sub-pc +advances separately whilst the main PC remains pointing at the beginning +of the VLIW instruction (not to be confused with how VL works, which +is exactly the same principle, except it is VStart in the STATE CSR +that increments). + +This has implications, namely that a new set of CSRs identical to xepc +(mepc, srpc, hepc and uepc) must be created and managed and respected +as being a sub extension of the xepc set of CSRs. Thus, xepcvliw CSRs +must be context switched and saved / restored in traps. + +The VStart indices in the STATE CSR may be similarly regarded as another +sub-execution context, giving in effect two sets of nested sub-levels +of the RISCV Program Counter. + +In addition, as xepcvliw CSRs are relative to the beginning of the VLIW +block, branches MUST be restricted to within the block, i.e. addressing +is now restricted to the start (and very short) length of the block. + +Also: calling subroutines is inadviseable, unless they can be entirely +accomplished within a block. + +A normal jump and a normal function call may only be taken by letting +the VLIW end, returning to "normal" standard RV mode, using RVC, 32 bit +or P48-*-type opcodes. ## Links