diff --git a/src/hermit.rs b/src/hermit.rs
index 2b470e78d3afe..9363fed788304 100644
--- a/src/hermit.rs
+++ b/src/hermit.rs
@@ -1,15 +1,8 @@
 //! Hermit C type definitions
 
+pub use crate::arch::c_char_def as c_char;
 use crate::prelude::*;
 
-cfg_if! {
-    if #[cfg(any(target_arch = "aarch64", target_arch = "riscv64"))] {
-        pub type c_char = u8;
-    } else {
-        pub type c_char = i8;
-    }
-}
-
 pub type c_schar = i8;
 pub type c_uchar = u8;
 pub type c_short = i16;
diff --git a/src/trusty.rs b/src/trusty.rs
index 60ca11d481613..676a456d892fe 100644
--- a/src/trusty.rs
+++ b/src/trusty.rs
@@ -1,18 +1,10 @@
+pub use crate::arch::c_char_def as c_char;
 use crate::prelude::*;
-
 pub type size_t = usize;
 pub type ssize_t = isize;
 
 pub type off_t = i64;
 
-cfg_if! {
-    if #[cfg(any(target_arch = "aarch64", target_arch = "arm"))] {
-        pub type c_char = u8;
-    } else if #[cfg(target_arch = "x86_64")] {
-        pub type c_char = i8;
-    }
-}
-
 pub type c_schar = i8;
 pub type c_uchar = u8;
 pub type c_short = i16;
diff --git a/src/unix/nuttx/mod.rs b/src/unix/nuttx/mod.rs
index 78ecf3f133505..ed3e1ed8bfa34 100644
--- a/src/unix/nuttx/mod.rs
+++ b/src/unix/nuttx/mod.rs
@@ -1,3 +1,4 @@
+pub use crate::arch::c_char_def as c_char;
 use crate::prelude::*;
 use crate::{in6_addr, in_addr_t, timespec, DIR};
 
@@ -5,17 +6,6 @@ pub type nlink_t = u16;
 pub type ino_t = u16;
 pub type blkcnt_t = u64;
 pub type blksize_t = i16;
-cfg_if! {
-    if #[cfg(any(
-        target_arch = "arm",
-        target_arch = "riscv32",
-        target_arch = "riscv64",
-    ))] {
-        pub type c_char = u8;
-    } else {
-        pub type c_char = i8;
-    }
-}
 pub type c_long = isize;
 pub type c_ulong = usize;
 pub type cc_t = u8;
diff --git a/src/unix/redox/mod.rs b/src/unix/redox/mod.rs
index 7c2e36f8bab98..c557509224437 100644
--- a/src/unix/redox/mod.rs
+++ b/src/unix/redox/mod.rs
@@ -1,12 +1,6 @@
+pub use crate::arch::c_char_def as c_char;
 use crate::prelude::*;
 
-cfg_if! {
-    if #[cfg(target_arch = "aarch64")] {
-        pub type c_char = u8;
-    } else {
-        pub type c_char = i8;
-    }
-}
 pub type wchar_t = i32;
 
 cfg_if! {
diff --git a/src/unix/solarish/mod.rs b/src/unix/solarish/mod.rs
index fa00988dceab6..0f398ca448263 100644
--- a/src/unix/solarish/mod.rs
+++ b/src/unix/solarish/mod.rs
@@ -1,14 +1,8 @@
 use core::mem::size_of;
 
+pub use crate::arch::c_char_def as c_char;
 use crate::prelude::*;
 
-cfg_if! {
-    if #[cfg(target_arch = "aarch64")] {
-        pub type c_char = u8;
-    } else {
-        pub type c_char = i8;
-    }
-}
 pub type c_long = i64;
 pub type c_ulong = u64;
 pub type caddr_t = *mut c_char;