mirror of
https://gitlab.cern.ch/wotsubo/endcap-sl-software-ri-generator.git
synced 2025-08-05 10:19:30 +09:00
update(generator): use Mmapped instead of AxiC2c1Spec
This commit is contained in:
parent
44880c7531
commit
687d938689
2 changed files with 18 additions and 18 deletions
|
@ -313,7 +313,7 @@ impl CodeGen for Block {
|
||||||
ModuleBlockElements::Block(_) => {
|
ModuleBlockElements::Block(_) => {
|
||||||
let child_upper_camel_name = util::parse_to_ident(&child_name.to_upper_camel_case())?;
|
let child_upper_camel_name = util::parse_to_ident(&child_name.to_upper_camel_case())?;
|
||||||
Ok(quote! {
|
Ok(quote! {
|
||||||
pub fn #snake_case_name(&self) -> #snake_case_name::#child_upper_camel_name<T> {
|
pub fn #snake_case_name(&self) -> #snake_case_name::#child_upper_camel_name<M> {
|
||||||
#snake_case_name::#child_upper_camel_name::new(self.mem_ptr)
|
#snake_case_name::#child_upper_camel_name::new(self.mem_ptr)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -323,7 +323,7 @@ impl CodeGen for Block {
|
||||||
match ®ister.multiple {
|
match ®ister.multiple {
|
||||||
None => {
|
None => {
|
||||||
Ok(quote! {
|
Ok(quote! {
|
||||||
pub fn #snake_case_name(&self) -> #snake_case_name::#child_upper_camel_name<T> {
|
pub fn #snake_case_name(&self) -> #snake_case_name::#child_upper_camel_name<M> {
|
||||||
#snake_case_name::#child_upper_camel_name::new(self.mem_ptr)
|
#snake_case_name::#child_upper_camel_name::new(self.mem_ptr)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -337,7 +337,7 @@ impl CodeGen for Block {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Ok(quote! {
|
Ok(quote! {
|
||||||
pub fn #snake_case_name(&self) -> [#snake_case_name::#child_upper_camel_name<T>; #num_multiple] {
|
pub fn #snake_case_name(&self) -> [#snake_case_name::#child_upper_camel_name<M>; #num_multiple] {
|
||||||
[ #(#elements),* ]
|
[ #(#elements),* ]
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -350,9 +350,9 @@ impl CodeGen for Block {
|
||||||
}).collect::<Result<Vec<proc_macro2::TokenStream>, CodeGenError>>()?;
|
}).collect::<Result<Vec<proc_macro2::TokenStream>, CodeGenError>>()?;
|
||||||
|
|
||||||
let parent_struct = if parent_name == util::parse_to_ident("RegisterInterface").unwrap() {
|
let parent_struct = if parent_name == util::parse_to_ident("RegisterInterface").unwrap() {
|
||||||
quote! {#parent_name<T>}
|
quote! {#parent_name<M>}
|
||||||
} else {
|
} else {
|
||||||
quote! {#parent_name<'a, T>}
|
quote! {#parent_name<'a, M>}
|
||||||
};
|
};
|
||||||
|
|
||||||
let child_mods = self
|
let child_mods = self
|
||||||
|
@ -372,7 +372,7 @@ impl CodeGen for Block {
|
||||||
|
|
||||||
use std::marker::PhantomData;
|
use std::marker::PhantomData;
|
||||||
|
|
||||||
use crate::axic2c1::spec::AxiC2c1Spec;
|
use mmapped_reg::mmapped::Mmapped;
|
||||||
|
|
||||||
use super::#parent_name;
|
use super::#parent_name;
|
||||||
|
|
||||||
|
@ -380,12 +380,12 @@ impl CodeGen for Block {
|
||||||
|
|
||||||
const OFFSET: usize = #addr;
|
const OFFSET: usize = #addr;
|
||||||
|
|
||||||
pub struct #upper_camel_name<'a, T: AxiC2c1Spec> {
|
pub struct #upper_camel_name<'a, M: Mmapped<U = u32>> {
|
||||||
mem_ptr: *mut u32,
|
mem_ptr: *mut u32,
|
||||||
_marker: PhantomData<&'a mut #parent_struct>,
|
_marker: PhantomData<&'a mut #parent_struct>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T: AxiC2c1Spec> #upper_camel_name<'_, T> {
|
impl<M: Mmapped<U = u32>> #upper_camel_name<'_, M> {
|
||||||
pub(crate) fn new(parent_ptr: *mut u32) -> Self {
|
pub(crate) fn new(parent_ptr: *mut u32) -> Self {
|
||||||
#upper_camel_name {
|
#upper_camel_name {
|
||||||
mem_ptr: unsafe { parent_ptr.add(OFFSET) },
|
mem_ptr: unsafe { parent_ptr.add(OFFSET) },
|
||||||
|
@ -469,16 +469,16 @@ impl CodeGen for Register {
|
||||||
|
|
||||||
use std::marker::PhantomData;
|
use std::marker::PhantomData;
|
||||||
|
|
||||||
use crate::axic2c1::spec::AxiC2c1Spec;
|
use mmapped_reg::mmapped::Mmapped;
|
||||||
|
|
||||||
const OFFSET: usize = #addr;
|
const OFFSET: usize = #addr;
|
||||||
|
|
||||||
pub struct #reg_name<'a, T: AxiC2c1Spec> {
|
pub struct #reg_name<'a, M: Mmapped<U = u32>> {
|
||||||
mem_ptr: *mut u32,
|
mem_ptr: *mut u32,
|
||||||
_marker: PhantomData<&'a mut super::#parent_name<'a, T>>,
|
_marker: PhantomData<&'a mut super::#parent_name<'a, M>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T: AxiC2c1Spec> #reg_name<'_, T> {
|
impl<M: Mmapped<U = u32>> #reg_name<'_, M> {
|
||||||
pub(crate) fn new(parent_ptr: *mut u32) -> Self {
|
pub(crate) fn new(parent_ptr: *mut u32) -> Self {
|
||||||
#reg_name {
|
#reg_name {
|
||||||
mem_ptr: unsafe { parent_ptr.add(OFFSET) },
|
mem_ptr: unsafe { parent_ptr.add(OFFSET) },
|
||||||
|
|
|
@ -11,19 +11,19 @@ pub(super) fn gen_registerspec_impl(
|
||||||
) -> TokenStream {
|
) -> TokenStream {
|
||||||
let impl_rw = match modf {
|
let impl_rw = match modf {
|
||||||
RwSpecifier::R => quote! {
|
RwSpecifier::R => quote! {
|
||||||
impl<T: AxiC2c1Spec> crate::register_spec::Readable for #reg_name<'_, T> {}
|
impl<M: Mmapped<U = u32>> crate::register_spec::Readable for #reg_name<'_, M> {}
|
||||||
},
|
},
|
||||||
RwSpecifier::W => quote! {
|
RwSpecifier::W => quote! {
|
||||||
impl<T: AxiC2c1Spec> crate::register_spec::Writable for #reg_name<'_, T> {}
|
impl<M: Mmapped<U = u32>> crate::register_spec::Writable for #reg_name<'_, M> {}
|
||||||
},
|
},
|
||||||
RwSpecifier::RW => quote! {
|
RwSpecifier::RW => quote! {
|
||||||
impl<T: AxiC2c1Spec> crate::register_spec::Readable for #reg_name<'_, T> {}
|
impl<M: Mmapped<U = u32>> crate::register_spec::Readable for #reg_name<'_, M> {}
|
||||||
impl<T: AxiC2c1Spec> crate::register_spec::Writable for #reg_name<'_, T> {}
|
impl<M: Mmapped<U = u32>> crate::register_spec::Writable for #reg_name<'_, M> {}
|
||||||
impl<T: AxiC2c1Spec> crate::register_spec::Modifiable for #reg_name<'_, T> {}
|
impl<M: Mmapped<U = u32>> crate::register_spec::Modifiable for #reg_name<'_, M> {}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
quote! {
|
quote! {
|
||||||
impl<T: AxiC2c1Spec> crate::register_spec::RegisterSpec for #reg_name<'_, T> {
|
impl<M: Mmapped<U = u32>> crate::register_spec::RegisterSpec for #reg_name<'_, M> {
|
||||||
type Ux = #type_ux;
|
type Ux = #type_ux;
|
||||||
type T = #type_t;
|
type T = #type_t;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue