NixOS RISC-V | 243 Members | |
| NixOS on RISC-V https://wiki.nixos.org/wiki/RISC-V https://pad.lassul.us/NixOS-riscv64-linux | 73 Servers |
| Sender | Message | Time |
|---|---|---|
| 10 Apr 2026 | ||
In reply to @genericnerdyusername:matrix.org IMACDF_Zicsr_Zifencei | 12:38:28 | |
| last i checked, linux doesnt support that, it always assumes the lack of a feature, and the CONFIG_ just enables support for it enabling the usage happens at runtime | 12:38:54 | |
| its burried in the alternates macros | 12:39:32 | |
Probably would break if you had something that implemented the misa and had no mmu | 12:39:39 | |
| But thats so esoteric that i think youd have bigger problems | 12:39:51 | |
| 12:40:29 | |
| How much effort would it be to remove the DF requirement or do them in software? | 12:40:32 | |
| basically, this macro will generate 2 different opcodes, and update a table with the address, so other code can patch things at bootup | 12:40:52 | |
In reply to @genericnerdyusername:matrix.orgIt's not a requirement, just what most toolchains assume. I think you could probably get away with I_Zicsr for a simple single-core bare metal program.It would entirely depend on what program you're looking to run. | 12:42:11 | |
in this case, it can either be a | 12:42:31 | |
it defaults to the nop case i believe | 12:42:42 | |
| The end goal is booting a minimal nixos install and running some neofetch derivative | 12:42:57 | |
In reply to @genericnerdyusername:matrix.orgYou can try different ISAs by setting gcc.arch.My suggestion: try IMA_Zicsr_Zifencei (you might not need to specify the Zi instructions with GCC) | 12:44:10 | |
| Set that where? | 12:45:26 | |
arch/riscv/include/asm/alternative-macros.hreading more, i can see it will generate the first opcode, nop, and force it to not be compressed (so both options are 32bits)then it will use an assembly .if statement gated on the config flag, to maybe push the 2nd opcode into the .alternative section of the binary, along with some offsets to the nop | 12:45:26 | |
oh, but i also see things now gated by CONFIG_RISCV_ALTERNATIVE, hmmmm? | 12:49:04 | |
ah, when CONFIG_RISCV_ALTERNATIVE=n it just doesnt support the extensions at all, and always goes with the non-zbb case (in the strcmp example) | 12:49:51 | |
| https://github.com/torvalds/linux/blob/master/arch/riscv/Kconfig#L542-L555 | 12:51:54 | |
| 16:46:54 | ||
| 13 Apr 2026 | ||
| 14:16:53 | ||
| 15 Apr 2026 | ||
| 06:49:36 | ||
| 09:38:46 | ||
i'm not sure if this is the right place to ask, especially because this is a very noob question, but i'm trying to get a shell for doing cross-compilation from x86 to riscv. I thought it'd be a simple matter of getting a pkgsCross.riscv32.mkShell/stdenv with the right nativeBuildInputs etc, but if i do nix-shell -p pkgsCross.riscv32.stdenv, I just get an x86->x86 toolchain instead of an x86->rv32 one... where's the problem with my mental model, and how can i get a shell with the right environment? | 09:46:07 | |
| i used this article and this one as sources, but I guess I might have missed or misunderstood something? | 09:47:22 | |
| * i used this article and this one as sources, but I guess I might h](https://www.hobson.space/posts/nixcross/)ave missed or misunderstood something? | 09:47:47 | |
| * i used this article and this one as sources, but I guess I might have missed or misunderstood something? | 09:48:05 | |
| * i used this article and this one as sources, but I guess I must have missed or misunderstood something? | 09:48:14 | |
| * i used this article and this one as sources, but I guess I must have missed or misunderstood something? | 09:49:44 | |
* i'm not sure if this is the right place to ask, especially because this is a very noob question, but i'm trying to get a shell for doing cross-compilation from x86 to riscv. I thought it'd be a simple matter of getting a pkgsCross.riscv32.mkShell/stdenv with the right nativeBuildInputs etc, but if i do nix-shell -p pkgsCross.riscv32.stdenv, I just get an x86->x86 toolchain, and if i do nix-shell -E '(import <nixpkgs> {}).pkgsCross.riscv32.mkShell {} and try to compile a simple program, I get a cc1: execvp: no such file or directory error... where's the problem with my mental model, and how can i get a shell with the right environment? | 09:54:19 | |
* i'm not sure if this is the right place to ask, especially because this is a very noob question, but i'm trying to get a shell for doing cross-compilation from x86 to riscv. I thought it'd be a simple matter of getting a pkgsCross.riscv32.mkShell/stdenv with the right nativeBuildInputs etc, but if i do nix-shell -p pkgsCross.riscv32.stdenv, I just get an x86->x86 toolchain, and if i do nix-shell -E '(import <nixpkgs> {}).pkgsCross.riscv32.mkShell {}' and try to compile a simple program, I get a cc1: execvp: no such file or directory error... where's the problem with my mental model, and how can i get a shell with the right environment? | 09:59:49 | |