|
109 | 109 | maximum: 127
|
110 | 110 | MISALIGNED_LDST:
|
111 | 111 | description: |
|
112 |
| - Whether or not the implementation supports misaligned loads and stores in |
| 112 | + Whether or not the implementation supports non-atomic misaligned loads and stores in |
113 | 113 | main memory (does *not* affect misaligned support to device memory)
|
114 | 114 | schema:
|
115 | 115 | type: boolean
|
| 116 | + MISALIGNED_LDST_EXCEPTION_PRIORITY: |
| 117 | + description: | |
| 118 | + The relative priority of a load/store/AMO exception vs. load/store/AMO page-fault |
| 119 | + or access-fault exceptions. |
| 120 | +
|
| 121 | + May be one of: |
| 122 | +
|
| 123 | + [separator="!"] |
| 124 | + !=== |
| 125 | + ! high ! Misaligned load/store/AMO exceptions are always higher priority than load/store/AMO page-fault and access-fault exceptions. |
| 126 | + ! low ! Misaligned load/store/AMO exceptions are always lower priority than load/store/AMO page-fault and access-fault exceptions. |
| 127 | + !=== |
| 128 | +
|
| 129 | + MISALIGNED_LDST_EXCEPTION_PRIORITY cannot be "high" when MAX_MISALIGNED_ATOMICITY_GRANULE_SIZE |
| 130 | + is non-zero, since the atomicity of an access cannot be determined in that case until after |
| 131 | + address translation. |
| 132 | + schema: |
| 133 | + type: string |
| 134 | + enum: ["high", "low"] |
| 135 | + extra_validation: | |
| 136 | + assert (MISALIGNED_LDST_EXCEPTION_PRIORITY == "low") if MAX_MISALIGNED_ATOMICITY_GRANULE_SIZE.positive? |
| 137 | + MAX_MISALIGNED_ATOMICITY_GRANULE_SIZE: |
| 138 | + description: | |
| 139 | + The maximum granule size, in bytes, that the hart can atomically perform a |
| 140 | + misligned load/store/AMO without raising a Misaligned exception. When MAX_MISALIGNED_ATOMICITY_GRANULE_SIZE is 0, the hart |
| 141 | + cannot atomically perform a misaligned load/store/AMO. When a power of two, the hart can |
| 142 | + atomically load/store/AMO a misaligned access that is fully contained in a |
| 143 | + MAX_MISALIGNED_ATOMICITY_GRANULE_SIZE-aligned region. |
| 144 | +
|
| 145 | + [NOTE] |
| 146 | + Even if the hart is capable of performing a misligned load/store/AMO atomically, |
| 147 | + a misaligned exception may still occur if the access does not have the appropriate |
| 148 | + Misaligned Atomicity Granule PMA set. |
| 149 | + schema: |
| 150 | + type: integer |
| 151 | + # can't be larger than a page, since there is no way to reconcile that with virtual memory |
| 152 | + enum: [0, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096] |
116 | 153 | MISALIGNED_SPLIT_STRATEGY:
|
117 | 154 | description: |
|
118 | 155 | when misaligned accesses are supported, this determines the *order* in the implementation appears
|
|
0 commit comments