You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The linker should report errors if object files of different privileged
1178
1179
specification versions are merged.
1179
1180
1180
-
===== Tag_RISCV_x3_reg_usage, 14, uleb128=value
1181
+
===== Tag_RISCV_atomic_abi, 14, uleb128=version
1182
+
1183
+
Tag_RISCV_atomic_abi denotes the atomic ABI used within this object
1184
+
file. Its values are defined as follows:
1185
+
1186
+
[cols="1,2,5"]
1187
+
[width=100%]
1188
+
|===
1189
+
| Value | Symbolic Name | Description
1190
+
1191
+
| 0 | UNKNOWN | This object uses unknown atomic ABI.
1192
+
| 1 | A6C | This object uses the A6 classical atomic ABI, which is defined in table A.6 in <<riscv-unpriv-20191213>>.
1193
+
| 2 | A6S | This object uses the strengthened A6 ABI, which uses the atomic mapping defined by <<Mappings from C/C++ primitives to RISC-V primitives>> and does not rely on any note 3 annotated mappings.
1194
+
| 3 | A7 | This object uses the A7 atomic ABI, which uses the atomic mapping defined by <<Mappings from C/C++ primitives to RISC-V primitives>> and may rely on note 3 annotated mappings.
1195
+
|===
1196
+
1197
+
Merge policy:::
1198
+
The linker should report errors if object files with incompatible atomics ABIs
1199
+
are merged; the compatibility rules for atomic ABIs can be found in the
1200
+
compatibility column in the following table.
1201
+
1202
+
[cols="6,2,3"]
1203
+
[width=100%]
1204
+
|===
1205
+
| Input Values | Compatible? | Ouput Value
1206
+
1207
+
| UNKNOWN and A6C | Yes | A6C
1208
+
| UNKNOWN and A6S | Yes | A6S
1209
+
| UNKNOWN and A7 | Yes | A7
1210
+
| A6C and A6S | Yes | A6C
1211
+
| A6C and A7 | No | -
1212
+
| A6S and A7 | Yes | A7
1213
+
|===
1214
+
1215
+
NOTE: Merging object files with the same ABI will result in the same ABI.
1216
+
1217
+
NOTE: Programs that implement atomic operations without relying on the
1218
+
A-extension are classified as UNKNOWN for now. A new value for those
1219
+
may be defined in the future.
1220
+
1221
+
===== Tag_RISCV_x3_reg_usage, 16, uleb128=value
1181
1222
1182
1223
Tag_RISCV_x3_reg_usage indicates the usage of `x3`/`gp` register. `x3`/`gp` could be used for
1183
1224
global pointer relaxation, as a reserved platform register, or as a temporary register.
0 commit comments