[1] https://lore.kernel.org/all/CA++6G0Do001Bo+kxhUNz5T937TYU-K5...
[1] https://lore.kernel.org/all/CA++6G0Do001Bo+kxhUNz5T937TYU-K5...
Also, in the ARM ecosystem, some of the things that the RISC-V spec specifies (like MMU details) are vendor-specific, leading to a minor headache for OS writers, but give chip manufacturers more freedom. Renesas may have assumed they had the same freedom.
A statically linked "HelloWorld" on my VisionFive 2 starts from 0x10000 and runs up to 0x4ea8e, so smack through that whole memory region.
The only way to make programs compiled with a standard binutils (or on another RISC-V machine, or a standard OS running in a VM) work would be for the kernel to memcpy() that 128k region in and out on every address space switch.
It's really an awful bug (or design decision) if you want to run standard OSes and standard code on it.
This implementation has a very incompatible (and problematic) deviation from the privileged ISA spec.
It seems to act as if there was a hardcoded, stuck, TLB entry that cannot be removed, so the whole system has to work around it. And to add insult to injury, it affects a virtual memory address range that happens to be used in most Linux programs.
IMHO ASUS is doing a disservice to RISC-V by releasing a board with such a chip. They should have used something else or skipped this generation.