diff --git a/src/unix/linux_like/linux/gnu/b32/mod.rs b/src/unix/linux_like/linux/gnu/b32/mod.rs
index 2ff3b359900d501b573d7f017d0f342af5f0a5b5..28e9f7fee736483192c340a572a7b726a0a2642d 100644
--- a/src/unix/linux_like/linux/gnu/b32/mod.rs
+++ b/src/unix/linux_like/linux/gnu/b32/mod.rs
@@ -5,22 +5,39 @@ use pthread_mutex_t;
 pub type c_long = i32;
 pub type c_ulong = u32;
 pub type clock_t = i32;
-pub type time_t = i32;
-pub type suseconds_t = i32;
-pub type ino_t = u32;
-pub type off_t = i32;
-pub type blkcnt_t = i32;
-
-pub type fsblkcnt_t = ::c_ulong;
-pub type fsfilcnt_t = ::c_ulong;
-pub type rlim_t = c_ulong;
+
 pub type shmatt_t = ::c_ulong;
 pub type msgqnum_t = ::c_ulong;
 pub type msglen_t = ::c_ulong;
-pub type blksize_t = i32;
 pub type nlink_t = u32;
 pub type __u64 = ::c_ulonglong;
 pub type __fsword_t = i32;
+pub type fsblkcnt64_t = u64;
+pub type fsfilcnt64_t = u64;
+
+cfg_if! {
+    if #[cfg(target_arch = "riscv32")] {
+        pub type time_t = i64;
+        pub type suseconds_t = i64;
+        pub type ino_t = u64;
+        pub type off_t = i64;
+        pub type blkcnt_t = i64;
+        pub type fsblkcnt_t = u64;
+        pub type fsfilcnt_t = u64;
+        pub type rlim_t = u64;
+        pub type blksize_t = i64;
+    } else {
+        pub type time_t = i32;
+        pub type suseconds_t = i32;
+        pub type ino_t = u32;
+        pub type off_t = i32;
+        pub type blkcnt_t = i32;
+        pub type fsblkcnt_t = ::c_ulong;
+        pub type fsfilcnt_t = ::c_ulong;
+        pub type rlim_t = c_ulong;
+        pub type blksize_t = i32;
+    }
+}
 
 s! {
     pub struct stat {
diff --git a/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs b/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs
index 1edca64a98f9c2edd6bdf2156e28ed92bdfd3561..0d54886e3c92864af5f400396e4ae8d058894fa2 100644
--- a/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs
+++ b/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs
@@ -1,23 +1,8 @@
 //! RISC-V-specific definitions for 32-bit linux-like values
 
 pub type c_char = u8;
-pub type c_ulong = u32;
 pub type wchar_t = ::c_int;
 
-pub type nlink_t = ::c_uint;
-pub type fsblkcnt64_t = u64;
-pub type fsfilcnt64_t = u64;
-pub type suseconds_t = i64;
-pub type time_t = i64;
-pub type fsfilcnt_t = u64;
-pub type fsblkcnt_t = u64;
-pub type blksize_t = i64;
-pub type blkcnt_t = i64;
-pub type rlim_t = u64;
-pub type off_t = i64;
-pub type ino_t = u64;
-pub type __u64 = ::c_ulonglong;
-
 s! {
     pub struct pthread_attr_t {
         __size: [::c_ulong; 7],