12add0d91Sopenharmony_ci// libc port for HermitCore (https://hermitcore.org)
22add0d91Sopenharmony_ci//
32add0d91Sopenharmony_ci// Ported by Colin Fink <colin.finck@rwth-aachen.de>
42add0d91Sopenharmony_ci//       and Stefan Lankes <slankes@eonerc.rwth-aachen.de>
52add0d91Sopenharmony_ci
62add0d91Sopenharmony_cipub type c_schar = i8;
72add0d91Sopenharmony_cipub type c_uchar = u8;
82add0d91Sopenharmony_cipub type c_short = i16;
92add0d91Sopenharmony_cipub type c_ushort = u16;
102add0d91Sopenharmony_cipub type c_int = i32;
112add0d91Sopenharmony_cipub type c_uint = u32;
122add0d91Sopenharmony_cipub type c_float = f32;
132add0d91Sopenharmony_cipub type c_double = f64;
142add0d91Sopenharmony_cipub type c_longlong = i64;
152add0d91Sopenharmony_cipub type c_ulonglong = u64;
162add0d91Sopenharmony_cipub type intmax_t = i64;
172add0d91Sopenharmony_cipub type uintmax_t = u64;
182add0d91Sopenharmony_ci
192add0d91Sopenharmony_cipub type size_t = usize;
202add0d91Sopenharmony_cipub type ptrdiff_t = isize;
212add0d91Sopenharmony_cipub type intptr_t = isize;
222add0d91Sopenharmony_cipub type uintptr_t = usize;
232add0d91Sopenharmony_cipub type ssize_t = isize;
242add0d91Sopenharmony_ci
252add0d91Sopenharmony_cipub type c_long = i64;
262add0d91Sopenharmony_cipub type c_ulong = u64;
272add0d91Sopenharmony_ci
282add0d91Sopenharmony_cipub type wint_t = u32;
292add0d91Sopenharmony_cipub type wctype_t = i64;
302add0d91Sopenharmony_ci
312add0d91Sopenharmony_cipub type regoff_t = size_t;
322add0d91Sopenharmony_cipub type off_t = c_long;
332add0d91Sopenharmony_ci
342add0d91Sopenharmony_cicfg_if! {
352add0d91Sopenharmony_ci    if #[cfg(target_arch = "aarch64")] {
362add0d91Sopenharmony_ci        mod aarch64;
372add0d91Sopenharmony_ci        pub use self::aarch64::*;
382add0d91Sopenharmony_ci    } else if #[cfg(target_arch = "x86_64")] {
392add0d91Sopenharmony_ci        mod x86_64;
402add0d91Sopenharmony_ci        pub use self::x86_64::*;
412add0d91Sopenharmony_ci    } else {
422add0d91Sopenharmony_ci        // Unknown target_arch
432add0d91Sopenharmony_ci    }
442add0d91Sopenharmony_ci}
452add0d91Sopenharmony_ci
462add0d91Sopenharmony_cicfg_if! {
472add0d91Sopenharmony_ci    if #[cfg(libc_core_cvoid)] {
482add0d91Sopenharmony_ci        pub use ::ffi::c_void;
492add0d91Sopenharmony_ci    } else {
502add0d91Sopenharmony_ci        // Use repr(u8) as LLVM expects `void*` to be the same as `i8*` to help
512add0d91Sopenharmony_ci        // enable more optimization opportunities around it recognizing things
522add0d91Sopenharmony_ci        // like malloc/free.
532add0d91Sopenharmony_ci        #[repr(u8)]
542add0d91Sopenharmony_ci        #[allow(missing_copy_implementations)]
552add0d91Sopenharmony_ci        #[allow(missing_debug_implementations)]
562add0d91Sopenharmony_ci        pub enum c_void {
572add0d91Sopenharmony_ci            // Two dummy variants so the #[repr] attribute can be used.
582add0d91Sopenharmony_ci            #[doc(hidden)]
592add0d91Sopenharmony_ci            __variant1,
602add0d91Sopenharmony_ci            #[doc(hidden)]
612add0d91Sopenharmony_ci            __variant2,
622add0d91Sopenharmony_ci        }
632add0d91Sopenharmony_ci    }
642add0d91Sopenharmony_ci}
65