firmware for my Touchscreen E-Paper Input Module for Framework Laptop 16
0

Configure Feed

Select the types of activity you want to include in your feed.

1#[repr(u8)] 2#[derive(Copy, Clone, Debug, Eq, PartialEq)] 3#[cfg_attr(feature = "defmt", derive(defmt::Format))] 4pub enum SyscallNumber { 5 Misc = 0, 6 Image = 1, 7 Input = 2, 8 Usb = 3, 9 Exec = 4, 10} 11 12impl TryFrom<u8> for SyscallNumber { 13 type Error = (); 14 15 fn try_from(value: u8) -> Result<Self, Self::Error> { 16 match value { 17 x if x == SyscallNumber::Misc as u8 => Ok(SyscallNumber::Misc), 18 x if x == SyscallNumber::Image as u8 => Ok(SyscallNumber::Image), 19 x if x == SyscallNumber::Input as u8 => Ok(SyscallNumber::Input), 20 x if x == SyscallNumber::Usb as u8 => Ok(SyscallNumber::Usb), 21 x if x == SyscallNumber::Exec as u8 => Ok(SyscallNumber::Exec), 22 _ => Err(()), 23 } 24 } 25} 26 27/// Perform a raw system call. 28#[macro_export] 29macro_rules! syscall { 30 ( 31 $syscall_num:expr, 32 $( out $r0out:ident )? $( in $r0in:expr )? $(, 33 $( out $r1out:ident )? $( in $r1in:expr )? $(, 34 $( out $r2out:ident )? $( in $r2in:expr )? $(, 35 $( out $r3out:ident )? $( in $r3in:expr )? $(,)? 36 )? 37 )? 38 )? 39 ) => { 40 ::core::arch::asm!( 41 "svc #{syscall_num}", 42 $( in("r0") $r0in as usize, )? 43 $( lateout("r0") $r0out, )? 44 $( 45 $( in("r1") $r1in as usize, )? 46 $( lateout("r1") $r1out, )? 47 $( 48 $( in("r2") $r2in as usize, )? 49 $( lateout("r2") $r2out, )? 50 $( 51 $( in("r3") $r3in as usize, )? 52 $( lateout("r3") $r3out, )? 53 )? 54 )? 55 )? 56 syscall_num = const $syscall_num as u8, 57 ) 58 } 59}