| .. | .. |
|---|
| 22 | 22 | select ARCH_HAS_GIGANTIC_PAGE |
|---|
| 23 | 23 | select ARCH_HAS_KCOV |
|---|
| 24 | 24 | select ARCH_HAS_MMIOWB |
|---|
| 25 | + select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE |
|---|
| 25 | 26 | select ARCH_HAS_PTE_SPECIAL |
|---|
| 26 | 27 | select ARCH_HAS_SET_DIRECT_MAP |
|---|
| 27 | 28 | select ARCH_HAS_SET_MEMORY |
|---|
| .. | .. |
|---|
| 331 | 332 | |
|---|
| 332 | 333 | endmenu |
|---|
| 333 | 334 | |
|---|
| 335 | +config TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI |
|---|
| 336 | + def_bool y |
|---|
| 337 | + # https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=aed44286efa8ae8717a77d94b51ac3614e2ca6dc |
|---|
| 338 | + depends on AS_IS_GNU && AS_VERSION >= 23800 |
|---|
| 339 | + help |
|---|
| 340 | + Newer binutils versions default to ISA spec version 20191213 which |
|---|
| 341 | + moves some instructions from the I extension to the Zicsr and Zifencei |
|---|
| 342 | + extensions. |
|---|
| 343 | + |
|---|
| 344 | +config TOOLCHAIN_NEEDS_OLD_ISA_SPEC |
|---|
| 345 | + def_bool y |
|---|
| 346 | + depends on TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI |
|---|
| 347 | + # https://github.com/llvm/llvm-project/commit/22e199e6afb1263c943c0c0d4498694e15bf8a16 |
|---|
| 348 | + depends on CC_IS_CLANG && CLANG_VERSION < 170000 |
|---|
| 349 | + help |
|---|
| 350 | + Certain versions of clang do not support zicsr and zifencei via -march |
|---|
| 351 | + but newer versions of binutils require it for the reasons noted in the |
|---|
| 352 | + help text of CONFIG_TOOLCHAIN_NEEDS_EXPLICIT_ZICSR_ZIFENCEI. This |
|---|
| 353 | + option causes an older ISA spec compatible with these older versions |
|---|
| 354 | + of clang to be passed to GAS, which has the same result as passing zicsr |
|---|
| 355 | + and zifencei to -march. |
|---|
| 356 | + |
|---|
| 334 | 357 | config FPU |
|---|
| 335 | 358 | bool "FPU support" |
|---|
| 336 | 359 | default y |
|---|