diff --git a/esp-hal/src/interrupt/riscv.rs b/esp-hal/src/interrupt/riscv.rs index 391d617fa..983cb6b17 100644 --- a/esp-hal/src/interrupt/riscv.rs +++ b/esp-hal/src/interrupt/riscv.rs @@ -310,7 +310,9 @@ unsafe fn get_assigned_cpu_interrupt(interrupt: Interrupt) -> Option 0 { - Some(core::mem::transmute(cpu_intr - EXTERNAL_INTERRUPT_OFFSET)) + Some(core::mem::transmute::( + cpu_intr - EXTERNAL_INTERRUPT_OFFSET, + )) } else { None } @@ -327,15 +329,15 @@ mod vectored { for (prio, num) in PRIORITY_TO_INTERRUPT.iter().enumerate() { set_kind( crate::get_core(), - core::mem::transmute(*num as u32), + core::mem::transmute::(*num as u32), InterruptKind::Level, ); set_priority( crate::get_core(), - core::mem::transmute(*num as u32), - core::mem::transmute((prio as u8) + 1), + core::mem::transmute::(*num as u32), + core::mem::transmute::((prio as u8) + 1), ); - enable_cpu_interrupt(core::mem::transmute(*num as u32)); + enable_cpu_interrupt(core::mem::transmute::(*num as u32)); } } @@ -349,7 +351,7 @@ mod vectored { let interrupt_nr = status.trailing_zeros() as u16; // safety: cast is safe because of repr(u16) if let Some(cpu_interrupt) = - get_assigned_cpu_interrupt(core::mem::transmute(interrupt_nr)) + get_assigned_cpu_interrupt(core::mem::transmute::(interrupt_nr)) { let prio = get_priority_by_core(core, cpu_interrupt); prios[prio as usize] |= 1 << (interrupt_nr as usize); @@ -371,8 +373,9 @@ mod vectored { return Err(Error::InvalidInterruptPriority); } unsafe { - let cpu_interrupt = - core::mem::transmute(PRIORITY_TO_INTERRUPT[(level as usize) - 1] as u32); + let cpu_interrupt = core::mem::transmute::( + PRIORITY_TO_INTERRUPT[(level as usize) - 1] as u32, + ); map(crate::get_core(), interrupt, cpu_interrupt); enable_cpu_interrupt(cpu_interrupt); } @@ -423,7 +426,8 @@ mod vectored { ) { EspDefaultHandler(interrupt); } else { - let handler: fn(&mut TrapFrame) = core::mem::transmute(handler); + let handler: fn(&mut TrapFrame) = + core::mem::transmute::(handler); handler(save_frame); } } @@ -632,7 +636,7 @@ mod classic { let prio = intr_prio_base .offset(cpu_interrupt as isize) .read_volatile(); - core::mem::transmute(prio as u8) + core::mem::transmute::(prio as u8) } #[no_mangle] #[link_section = ".trap"] @@ -761,7 +765,7 @@ mod plic { let prio = plic_mxint_pri_ptr .offset(cpu_interrupt_number) .read_volatile(); - core::mem::transmute(prio as u8) + core::mem::transmute::(prio as u8) } #[no_mangle] #[link_section = ".trap"] @@ -904,7 +908,7 @@ mod clic { unsafe { let intr_cntrl = intr_cntrl(core, cpu_interrupt_number); let val = InterruptControl(intr_cntrl.read_volatile()); - core::mem::transmute(val.priority()) + core::mem::transmute::(val.priority()) } } } diff --git a/esp-hal/src/interrupt/xtensa.rs b/esp-hal/src/interrupt/xtensa.rs index 5fa480f7c..a84b4aa4a 100644 --- a/esp-hal/src/interrupt/xtensa.rs +++ b/esp-hal/src/interrupt/xtensa.rs @@ -321,7 +321,8 @@ mod vectored { let i = interrupt_nr as isize; let cpu_interrupt = intr_map_base.offset(i).read_volatile(); // safety: cast is safe because of repr(u32) - let cpu_interrupt: CpuInterrupt = core::mem::transmute(cpu_interrupt); + let cpu_interrupt: CpuInterrupt = + core::mem::transmute::(cpu_interrupt); let level = cpu_interrupt.level() as u8 as usize; levels[level] |= 1 << i; @@ -491,7 +492,8 @@ mod vectored { ) { EspDefaultHandler(level, interrupt); } else { - let handler: fn(&mut Context) = core::mem::transmute(handler); + let handler: fn(&mut Context) = + core::mem::transmute::(handler); handler(save_frame); } } diff --git a/esp-hal/src/soc/esp32/gpio.rs b/esp-hal/src/soc/esp32/gpio.rs index 3d3aef0cb..5f6314e78 100644 --- a/esp-hal/src/soc/esp32/gpio.rs +++ b/esp-hal/src/soc/esp32/gpio.rs @@ -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; match gpio_num { - 0 => core::mem::transmute(iomux.gpio0()), - 1 => core::mem::transmute(iomux.gpio1()), - 2 => core::mem::transmute(iomux.gpio2()), - 3 => core::mem::transmute(iomux.gpio3()), - 4 => core::mem::transmute(iomux.gpio4()), - 5 => core::mem::transmute(iomux.gpio5()), - 6 => core::mem::transmute(iomux.gpio6()), - 7 => core::mem::transmute(iomux.gpio7()), - 8 => core::mem::transmute(iomux.gpio8()), - 9 => core::mem::transmute(iomux.gpio9()), - 10 => core::mem::transmute(iomux.gpio10()), - 11 => core::mem::transmute(iomux.gpio11()), - 12 => core::mem::transmute(iomux.gpio12()), - 13 => core::mem::transmute(iomux.gpio13()), - 14 => core::mem::transmute(iomux.gpio14()), - 15 => core::mem::transmute(iomux.gpio15()), - 16 => core::mem::transmute(iomux.gpio16()), - 17 => core::mem::transmute(iomux.gpio17()), - 18 => core::mem::transmute(iomux.gpio18()), - 19 => core::mem::transmute(iomux.gpio19()), - 20 => core::mem::transmute(iomux.gpio20()), - 21 => core::mem::transmute(iomux.gpio21()), - 22 => core::mem::transmute(iomux.gpio22()), - 23 => core::mem::transmute(iomux.gpio23()), - 24 => core::mem::transmute(iomux.gpio24()), - 25 => core::mem::transmute(iomux.gpio25()), - 26 => core::mem::transmute(iomux.gpio26()), - 27 => core::mem::transmute(iomux.gpio27()), - 32 => core::mem::transmute(iomux.gpio32()), - 33 => core::mem::transmute(iomux.gpio33()), - 34 => core::mem::transmute(iomux.gpio34()), - 35 => core::mem::transmute(iomux.gpio35()), - 36 => core::mem::transmute(iomux.gpio36()), - 37 => core::mem::transmute(iomux.gpio37()), - 38 => core::mem::transmute(iomux.gpio38()), - 39 => core::mem::transmute(iomux.gpio39()), + 0 => core::mem::transmute::< + &'static crate::peripherals::io_mux::GPIO0, + &'static crate::peripherals::io_mux::GPIO0, + >(iomux.gpio0()), + 1 => core::mem::transmute::< + &'static crate::peripherals::io_mux::GPIO1, + &'static crate::peripherals::io_mux::GPIO0, + >(iomux.gpio1()), + 2 => core::mem::transmute::< + &'static crate::peripherals::io_mux::GPIO2, + &'static crate::peripherals::io_mux::GPIO0, + >(iomux.gpio2()), + 3 => core::mem::transmute::< + &'static crate::peripherals::io_mux::GPIO3, + &'static crate::peripherals::io_mux::GPIO0, + >(iomux.gpio3()), + 4 => core::mem::transmute::< + &'static crate::peripherals::io_mux::GPIO4, + &'static crate::peripherals::io_mux::GPIO0, + >(iomux.gpio4()), + 5 => core::mem::transmute::< + &'static crate::peripherals::io_mux::GPIO5, + &'static crate::peripherals::io_mux::GPIO0, + >(iomux.gpio5()), + 6 => core::mem::transmute::< + &'static crate::peripherals::io_mux::GPIO6, + &'static crate::peripherals::io_mux::GPIO0, + >(iomux.gpio6()), + 7 => core::mem::transmute::< + &'static crate::peripherals::io_mux::GPIO7, + &'static crate::peripherals::io_mux::GPIO0, + >(iomux.gpio7()), + 8 => core::mem::transmute::< + &'static crate::peripherals::io_mux::GPIO8, + &'static crate::peripherals::io_mux::GPIO0, + >(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!(), } } diff --git a/esp-hal/src/soc/esp32s2/gpio.rs b/esp-hal/src/soc/esp32s2/gpio.rs index 5edc7e369..f4e6ff345 100644 --- a/esp-hal/src/soc/esp32s2/gpio.rs +++ b/esp-hal/src/soc/esp32s2/gpio.rs @@ -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; match gpio_num { - 0 => core::mem::transmute(iomux.gpio0()), - 1 => core::mem::transmute(iomux.gpio1()), - 2 => core::mem::transmute(iomux.gpio2()), - 3 => core::mem::transmute(iomux.gpio3()), - 4 => core::mem::transmute(iomux.gpio4()), - 5 => core::mem::transmute(iomux.gpio5()), - 6 => core::mem::transmute(iomux.gpio6()), - 7 => core::mem::transmute(iomux.gpio7()), - 8 => core::mem::transmute(iomux.gpio8()), - 9 => core::mem::transmute(iomux.gpio9()), - 10 => core::mem::transmute(iomux.gpio10()), - 11 => core::mem::transmute(iomux.gpio11()), - 12 => core::mem::transmute(iomux.gpio12()), - 13 => core::mem::transmute(iomux.gpio13()), - 14 => core::mem::transmute(iomux.gpio14()), - 15 => core::mem::transmute(iomux.gpio15()), - 16 => core::mem::transmute(iomux.gpio16()), - 17 => core::mem::transmute(iomux.gpio17()), - 18 => core::mem::transmute(iomux.gpio18()), - 19 => core::mem::transmute(iomux.gpio19()), - 20 => core::mem::transmute(iomux.gpio20()), - 21 => core::mem::transmute(iomux.gpio21()), - 26 => core::mem::transmute(iomux.gpio26()), - 27 => core::mem::transmute(iomux.gpio27()), - 32 => core::mem::transmute(iomux.gpio32()), - 33 => core::mem::transmute(iomux.gpio33()), - 34 => core::mem::transmute(iomux.gpio34()), - 35 => core::mem::transmute(iomux.gpio35()), - 36 => core::mem::transmute(iomux.gpio36()), - 37 => core::mem::transmute(iomux.gpio37()), - 38 => core::mem::transmute(iomux.gpio38()), - 39 => core::mem::transmute(iomux.gpio39()), - 40 => core::mem::transmute(iomux.gpio40()), - 41 => core::mem::transmute(iomux.gpio41()), - 42 => core::mem::transmute(iomux.gpio42()), - 43 => core::mem::transmute(iomux.gpio43()), - 44 => core::mem::transmute(iomux.gpio44()), - 45 => core::mem::transmute(iomux.gpio45()), - 46 => core::mem::transmute(iomux.gpio46()), + 0 => core::mem::transmute::< + &'static crate::peripherals::io_mux::GPIO0, + &'static crate::peripherals::io_mux::GPIO0, + >(iomux.gpio0()), + 1 => core::mem::transmute::< + &'static crate::peripherals::io_mux::GPIO1, + &'static crate::peripherals::io_mux::GPIO0, + >(iomux.gpio1()), + 2 => core::mem::transmute::< + &'static crate::peripherals::io_mux::GPIO2, + &'static crate::peripherals::io_mux::GPIO0, + >(iomux.gpio2()), + 3 => core::mem::transmute::< + &'static crate::peripherals::io_mux::GPIO3, + &'static crate::peripherals::io_mux::GPIO0, + >(iomux.gpio3()), + 4 => core::mem::transmute::< + &'static crate::peripherals::io_mux::GPIO4, + &'static crate::peripherals::io_mux::GPIO0, + >(iomux.gpio4()), + 5 => core::mem::transmute::< + &'static crate::peripherals::io_mux::GPIO5, + &'static crate::peripherals::io_mux::GPIO0, + >(iomux.gpio5()), + 6 => core::mem::transmute::< + &'static crate::peripherals::io_mux::GPIO6, + &'static crate::peripherals::io_mux::GPIO0, + >(iomux.gpio6()), + 7 => core::mem::transmute::< + &'static crate::peripherals::io_mux::GPIO7, + &'static crate::peripherals::io_mux::GPIO0, + >(iomux.gpio7()), + 8 => core::mem::transmute::< + &'static crate::peripherals::io_mux::GPIO8, + &'static crate::peripherals::io_mux::GPIO0, + >(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()), + 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!(), } } diff --git a/esp-hal/src/systimer.rs b/esp-hal/src/systimer.rs index 4ff1a1e9a..b270cfd65 100644 --- a/esp-hal/src/systimer.rs +++ b/esp-hal/src/systimer.rs @@ -39,6 +39,12 @@ use crate::{ target0_conf::TARGET0_CONF_SPEC, target0_hi::TARGET0_HI_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, }, @@ -157,14 +163,26 @@ impl Alarm { systimer.target0_lo(), ), 1 => ( - transmute(systimer.target1_conf()), - transmute(systimer.target1_hi()), - transmute(systimer.target1_lo()), + transmute::<&Reg, &Reg>( + systimer.target1_conf(), + ), + transmute::<&Reg, &Reg>( + systimer.target1_hi(), + ), + transmute::<&Reg, &Reg>( + systimer.target1_lo(), + ), ), 2 => ( - transmute(systimer.target2_conf()), - transmute(systimer.target2_hi()), - transmute(systimer.target2_lo()), + transmute::<&Reg, &Reg>( + systimer.target2_conf(), + ), + transmute::<&Reg, &Reg>( + systimer.target2_hi(), + ), + transmute::<&Reg, &Reg>( + systimer.target2_lo(), + ), ), _ => unreachable!(), };