diff options
author | bors <bors@rust-lang.org> | 2022-02-14 20:10:02 +0000 |
---|---|---|
committer | bors <bors@rust-lang.org> | 2022-02-14 20:10:02 +0000 |
commit | b3c9c696a32bdcd2da53ec5b3389396827a809c7 (patch) | |
tree | aa7b472373da376335d460a9489e40035c6b6cba /src/unix/linux_like/linux/musl | |
parent | e2e056bc50e22dc475a798bb648d117a88298f5f (diff) | |
parent | 3fa2b561e250d090d7e578e74c79116138d2668b (diff) | |
download | rust-libc-b3c9c696a32bdcd2da53ec5b3389396827a809c7.tar.gz |
Auto merge of #2685 - Amanieu:riscv-ucontext, r=Amanieu
Add ucontext_t and mcontext_t for RISC-V Linux
Diffstat (limited to 'src/unix/linux_like/linux/musl')
-rw-r--r-- | src/unix/linux_like/linux/musl/b64/riscv64/align.rs | 44 | ||||
-rw-r--r-- | src/unix/linux_like/linux/musl/b64/riscv64/mod.rs | 18 |
2 files changed, 62 insertions, 0 deletions
diff --git a/src/unix/linux_like/linux/musl/b64/riscv64/align.rs b/src/unix/linux_like/linux/musl/b64/riscv64/align.rs new file mode 100644 index 0000000000..48d152a572 --- /dev/null +++ b/src/unix/linux_like/linux/musl/b64/riscv64/align.rs @@ -0,0 +1,44 @@ +s_no_extra_traits! { + #[allow(missing_debug_implementations)] + pub struct ucontext_t { + pub __uc_flags: ::c_ulong, + pub uc_link: *mut ucontext_t, + pub uc_stack: ::stack_t, + pub uc_sigmask: ::sigset_t, + pub uc_mcontext: mcontext_t, + } + + #[allow(missing_debug_implementations)] + #[repr(align(16))] + pub struct mcontext_t { + pub __gregs: [::c_ulong; 32], + pub __fpregs: __riscv_mc_fp_state, + } + + #[allow(missing_debug_implementations)] + pub union __riscv_mc_fp_state { + pub __f: __riscv_mc_f_ext_state, + pub __d: __riscv_mc_d_ext_state, + pub __q: __riscv_mc_q_ext_state, + } + + #[allow(missing_debug_implementations)] + pub struct __riscv_mc_f_ext_state { + pub __f: [::c_uint; 32], + pub __fcsr: ::c_uint, + } + + #[allow(missing_debug_implementations)] + pub struct __riscv_mc_d_ext_state { + pub __f: [::c_ulonglong; 32], + pub __fcsr: ::c_uint, + } + + #[allow(missing_debug_implementations)] + #[repr(align(16))] + pub struct __riscv_mc_q_ext_state { + pub __f: [::c_ulonglong; 64], + pub __fcsr: ::c_uint, + pub __glibc_reserved: [::c_uint; 3], + } +} diff --git a/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs b/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs index 2036583d5d..5dd34dafc0 100644 --- a/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs +++ b/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs @@ -721,3 +721,21 @@ pub const VMIN: usize = 6; pub const IEXTEN: ::tcflag_t = 0x00008000; pub const TOSTOP: ::tcflag_t = 0x00000100; pub const FLUSHO: ::tcflag_t = 0x00001000; + +pub const NGREG: usize = 32; +pub const REG_PC: usize = 0; +pub const REG_RA: usize = 1; +pub const REG_SP: usize = 2; +pub const REG_TP: usize = 4; +pub const REG_S0: usize = 8; +pub const REG_S1: usize = 9; +pub const REG_A0: usize = 10; +pub const REG_S2: usize = 18; +pub const REG_NARGS: usize = 8; + +cfg_if! { + if #[cfg(libc_align)] { + mod align; + pub use self::align::*; + } +} |