Skip to content

Commit 15fd96a

Browse files
Merged in Dave's RVA23/RVB23. Adding lots of extensions. Still in progress.
1 parent c1cc3c5 commit 15fd96a

27 files changed

+1342
-690
lines changed

Rakefile

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,10 @@ task :portfolios do
359359
Rake::Task["#{$root}/gen/profile_doc/pdf/RVA20.pdf"].invoke
360360
portfolio_start_msg("RVA22")
361361
Rake::Task["#{$root}/gen/profile_doc/pdf/RVA22.pdf"].invoke
362+
portfolio_start_msg("RVA23")
363+
Rake::Task["#{$root}/gen/profile_doc/pdf/RVA23.pdf"].invoke
364+
portfolio_start_msg("RVB23")
365+
Rake::Task["#{$root}/gen/profile_doc/pdf/RVB23.pdf"].invoke
362366
end
363367

364368
def portfolio_start_msg(name)
@@ -381,3 +385,5 @@ task "MockProfileRelease": "#{$root}/gen/profile_doc/pdf/MockProfileRelease.pdf"
381385
task "RVI20": "#{$root}/gen/profile_doc/pdf/RVI20.pdf"
382386
task "RVA20": "#{$root}/gen/profile_doc/pdf/RVA20.pdf"
383387
task "RVA22": "#{$root}/gen/profile_doc/pdf/RVA22.pdf"
388+
task "RVA23": "#{$root}/gen/profile_doc/pdf/RVA23.pdf"
389+
task "RVB23": "#{$root}/gen/profile_doc/pdf/RVB23.pdf"

arch/ext/S.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ versions:
1818
requires:
1919
name: U
2020
version: "= 1.0.0"
21+
- version: "1.13.0"
22+
state: ratified
23+
ratification_date: null
24+
requires:
25+
name: U
26+
version: "= 1.0.0"
2127
description: |
2228
This chapter describes the RISC-V supervisor-level architecture, which
2329
contains a common core that is used with various supervisor-level

arch/ext/Smmpm.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# yaml-language-server: $schema=../../schemas/ext_schema.json
2+
3+
$schema: "ext_schema.json#"
4+
kind: extension
5+
name: Smmpm
6+
long_name: Pointer masking for M-mode
7+
description: |
8+
A machine-level extension that provides pointer masking for M-mode.
9+
type: privileged
10+
versions:
11+
- version: "1.0.0"
12+
state: ratified
13+
ratification_date: null
14+
params:
15+
PMLEN:
16+
description: |
17+
The number of high-order bits of an address that are masked by the
18+
pointer masking facility.
19+
schema:
20+
type: integer
21+
also_defined_in: [Ssnpm, Smmpm]

arch/ext/Smnpm.yaml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# yaml-language-server: $schema=../../schemas/ext_schema.json
2+
3+
$schema: "ext_schema.json#"
4+
kind: extension
5+
name: Smnpm
6+
long_name: Pointer masking for next privilege level less than M-mode
7+
description: |
8+
A machine-level extension that provides pointer masking for the next lower privilege mode
9+
(S/HS if S-mode is implemented, or U-mode otherwise).
10+
type: privileged
11+
versions:
12+
- version: "1.0.0"
13+
state: ratified
14+
ratification_date: null
15+
params:
16+
PMLEN:
17+
description: |
18+
The number of high-order bits of an address that are masked by the
19+
pointer masking facility.
20+
schema:
21+
type: integer
22+
also_defined_in: [Ssnpm, Smmpm]

arch/ext/Ssnpm.yaml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# yaml-language-server: $schema=../../schemas/ext_schema.json
2+
3+
$schema: "ext_schema.json#"
4+
kind: extension
5+
name: Ssnpm
6+
long_name: Pointer masking for next privilege level less than S-mode
7+
description: |
8+
A supervisor-level extension that provides pointer masking for the next lower privilege mode (U-mode),
9+
and for VS-modes and VU-modes if the H extension is present.
10+
type: privileged
11+
versions:
12+
- version: "1.0.0"
13+
state: ratified
14+
ratification_date: null
15+
params:
16+
PMLEN:
17+
description: |
18+
The number of high-order bits of an address that are masked by the
19+
pointer masking facility.
20+
schema:
21+
type: integer
22+
also_defined_in: [Smnpm, Smmpm]

arch/ext/Sspm.yaml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# yaml-language-server: $schema=../../schemas/ext_schema.json
2+
3+
$schema: "ext_schema.json#"
4+
kind: extension
5+
name: Sspm
6+
long_name: Pointer masking available in supervisor mode
7+
description: |
8+
Indicates that there is pointer-masking support available in supervisor mode,
9+
with some facility provided in the application execution environment to control pointer masking.
10+
11+
This extension describes an execution environment but has no bearing on hardware implementations.
12+
It is intended to be used in profile specifications where a Supervisor profile
13+
can only reference Supervisor level pointer masking functionality,
14+
and not the associated CSR controls that exist at a higher privilege level (i.e., in the execution environment).
15+
16+
type: privileged
17+
versions:
18+
- version: "1.0.0"
19+
state: ratified
20+
ratification_date: null

