Skip to content

Commit 1d5384e

Browse files
authored
Merge pull request #200 from riscv/e_flags-custom
Reserve e_flags bits 24 through 31 for custom use
2 parents 0bb85bd + 7ad4184 commit 1d5384e

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

riscv-elf.md

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -477,9 +477,9 @@ for more detail on how to mangle types.
477477
* e_flags: Describes the format of this ELF file. These flags are used by the
478478
linker to disallow linking ELF files with incompatible ABIs together.
479479

480-
Bit 0 | Bit 1 - 2 | Bit 3 | Bit 4 | Bit 5 - 31
481-
-------|------------|-------|-------|------------
482-
RVC | Float ABI | RVE | TSO | *Reserved*
480+
Bit 0 | Bits 1 - 2 | Bit 3 | Bit 4 | Bits 5 - 23 | Bits 24 - 31
481+
-------|------------|-------|-------|-------------|---------------------------
482+
RVC | Float ABI | RVE | TSO | *Reserved* | *Non-standard extensions*
483483

484484
* EF_RISCV_RVC (0x0001): This bit is set when the binary targets the C ABI,
485485
which allows instructions to be aligned to 16-bit boundaries (the base RV32
@@ -505,9 +505,18 @@ for more detail on how to mangle types.
505505
* EF_RISCV_TSO (0x0010): This bit is set when the binary requires the RVTSO
506506
memory consistency model.
507507

508-
Until such a time that the *Reserved* bits (0xffffffe0) are allocated by
508+
Until such a time that the *Reserved* bits (0x00ffffe0) are allocated by
509509
future versions of this specification, they shall not be set by standard
510-
software.
510+
software. Non-standard extensions are free to use bits 24-31 for any purpose.
511+
This many conflict with other non-standard extensions.
512+
513+
> NOTE:
514+
> There is no provision for compatibility between conflicting uses of the
515+
> e_flags bits reserved for non-standard extensions, and many standard RISC-V
516+
> tools will ignore them. Do not use them unless you control both the
517+
> toolchain and the operating system, and the ABI differences are so
518+
> significant they cannot be done with a .RISCV.attributes tag nor an ELF
519+
> note, such as using a different syscall ABI.
511520
512521
## <a name=sections></a>Sections
513522

0 commit comments

Comments
 (0)