summaryrefslogtreecommitdiff
path: root/scripts/Makefile.thinlto
diff options
context:
space:
mode:
authorDanilo Krummrich <dakr@kernel.org>2026-09-06 13:50:30 +0200
committerDanilo Krummrich <dakr@kernel.org>2026-09-06 13:50:30 +0200
commit88b79bffa3779965b05e292e7c39a41fe6cd18fe (patch)
treee7ec407f553a0c9ab1dfe56ed1349ad0a448eef4 /scripts/Makefile.thinlto
parentcee9395acd8043be0644b25c34bfa86623f2b935 (diff)
parenta12f711dc53c1ca1d7ff4184e1609182174de87b (diff)
downloadlinux-next-88b79bffa3779965b05e292e7c39a41fe6cd18fe.tar.gz
linux-next-88b79bffa3779965b05e292e7c39a41fe6cd18fe.zip
Merge patch series "rust: io: support register projections and remove relative registers"
Gary Guo <gary@garyguo.net> says: Currently registers work for all untyped I/O regions, which is not ideal. It allows registers defined for device A to work for another device B and there is no safeguarding at all. Change this by requiring a base type for registers. `register!` can still define registers on untyped `Region`s, although users would need to do so explicitly and supply a concrete type. This change makes it possible to use projection for relative registers; relative registers can be implemented by defining new types for the I/O subregions and just define registers for these subregion types like normal registers. This actually results in more ergnomic code for users of relative registers (currently only nova-core), because non-array registers can be written to with #[...] struct Subregion(...); register! { base: MyBase; SUBREGION: Subregion @ ...; } register! { base: Subregion; REG(u32) @ .. { .. } } let subregion = io_project!(bar, build: SUBREGION); subregion.read(REG) subregion.write_reg(reg) instead of struct SubregionType; struct Subregion; impl RegisterBase<SubregionType> for Subregion { const BASE: usize = ...; } register! { REG(u32) @ Subregion + .. { .. } } bar.read(REG::of::<Subregion>()) bar.write(WithBase::of::<Subregion>(), reg) This also allows a lot more code sharing between I/O projection and `register!` macro. The expressiveness power of Rust declarative macros is becoming limiting, so it is converted to a proc macro before new features being added to it. Link: https://patch.msgid.link/20260901-typed_register-v4-0-5552b1d59525@garyguo.net Signed-off-by: Danilo Krummrich <dakr@kernel.org>
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions