Avoid "missing_transmute_annotations" warnings (#1410)

This commit is contained in:
Björn Quentin 2024-04-08 13:47:36 +02:00 committed by GitHub
parent 52e5b94bd5
commit 41aa556764
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 344 additions and 95 deletions

View File

@ -310,7 +310,9 @@ unsafe fn get_assigned_cpu_interrupt(interrupt: Interrupt) -> Option<CpuInterrup
let cpu_intr = intr_map_base.offset(interrupt_number).read_volatile(); let cpu_intr = intr_map_base.offset(interrupt_number).read_volatile();
if cpu_intr > 0 { if cpu_intr > 0 {
Some(core::mem::transmute(cpu_intr - EXTERNAL_INTERRUPT_OFFSET)) Some(core::mem::transmute::<u32, CpuInterrupt>(
cpu_intr - EXTERNAL_INTERRUPT_OFFSET,
))
} else { } else {
None None
} }
@ -327,15 +329,15 @@ mod vectored {
for (prio, num) in PRIORITY_TO_INTERRUPT.iter().enumerate() { for (prio, num) in PRIORITY_TO_INTERRUPT.iter().enumerate() {
set_kind( set_kind(
crate::get_core(), crate::get_core(),
core::mem::transmute(*num as u32), core::mem::transmute::<u32, CpuInterrupt>(*num as u32),
InterruptKind::Level, InterruptKind::Level,
); );
set_priority( set_priority(
crate::get_core(), crate::get_core(),
core::mem::transmute(*num as u32), core::mem::transmute::<u32, CpuInterrupt>(*num as u32),
core::mem::transmute((prio as u8) + 1), core::mem::transmute::<u8, Priority>((prio as u8) + 1),
); );
enable_cpu_interrupt(core::mem::transmute(*num as u32)); enable_cpu_interrupt(core::mem::transmute::<u32, CpuInterrupt>(*num as u32));
} }
} }
@ -349,7 +351,7 @@ mod vectored {
let interrupt_nr = status.trailing_zeros() as u16; let interrupt_nr = status.trailing_zeros() as u16;
// safety: cast is safe because of repr(u16) // safety: cast is safe because of repr(u16)
if let Some(cpu_interrupt) = if let Some(cpu_interrupt) =
get_assigned_cpu_interrupt(core::mem::transmute(interrupt_nr)) get_assigned_cpu_interrupt(core::mem::transmute::<u16, Interrupt>(interrupt_nr))
{ {
let prio = get_priority_by_core(core, cpu_interrupt); let prio = get_priority_by_core(core, cpu_interrupt);
prios[prio as usize] |= 1 << (interrupt_nr as usize); prios[prio as usize] |= 1 << (interrupt_nr as usize);
@ -371,8 +373,9 @@ mod vectored {
return Err(Error::InvalidInterruptPriority); return Err(Error::InvalidInterruptPriority);
} }
unsafe { unsafe {
let cpu_interrupt = let cpu_interrupt = core::mem::transmute::<u32, CpuInterrupt>(
core::mem::transmute(PRIORITY_TO_INTERRUPT[(level as usize) - 1] as u32); PRIORITY_TO_INTERRUPT[(level as usize) - 1] as u32,
);
map(crate::get_core(), interrupt, cpu_interrupt); map(crate::get_core(), interrupt, cpu_interrupt);
enable_cpu_interrupt(cpu_interrupt); enable_cpu_interrupt(cpu_interrupt);
} }
@ -423,7 +426,8 @@ mod vectored {
) { ) {
EspDefaultHandler(interrupt); EspDefaultHandler(interrupt);
} else { } else {
let handler: fn(&mut TrapFrame) = core::mem::transmute(handler); let handler: fn(&mut TrapFrame) =
core::mem::transmute::<unsafe extern "C" fn(), fn(&mut TrapFrame)>(handler);
handler(save_frame); handler(save_frame);
} }
} }
@ -632,7 +636,7 @@ mod classic {
let prio = intr_prio_base let prio = intr_prio_base
.offset(cpu_interrupt as isize) .offset(cpu_interrupt as isize)
.read_volatile(); .read_volatile();
core::mem::transmute(prio as u8) core::mem::transmute::<u8, Priority>(prio as u8)
} }
#[no_mangle] #[no_mangle]
#[link_section = ".trap"] #[link_section = ".trap"]
@ -761,7 +765,7 @@ mod plic {
let prio = plic_mxint_pri_ptr let prio = plic_mxint_pri_ptr
.offset(cpu_interrupt_number) .offset(cpu_interrupt_number)
.read_volatile(); .read_volatile();
core::mem::transmute(prio as u8) core::mem::transmute::<u8, Priority>(prio as u8)
} }
#[no_mangle] #[no_mangle]
#[link_section = ".trap"] #[link_section = ".trap"]
@ -904,7 +908,7 @@ mod clic {
unsafe { unsafe {
let intr_cntrl = intr_cntrl(core, cpu_interrupt_number); let intr_cntrl = intr_cntrl(core, cpu_interrupt_number);
let val = InterruptControl(intr_cntrl.read_volatile()); let val = InterruptControl(intr_cntrl.read_volatile());
core::mem::transmute(val.priority()) core::mem::transmute::<u8, Priority>(val.priority())
} }
} }
} }

View File

@ -321,7 +321,8 @@ mod vectored {
let i = interrupt_nr as isize; let i = interrupt_nr as isize;
let cpu_interrupt = intr_map_base.offset(i).read_volatile(); let cpu_interrupt = intr_map_base.offset(i).read_volatile();
// safety: cast is safe because of repr(u32) // safety: cast is safe because of repr(u32)
let cpu_interrupt: CpuInterrupt = core::mem::transmute(cpu_interrupt); let cpu_interrupt: CpuInterrupt =
core::mem::transmute::<u32, CpuInterrupt>(cpu_interrupt);
let level = cpu_interrupt.level() as u8 as usize; let level = cpu_interrupt.level() as u8 as usize;
levels[level] |= 1 << i; levels[level] |= 1 << i;
@ -491,7 +492,8 @@ mod vectored {
) { ) {
EspDefaultHandler(level, interrupt); EspDefaultHandler(level, interrupt);
} else { } else {
let handler: fn(&mut Context) = core::mem::transmute(handler); let handler: fn(&mut Context) =
core::mem::transmute::<unsafe extern "C" fn(), fn(&mut Context)>(handler);
handler(save_frame); handler(save_frame);
} }
} }

View File

@ -76,42 +76,150 @@ pub(crate) fn get_io_mux_reg(gpio_num: u8) -> &'static crate::peripherals::io_mu
let iomux = &*crate::peripherals::IO_MUX::PTR; let iomux = &*crate::peripherals::IO_MUX::PTR;
match gpio_num { match gpio_num {
0 => core::mem::transmute(iomux.gpio0()), 0 => core::mem::transmute::<
1 => core::mem::transmute(iomux.gpio1()), &'static crate::peripherals::io_mux::GPIO0,
2 => core::mem::transmute(iomux.gpio2()), &'static crate::peripherals::io_mux::GPIO0,
3 => core::mem::transmute(iomux.gpio3()), >(iomux.gpio0()),
4 => core::mem::transmute(iomux.gpio4()), 1 => core::mem::transmute::<
5 => core::mem::transmute(iomux.gpio5()), &'static crate::peripherals::io_mux::GPIO1,
6 => core::mem::transmute(iomux.gpio6()), &'static crate::peripherals::io_mux::GPIO0,
7 => core::mem::transmute(iomux.gpio7()), >(iomux.gpio1()),
8 => core::mem::transmute(iomux.gpio8()), 2 => core::mem::transmute::<
9 => core::mem::transmute(iomux.gpio9()), &'static crate::peripherals::io_mux::GPIO2,
10 => core::mem::transmute(iomux.gpio10()), &'static crate::peripherals::io_mux::GPIO0,
11 => core::mem::transmute(iomux.gpio11()), >(iomux.gpio2()),
12 => core::mem::transmute(iomux.gpio12()), 3 => core::mem::transmute::<
13 => core::mem::transmute(iomux.gpio13()), &'static crate::peripherals::io_mux::GPIO3,
14 => core::mem::transmute(iomux.gpio14()), &'static crate::peripherals::io_mux::GPIO0,
15 => core::mem::transmute(iomux.gpio15()), >(iomux.gpio3()),
16 => core::mem::transmute(iomux.gpio16()), 4 => core::mem::transmute::<
17 => core::mem::transmute(iomux.gpio17()), &'static crate::peripherals::io_mux::GPIO4,
18 => core::mem::transmute(iomux.gpio18()), &'static crate::peripherals::io_mux::GPIO0,
19 => core::mem::transmute(iomux.gpio19()), >(iomux.gpio4()),
20 => core::mem::transmute(iomux.gpio20()), 5 => core::mem::transmute::<
21 => core::mem::transmute(iomux.gpio21()), &'static crate::peripherals::io_mux::GPIO5,
22 => core::mem::transmute(iomux.gpio22()), &'static crate::peripherals::io_mux::GPIO0,
23 => core::mem::transmute(iomux.gpio23()), >(iomux.gpio5()),
24 => core::mem::transmute(iomux.gpio24()), 6 => core::mem::transmute::<
25 => core::mem::transmute(iomux.gpio25()), &'static crate::peripherals::io_mux::GPIO6,
26 => core::mem::transmute(iomux.gpio26()), &'static crate::peripherals::io_mux::GPIO0,
27 => core::mem::transmute(iomux.gpio27()), >(iomux.gpio6()),
32 => core::mem::transmute(iomux.gpio32()), 7 => core::mem::transmute::<
33 => core::mem::transmute(iomux.gpio33()), &'static crate::peripherals::io_mux::GPIO7,
34 => core::mem::transmute(iomux.gpio34()), &'static crate::peripherals::io_mux::GPIO0,
35 => core::mem::transmute(iomux.gpio35()), >(iomux.gpio7()),
36 => core::mem::transmute(iomux.gpio36()), 8 => core::mem::transmute::<
37 => core::mem::transmute(iomux.gpio37()), &'static crate::peripherals::io_mux::GPIO8,
38 => core::mem::transmute(iomux.gpio38()), &'static crate::peripherals::io_mux::GPIO0,
39 => core::mem::transmute(iomux.gpio39()), >(iomux.gpio8()),
9 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO9,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio9()),
10 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO10,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio10()),
11 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO11,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio11()),
12 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO12,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio12()),
13 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO13,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio13()),
14 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO14,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio14()),
15 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO15,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio15()),
16 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO16,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio16()),
17 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO17,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio17()),
18 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO18,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio18()),
19 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO19,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio19()),
20 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO20,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio20()),
21 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO21,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio21()),
22 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO22,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio22()),
23 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO23,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio23()),
24 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO24,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio24()),
25 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO25,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio25()),
26 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO26,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio26()),
27 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO27,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio27()),
32 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO32,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio32()),
33 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO33,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio33()),
34 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO34,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio34()),
35 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO35,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio35()),
36 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO36,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio36()),
37 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO37,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio37()),
38 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO38,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio38()),
39 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO39,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio39()),
_ => panic!(), _ => panic!(),
} }
} }

View File

@ -82,45 +82,162 @@ pub(crate) const fn get_io_mux_reg(gpio_num: u8) -> &'static crate::peripherals:
let iomux = &*crate::peripherals::IO_MUX::PTR; let iomux = &*crate::peripherals::IO_MUX::PTR;
match gpio_num { match gpio_num {
0 => core::mem::transmute(iomux.gpio0()), 0 => core::mem::transmute::<
1 => core::mem::transmute(iomux.gpio1()), &'static crate::peripherals::io_mux::GPIO0,
2 => core::mem::transmute(iomux.gpio2()), &'static crate::peripherals::io_mux::GPIO0,
3 => core::mem::transmute(iomux.gpio3()), >(iomux.gpio0()),
4 => core::mem::transmute(iomux.gpio4()), 1 => core::mem::transmute::<
5 => core::mem::transmute(iomux.gpio5()), &'static crate::peripherals::io_mux::GPIO1,
6 => core::mem::transmute(iomux.gpio6()), &'static crate::peripherals::io_mux::GPIO0,
7 => core::mem::transmute(iomux.gpio7()), >(iomux.gpio1()),
8 => core::mem::transmute(iomux.gpio8()), 2 => core::mem::transmute::<
9 => core::mem::transmute(iomux.gpio9()), &'static crate::peripherals::io_mux::GPIO2,
10 => core::mem::transmute(iomux.gpio10()), &'static crate::peripherals::io_mux::GPIO0,
11 => core::mem::transmute(iomux.gpio11()), >(iomux.gpio2()),
12 => core::mem::transmute(iomux.gpio12()), 3 => core::mem::transmute::<
13 => core::mem::transmute(iomux.gpio13()), &'static crate::peripherals::io_mux::GPIO3,
14 => core::mem::transmute(iomux.gpio14()), &'static crate::peripherals::io_mux::GPIO0,
15 => core::mem::transmute(iomux.gpio15()), >(iomux.gpio3()),
16 => core::mem::transmute(iomux.gpio16()), 4 => core::mem::transmute::<
17 => core::mem::transmute(iomux.gpio17()), &'static crate::peripherals::io_mux::GPIO4,
18 => core::mem::transmute(iomux.gpio18()), &'static crate::peripherals::io_mux::GPIO0,
19 => core::mem::transmute(iomux.gpio19()), >(iomux.gpio4()),
20 => core::mem::transmute(iomux.gpio20()), 5 => core::mem::transmute::<
21 => core::mem::transmute(iomux.gpio21()), &'static crate::peripherals::io_mux::GPIO5,
26 => core::mem::transmute(iomux.gpio26()), &'static crate::peripherals::io_mux::GPIO0,
27 => core::mem::transmute(iomux.gpio27()), >(iomux.gpio5()),
32 => core::mem::transmute(iomux.gpio32()), 6 => core::mem::transmute::<
33 => core::mem::transmute(iomux.gpio33()), &'static crate::peripherals::io_mux::GPIO6,
34 => core::mem::transmute(iomux.gpio34()), &'static crate::peripherals::io_mux::GPIO0,
35 => core::mem::transmute(iomux.gpio35()), >(iomux.gpio6()),
36 => core::mem::transmute(iomux.gpio36()), 7 => core::mem::transmute::<
37 => core::mem::transmute(iomux.gpio37()), &'static crate::peripherals::io_mux::GPIO7,
38 => core::mem::transmute(iomux.gpio38()), &'static crate::peripherals::io_mux::GPIO0,
39 => core::mem::transmute(iomux.gpio39()), >(iomux.gpio7()),
40 => core::mem::transmute(iomux.gpio40()), 8 => core::mem::transmute::<
41 => core::mem::transmute(iomux.gpio41()), &'static crate::peripherals::io_mux::GPIO8,
42 => core::mem::transmute(iomux.gpio42()), &'static crate::peripherals::io_mux::GPIO0,
43 => core::mem::transmute(iomux.gpio43()), >(iomux.gpio8()),
44 => core::mem::transmute(iomux.gpio44()), 9 => core::mem::transmute::<
45 => core::mem::transmute(iomux.gpio45()), &'static crate::peripherals::io_mux::GPIO9,
46 => core::mem::transmute(iomux.gpio46()), &'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio9()),
10 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO10,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio10()),
11 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO11,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio11()),
12 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO12,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio12()),
13 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO13,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio13()),
14 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO14,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio14()),
15 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO15,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio15()),
16 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO16,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio16()),
17 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO17,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio17()),
18 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO18,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio18()),
19 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO19,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio19()),
20 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO20,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio20()),
21 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO21,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio21()),
26 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO26,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio26()),
27 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO27,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio27()),
32 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO32,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio32()),
33 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO33,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio33()),
34 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO34,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio34()),
35 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO35,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio35()),
36 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO36,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio36()),
37 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO37,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio37()),
38 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO38,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio38()),
39 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO39,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio39()),
40 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO40,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio40()),
41 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO41,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio41()),
42 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO42,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio42()),
43 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO43,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio43()),
44 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO44,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio44()),
45 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO45,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio45()),
46 => core::mem::transmute::<
&'static crate::peripherals::io_mux::GPIO46,
&'static crate::peripherals::io_mux::GPIO0,
>(iomux.gpio46()),
_ => ::core::unreachable!(), _ => ::core::unreachable!(),
} }
} }

View File

@ -39,6 +39,12 @@ use crate::{
target0_conf::TARGET0_CONF_SPEC, target0_conf::TARGET0_CONF_SPEC,
target0_hi::TARGET0_HI_SPEC, target0_hi::TARGET0_HI_SPEC,
target0_lo::TARGET0_LO_SPEC, target0_lo::TARGET0_LO_SPEC,
target1_conf::TARGET1_CONF_SPEC,
target1_hi::TARGET1_HI_SPEC,
target1_lo::TARGET1_LO_SPEC,
target2_conf::TARGET2_CONF_SPEC,
target2_hi::TARGET2_HI_SPEC,
target2_lo::TARGET2_LO_SPEC,
}, },
SYSTIMER, SYSTIMER,
}, },
@ -157,14 +163,26 @@ impl<T, DM: crate::Mode, const CHANNEL: u8> Alarm<T, DM, CHANNEL> {
systimer.target0_lo(), systimer.target0_lo(),
), ),
1 => ( 1 => (
transmute(systimer.target1_conf()), transmute::<&Reg<TARGET1_CONF_SPEC>, &Reg<TARGET0_CONF_SPEC>>(
transmute(systimer.target1_hi()), systimer.target1_conf(),
transmute(systimer.target1_lo()), ),
transmute::<&Reg<TARGET1_HI_SPEC>, &Reg<TARGET0_HI_SPEC>>(
systimer.target1_hi(),
),
transmute::<&Reg<TARGET1_LO_SPEC>, &Reg<TARGET0_LO_SPEC>>(
systimer.target1_lo(),
),
), ),
2 => ( 2 => (
transmute(systimer.target2_conf()), transmute::<&Reg<TARGET2_CONF_SPEC>, &Reg<TARGET0_CONF_SPEC>>(
transmute(systimer.target2_hi()), systimer.target2_conf(),
transmute(systimer.target2_lo()), ),
transmute::<&Reg<TARGET2_HI_SPEC>, &Reg<TARGET0_HI_SPEC>>(
systimer.target2_hi(),
),
transmute::<&Reg<TARGET2_LO_SPEC>, &Reg<TARGET0_LO_SPEC>>(
systimer.target2_lo(),
),
), ),
_ => unreachable!(), _ => unreachable!(),
}; };