arch/ext/Ssstrict.yaml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# yaml-language-server: $schema=../../schemas/ext_schema.json
2+
3+
$schema: "ext_schema.json#"
4+
kind: extension
5+
name: Ssstrict
6+
long_name: Unimplemented reserved encodings trap and no no-conforming extensions
7+
description: |
8+
No non-conforming extensions are present. Attempts to
9+
execute unimplemented opcodes or access unimplemented CSRs in the
10+
standard or reserved encoding spaces raises an illegal instruction
11+
exception that results in a contained trap to the supervisor-mode
12+
trap handler.
13+
14+
[NOTE] Ssstrict does not prescribe behavior for the custom encoding
15+
spaces or CSRs.
16+
17+
[NOTE] Ssstrict definition applies to the execution environment
18+
claiming to be RVA23/RVB23-compatible.
19+
If the hypervisor extension is present, that execution environment will take a contained trap to
20+
supervisor-mode (however that trap is implemented, including, but not
21+
limited to, emulation/delegation in the outer execution
22+
environment). Ssstrict (and all the other RVA23/RVB23 mandates and options)
23+
do not apply to any guest VMs run by a hypervisor. An RVA23/RVB23 hypervisor
24+
can provide guest VMs that are also RVA23/RVB23-compatible but with an
25+
expanded set of emulated standard instructions. An RVA23/RVB23 hypervisor
26+
can also choose to implement guest VMs that are not RVA23/RVB23 compatible
27+
(e.g., lacking H, or only RVA20).
28+
29+
[NOTE] Ssstrict is a new RVA23/RVB23 profile-defined extension that restricts the
30+
behavior of reserved encoding spaces. The extension will be added to
31+
the supervisor chapter of the privileged architecture.
32+
versions:
33+
- version: "1.0.0"
34+
state: ratified
35+
ratification_date: null

arch/ext/Supm.yaml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# yaml-language-server: $schema=../../schemas/ext_schema.json
2+
3+
$schema: "ext_schema.json#"
4+
kind: extension
5+
name: Supm
6+
long_name: Pointer masking available in user mode
7+
description: |
8+
Indicates that there is pointer-masking support available in user mode,
9+
with some facility provided in the application execution environment to control pointer masking.
10+
11+
This extension describes an execution environment but has no bearing on hardware implementations.
12+
It is intended to be used in profile specifications where a User profile
13+
can only reference User level pointer masking functionality,
14+
and not the associated CSR controls that exist at a higher privilege level (i.e., in the execution environment).
15+
16+
type: privileged
17+
versions:
18+
- version: "1.0.0"
19+
state: ratified
20+
ratification_date: null

arch/ext/Za64rs.yaml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# yaml-language-server: $schema=../../schemas/ext_schema.json
2+
3+
$schema: "ext_schema.json#"
4+
kind: extension
5+
name: Za64rs
6+
long_name: Reservation set requirement for RVA profiles
7+
description: |
8+
Reservation sets must be contiguous, naturally aligned, and at most 64 bytes in size.
9+
10+
[NOTE]
11+
This extension was ratified as part of the RVA22 profile.
12+
13+
[NOTE]
14+
The minimum reservation set size is effectively determined by the size of atomic accesses in
15+
the A extension.
16+
versions:
17+
- version: "1.0.0"
18+
state: ratified
19+
ratification_date: null
20+
param_constraints:
21+
LRSC_RESERVATION_STRATEGY:
22+
schema:
23+
oneOf:
24+
- const: reserve exactly enough to cover the access
25+
- const: reserve naturally-aligned 64-byte region

arch/ext/Zama16b.yaml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# yaml-language-server: $schema=../../schemas/ext_schema.json
2+
3+
$schema: "ext_schema.json#"
4+
kind: extension
5+
name: Zama16b
6+
long_name: Misaligned load/store/AMO within aligned 16-byte address are atomic
7+
description: |
8+
Misaligned loads, stores, and AMOs to main memory regions that do not cross a
9+
naturally-aligned 16-byte boundary are atomic.
10+
11+
[NOTE] Zama16b is a new RVA23 profile-defined extension that represents
12+
the presence of the new Misaligned Atomicity Granule feature added in
13+
Sm1p13. The extension will be added to the PMA section of the
14+
privileged architecture manual.
15+
16+
versions:
17+
- version: "1.0.0"
18+
state: ratified
19+
ratification_date: null

0 commit comments

Comments
 (0)