-
Notifications
You must be signed in to change notification settings - Fork 111
opentitan: remove architecture reference from mainboard #191
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
01f3645
to
2693481
Compare
we found in coreboot that maintaining a specific hierarchy of reference made life best. Currently we reference the architecture from both the mainboard and the cpu. That gets messy, we have learned. Reference the architecture from the cpu. Implement halt for the cpu and the soc. Use soc::halt in the mainboard code. Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>
I'm working on tracing the CI failure you're seeing. Will update this patch when I'm further through the investigation. |
That Rust pull request has been approved, so this issue might be fixed by the time this lands in nightly. I expect this to have some fall-out within the project, as you will no longer have access to any |
… r=alexcrichton [RISCV] Disable Atomics on all Non-A RISC-V targets In a `TargetOptions` configuration, `max_atomic_width: None` causes `max_atomic_width()` to return `Some(target_pointer_width)`. So, contrary to assumptions, `max_atomic_width: None` means you do have atomic support! RISC-V's rv32i and rv32imc do not have architectural support for atomic memory accesses of any size, because they do not include the `A` architecture extension. This means the values in the target definition should be `Some(0)`. This bug has been observed via a build failure with oreboot/oreboot#191, where LLVM was still generating libcalls for atomic operations. According to rust-lang/compiler-builtins, "Rust only exposes atomic types on platforms that support them, and therefore does not need to fall back to software implementations." - so this PR tries to bring rustc inline with this decision. This commit also removes the outdated bug link, which references a now irrelevant GCC bug. I will likely also have to revisit the `min_atomic_width` of all the RISC-V targets so they are correct and match what the hardware is capable of (which is more restricted than one might imagine). r? @alexcrichton
I did a rustup to 11/20 version and ... still doesn't work. But maybe it did not percolate through yet. |
Yeah, sadly I cannot see what's in the 20 November 2019 nightly edition (and https://rust-lang.github.io/rustup-components-history/ does not tell you which commit each nightly was built from) |
I downloaded today's nightly ( I've attached the build output, but I think the summary is it's all successful (except a few warnings). Build Output
|
already done in another PR |
we found in coreboot that maintaining a specific hierarchy of reference
made life best.
Currently we reference the architecture from both the mainboard and the
cpu. That gets messy, we have learned.
Reference the architecture from the cpu. Implement halt for the
cpu and the soc.
Use soc::halt in the mainboard code.