firmware for my Touchscreen E-Paper Input Module for Framework Laptop 16
at main 54 lines 1.6 kB view raw
1#[repr(u8)] 2#[derive(Copy, Clone, Debug, Eq, PartialEq, strum::FromRepr)] 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 CriticalSection = 5, 11 Flash = 6, 12 KvStore = 7, 13} 14 15/// Perform a raw system call. 16#[macro_export] 17#[cfg(all(target_os = "none", target_arch = "arm"))] 18macro_rules! syscall { 19 ( 20 $syscall_num:expr, 21 $( out $r0out:ident )? $( in $r0in:expr )? $(, 22 $( out $r1out:ident )? $( in $r1in:expr )? $(, 23 $( out $r2out:ident )? $( in $r2in:expr )? $(, 24 $( out $r3out:ident )? $( in $r3in:expr )? $(,)? 25 )? 26 )? 27 )? 28 ) => { 29 ::core::arch::asm!( 30 "svc #{syscall_num}", 31 $( in("r0") $r0in as usize, )? 32 $( lateout("r0") $r0out, )? 33 $( 34 $( in("r1") $r1in as usize, )? 35 $( lateout("r1") $r1out, )? 36 $( 37 $( in("r2") $r2in as usize, )? 38 $( lateout("r2") $r2out, )? 39 $( 40 $( in("r3") $r3in as usize, )? 41 $( lateout("r3") $r3out, )? 42 )? 43 )? 44 )? 45 syscall_num = const $syscall_num as u8, 46 ) 47 } 48} 49 50#[macro_export] 51#[cfg(not(all(target_os = "none", target_arch = "arm")))] 52macro_rules! syscall { 53 ( $( $_foo:tt )* ) => { compile_error!("Cannot use eepyOS syscalls on non-eepyOS platforms") }; 54}