#[cfg(target_arch = "hexagon")]
const UNWIND_DATA_REG: (i32, i32) = (0, 1); // R0, R1
+#[cfg(target_arch = "riscv64")]
+const UNWIND_DATA_REG: (i32, i32) = (10, 11); // x10, x11
+
// The following code is based on GCC's C and C++ personality routines. For reference, see:
// https://github.com/gcc-mirror/gcc/blob/master/libstdc++-v3/libsupc++/eh_personality.cc
// https://github.com/gcc-mirror/gcc/blob/trunk/libgcc/unwind-c.c
/// - mips64
/// - powerpc
/// - powerpc64
+ /// - riscv64
/// - s390x
/// - sparc64
#[stable(feature = "env", since = "1.0.0")]
pub const ARCH: &'static str = "hexagon";
}
+#[cfg(target_arch = "riscv64")]
+mod arch {
+ pub const ARCH: &'static str = "riscv64";
+}
+
#[cfg(test)]
mod tests {
use super::*;
}
}
-#[cfg(any(target_arch = "mips64", target_arch = "s390x", target_arch = "sparc64"))]
+#[cfg(any(
+ target_arch = "mips64",
+ target_arch = "s390x",
+ target_arch = "sparc64",
+ target_arch = "riscv64"
+))]
mod arch {
pub use libc::{blkcnt_t, blksize_t, ino_t, nlink_t, off_t, stat, time_t};
}
target_arch = "hexagon",
target_arch = "powerpc",
target_arch = "powerpc64",
- target_arch = "s390x"
+ target_arch = "s390x",
+ target_arch = "riscv64"
)
),
all(target_os = "android", any(target_arch = "aarch64", target_arch = "arm")),
target_arch = "hexagon",
target_arch = "powerpc",
target_arch = "powerpc64",
- target_arch = "s390x"
+ target_arch = "s390x",
+ target_arch = "riscv64"
)
),
all(target_os = "android", any(target_arch = "aarch64", target_arch = "arm")),
// target_arch = "mips64",
// target_arch = "s390x",
target_arch = "sparc64",
+ target_arch = "riscv64",
)))] {
$($then_tt)*
} else {
// target_arch = "mips64",
// target_arch = "s390x",
target_arch = "sparc64",
+ target_arch = "riscv64",
)))]
{
$($block_inner)*
target_arch = "aarch64",
target_arch = "mips64",
target_arch = "s390x",
- target_arch = "sparc64"
+ target_arch = "sparc64",
+ target_arch = "riscv64"
)))]
pub const MIN_ALIGN: usize = 16;
#[cfg(target_arch = "sparc64")]
pub const unwinder_private_data_size: usize = 2;
+#[cfg(target_arch = "riscv64")]
+pub const unwinder_private_data_size: usize = 2;
+
#[cfg(target_os = "emscripten")]
pub const unwinder_private_data_size: usize = 20;