| # Freestanding C Headers |
| |
| This subtree defines headers required for a C freestanding implementation, as |
| specified in S4p6 of the C11 standard. Said headers are implemented *to the |
| letter* as described in respective sections of said standard. These headers |
| must be substitutable for those provided by the system toolchain when building |
| for host-side code, so that includes of these headers do not cause breakage |
| when building on host-side, where these headers are *never* included. |
| |
| All of `sw/device` is compiled using only these headers, and this directory acts |
| as the sole root against which `#include <...>` directives are resolved. |
| Headers provided by the system or the compiler are totally inaccessible and |
| should not be used. Conversely, these headers must *never* be included via |
| their full paths, since they can easily clash with the corresponding headers |
| provided by the host-side toolchain, as described above. |
| |
| These headers are guaranteed to be compatible with processors and compilers |
| implementing the RISC-V ILP32 psABI, though they may be compatible with other |
| architectures and calling conventions on a best-effort basis. |
| However, compilers *must* be compatible with Clang and GCC's intrinsics. |