Skip to content

Commit

Permalink
XTheadMae: Rename and cleanup memory attribute extension
Browse files Browse the repository at this point in the history
We named the extension "MAEE" following the name of the enable bit
in the SxStatus CSR. However, the last 'E' stands for enable and should
therefore not be part of the name. Renaming an extension that has been
published is usually a no-go, but since we don't have any support
patches for "XTheadMaee" merged yet, we can get away with it.
Therefore, let's rename XTheadMaee to XTheadMae now.

Further cleanups:
* Streamline name to `XTheadMae`
* Simplify availability section (following other extensions)

Signed-off-by: Christoph Müllner <[email protected]>
  • Loading branch information
cmuellner committed Apr 7, 2024
1 parent 61a682f commit 6026dac
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 40 deletions.
2 changes: 1 addition & 1 deletion xthead.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,4 @@ include::xtheadvector.adoc[]

include::intrinsic.adoc[]

include::xtheadmaee.adoc[]
include::xtheadmae.adoc[]
47 changes: 47 additions & 0 deletions xtheadmae.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
[#xtheadmae]
== Memory Attribute Extension (XTheadMae)

[NOTE,caption=Frozen]
The `XTheadMae` extension is `stable`.

Extension version: 1.0.

The `XTheadMae` ISA extension provides a way to configure memory page attributes.
These attributes are set in the page tabale entries (PTEs).

The `XTheadMae` extension is a non-standard non-conforming extension.
`XTheadMae` uses preserved [60:63] bits of the PTE, which have later been
allocted to the `Svpbmt` and `Svnapot` standard extensions.
This conflict is not on purpose, but the result of issues in the past that have been resolved since.
Therefore, the `XTheadMae` extension and the `Svpbmt` or `Svnapot` are in conflict.
In other words, tools should not allow to enable the `XTheadMae` extension and
the `Svpbmt` or `Svnapot` extensions at the same time and should report an error
if both are enabled by the user.

The table below describes the page attributes corresponding to each memory type:

[cols="^12,3,3,3",stripes=even,options="header"]
|===
| Memory type | SO | C | B
| Cacheable memory | 0 | 1 | 1
| Non-cacheable memory | 0 | 0 | 1
| Bufferable device | 1 | 0 | 1
| Non-bufferable device | 1 | 0 | 0
|===

The table below describes extend page attributes in PTE:
[cols="^3,^3,12",stripes=even,options="header"]
|===
| Fields | Bit | Meaning
| SO | 63 | Strong order
| C | 62 | Cacheable
| B | 61 | Bufferable
| T | 60 | Trustable
|===

=== Availability

The `XTheadMae` extension's availability can be probed via the
`th.sxstatus`.MAEE bit (bit 21).
The `XTheadMae` extension is available if and only if this bit is `1`.
Refer to <<#xtheadsxstatus>> for more information about the `th.sxstatus` CSR.
39 changes: 0 additions & 39 deletions xtheadmaee.adoc

This file was deleted.

0 comments on commit 6026dac

Please sign in to comment.