From 157ac25cc09ac65fdcadf02ffd5e797841a68cb3 Mon Sep 17 00:00:00 2001 From: Dan Johnson Date: Tue, 18 Apr 2023 14:20:25 -0700 Subject: fuchsia: add definitions for riscv64 --- src/fuchsia/aarch64.rs | 1 + src/fuchsia/mod.rs | 3 +++ src/fuchsia/riscv64.rs | 44 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 src/fuchsia/riscv64.rs diff --git a/src/fuchsia/aarch64.rs b/src/fuchsia/aarch64.rs index 259893c0fa..33e3934d66 100644 --- a/src/fuchsia/aarch64.rs +++ b/src/fuchsia/aarch64.rs @@ -62,5 +62,6 @@ s! { } } +// From https://cs.opensource.google/fuchsia/fuchsia/+/main:zircon/third_party/ulib/musl/include/bits/signal.h;l=20-21;drc=0827b18ab9540c46f8037f407d17ea15a79e9ba7 pub const MINSIGSTKSZ: ::size_t = 6144; pub const SIGSTKSZ: ::size_t = 12288; diff --git a/src/fuchsia/mod.rs b/src/fuchsia/mod.rs index ea1ae466b2..6b12185413 100644 --- a/src/fuchsia/mod.rs +++ b/src/fuchsia/mod.rs @@ -4260,6 +4260,9 @@ cfg_if! { } else if #[cfg(any(target_arch = "x86_64"))] { mod x86_64; pub use self::x86_64::*; + } else if #[cfg(any(target_arch = "riscv64"))] { + mod riscv64; + pub use self::riscv64::*; } else { // Unknown target_arch } diff --git a/src/fuchsia/riscv64.rs b/src/fuchsia/riscv64.rs new file mode 100644 index 0000000000..de2b7197d7 --- /dev/null +++ b/src/fuchsia/riscv64.rs @@ -0,0 +1,44 @@ +// From psABI Calling Convention for RV64 +pub type c_char = u8; +pub type __u64 = ::c_ulonglong; +pub type wchar_t = i32; + +pub type nlink_t = ::c_ulong; +pub type blksize_t = ::c_long; + +pub type stat64 = stat; +s! { + pub struct stat { + pub st_dev: ::dev_t, + pub st_ino: ::ino_t, + pub st_nlink: ::nlink_t, + pub st_mode: ::mode_t, + pub st_uid: ::uid_t, + pub st_gid: ::gid_t, + __pad0: ::c_int, + pub st_rdev: ::dev_t, + pub st_size: ::off_t, + pub st_blksize: ::blksize_t, + pub st_blocks: ::blkcnt_t, + pub st_atime: ::time_t, + pub st_atime_nsec: ::c_long, + pub st_mtime: ::time_t, + pub st_mtime_nsec: ::c_long, + pub st_ctime: ::time_t, + pub st_ctime_nsec: ::c_long, + __unused: [::c_long; 3], + } + + // Not actually used, IPC calls just return ENOSYS + pub struct ipc_perm { + pub __ipc_perm_key: ::key_t, + pub uid: ::uid_t, + pub gid: ::gid_t, + pub cuid: ::uid_t, + pub cgid: ::gid_t, + pub mode: ::mode_t, + pub __seq: ::c_ushort, + __unused1: ::c_ulong, + __unused2: ::c_ulong, + } +} -- cgit v1.2.1