diff --git a/linux-user/aarch64/target_resource.h b/linux-user/aarch64/target_resource.h
new file mode 100644
index 000000000000..227259594c00
--- /dev/null
+++ b/linux-user/aarch64/target_resource.h
@@ -0,0 +1 @@
+#include "../generic/target_resource.h"
diff --git a/linux-user/alpha/target_resource.h b/linux-user/alpha/target_resource.h
new file mode 100644
index 000000000000..c9b082faee4a
--- /dev/null
+++ b/linux-user/alpha/target_resource.h
@@ -0,0 +1,21 @@
+#ifndef ALPHA_TARGET_RESOURCE_H
+#define ALPHA_TARGET_RESOURCE_H
+
+#include "../generic/target_resource.h"
+
+#undef TARGET_RLIM_INFINITY
+#define TARGET_RLIM_INFINITY    0x7fffffffffffffffull
+
+#undef TARGET_RLIMIT_NOFILE
+#define TARGET_RLIMIT_NOFILE    6
+
+#undef TARGET_RLIMIT_AS
+#define TARGET_RLIMIT_AS        7
+
+#undef TARGET_RLIMIT_NPROC
+#define TARGET_RLIMIT_NPROC     8
+
+#undef TARGET_RLIMIT_MEMLOCK
+#define TARGET_RLIMIT_MEMLOCK   9
+
+#endif
diff --git a/linux-user/arm/target_resource.h b/linux-user/arm/target_resource.h
new file mode 100644
index 000000000000..227259594c00
--- /dev/null
+++ b/linux-user/arm/target_resource.h
@@ -0,0 +1 @@
+#include "../generic/target_resource.h"
diff --git a/linux-user/cris/target_resource.h b/linux-user/cris/target_resource.h
new file mode 100644
index 000000000000..227259594c00
--- /dev/null
+++ b/linux-user/cris/target_resource.h
@@ -0,0 +1 @@
+#include "../generic/target_resource.h"
diff --git a/linux-user/generic/target_resource.h b/linux-user/generic/target_resource.h
new file mode 100644
index 000000000000..f04c93b12596
--- /dev/null
+++ b/linux-user/generic/target_resource.h
@@ -0,0 +1,37 @@
+/*
+ * Target definitions of RLIMIT_* constants. These may be overridden by an
+ * architecture specific header if needed.
+ */
+
+#ifndef GENERIC_TARGET_RESOURCE_H
+#define GENERIC_TARGET_RESOURCE_H
+
+struct target_rlimit {
+    abi_ulong rlim_cur;
+    abi_ulong rlim_max;
+};
+
+struct target_rlimit64 {
+    uint64_t rlim_cur;
+    uint64_t rlim_max;
+};
+
+#define TARGET_RLIM_INFINITY    ((abi_ulong)-1)
+
+#define TARGET_RLIMIT_CPU               0
+#define TARGET_RLIMIT_FSIZE             1
+#define TARGET_RLIMIT_DATA              2
+#define TARGET_RLIMIT_STACK             3
+#define TARGET_RLIMIT_CORE              4
+#define TARGET_RLIMIT_RSS               5
+#define TARGET_RLIMIT_NPROC             6
+#define TARGET_RLIMIT_NOFILE            7
+#define TARGET_RLIMIT_MEMLOCK           8
+#define TARGET_RLIMIT_AS                9
+#define TARGET_RLIMIT_LOCKS             10
+#define TARGET_RLIMIT_SIGPENDING        11
+#define TARGET_RLIMIT_MSGQUEUE          12
+#define TARGET_RLIMIT_NICE              13
+#define TARGET_RLIMIT_RTPRIO            14
+
+#endif
diff --git a/linux-user/hexagon/target_resource.h b/linux-user/hexagon/target_resource.h
new file mode 100644
index 000000000000..227259594c00
--- /dev/null
+++ b/linux-user/hexagon/target_resource.h
@@ -0,0 +1 @@
+#include "../generic/target_resource.h"
diff --git a/linux-user/hppa/target_resource.h b/linux-user/hppa/target_resource.h
new file mode 100644
index 000000000000..227259594c00
--- /dev/null
+++ b/linux-user/hppa/target_resource.h
@@ -0,0 +1 @@
+#include "../generic/target_resource.h"
diff --git a/linux-user/i386/target_resource.h b/linux-user/i386/target_resource.h
new file mode 100644
index 000000000000..227259594c00
--- /dev/null
+++ b/linux-user/i386/target_resource.h
@@ -0,0 +1 @@
+#include "../generic/target_resource.h"
diff --git a/linux-user/m68k/target_resource.h b/linux-user/m68k/target_resource.h
new file mode 100644
index 000000000000..227259594c00
--- /dev/null
+++ b/linux-user/m68k/target_resource.h
@@ -0,0 +1 @@
+#include "../generic/target_resource.h"
diff --git a/linux-user/microblaze/target_resource.h b/linux-user/microblaze/target_resource.h
new file mode 100644
index 000000000000..227259594c00
--- /dev/null
+++ b/linux-user/microblaze/target_resource.h
@@ -0,0 +1 @@
+#include "../generic/target_resource.h"
diff --git a/linux-user/mips/target_resource.h b/linux-user/mips/target_resource.h
new file mode 100644
index 000000000000..6d131b041db9
--- /dev/null
+++ b/linux-user/mips/target_resource.h
@@ -0,0 +1,24 @@
+#ifndef MIPS_TARGET_RESOURCE_H
+#define MIPS_TARGET_RESOURCE_H
+
+#include "../generic/target_resource.h"
+
+#undef TARGET_RLIM_INFINITY
+#define TARGET_RLIM_INFINITY    0x7fffffffUL
+
+#undef TARGET_RLIMIT_NOFILE
+#define TARGET_RLIMIT_NOFILE    5
+
+#undef TARGET_RLIMIT_AS
+#define TARGET_RLIMIT_AS        6
+
+#undef TARGET_RLIMIT_RSS
+#define TARGET_RLIMIT_RSS       7
+
+#undef TARGET_RLIMIT_NPROC
+#define TARGET_RLIMIT_NPROC     8
+
+#undef TARGET_RLIMIT_MEMLOCK
+#define TARGET_RLIMIT_MEMLOCK   9
+
+#endif
diff --git a/linux-user/mips64/target_resource.h b/linux-user/mips64/target_resource.h
new file mode 100644
index 000000000000..fe29002a12eb
--- /dev/null
+++ b/linux-user/mips64/target_resource.h
@@ -0,0 +1 @@
+#include "../mips/target_resource.h"
diff --git a/linux-user/nios2/target_resource.h b/linux-user/nios2/target_resource.h
new file mode 100644
index 000000000000..227259594c00
--- /dev/null
+++ b/linux-user/nios2/target_resource.h
@@ -0,0 +1 @@
+#include "../generic/target_resource.h"
diff --git a/linux-user/openrisc/target_resource.h b/linux-user/openrisc/target_resource.h
new file mode 100644
index 000000000000..227259594c00
--- /dev/null
+++ b/linux-user/openrisc/target_resource.h
@@ -0,0 +1 @@
+#include "../generic/target_resource.h"
diff --git a/linux-user/ppc/target_resource.h b/linux-user/ppc/target_resource.h
new file mode 100644
index 000000000000..227259594c00
--- /dev/null
+++ b/linux-user/ppc/target_resource.h
@@ -0,0 +1 @@
+#include "../generic/target_resource.h"
diff --git a/linux-user/riscv/target_resource.h b/linux-user/riscv/target_resource.h
new file mode 100644
index 000000000000..227259594c00
--- /dev/null
+++ b/linux-user/riscv/target_resource.h
@@ -0,0 +1 @@
+#include "../generic/target_resource.h"
diff --git a/linux-user/s390x/target_resource.h b/linux-user/s390x/target_resource.h
new file mode 100644
index 000000000000..227259594c00
--- /dev/null
+++ b/linux-user/s390x/target_resource.h
@@ -0,0 +1 @@
+#include "../generic/target_resource.h"
diff --git a/linux-user/sh4/target_resource.h b/linux-user/sh4/target_resource.h
new file mode 100644
index 000000000000..227259594c00
--- /dev/null
+++ b/linux-user/sh4/target_resource.h
@@ -0,0 +1 @@
+#include "../generic/target_resource.h"
diff --git a/linux-user/sparc/target_resource.h b/linux-user/sparc/target_resource.h
new file mode 100644
index 000000000000..d9a2fb814a61
--- /dev/null
+++ b/linux-user/sparc/target_resource.h
@@ -0,0 +1,17 @@
+#ifndef SPARC_TARGET_RESOURCE_H
+#define SPARC_TARGET_RESOURCE_H
+
+#include "../generic/target_resource.h"
+
+#if TARGET_ABI_BITS == 32
+#undef TARGET_RLIM_INFINITY
+#define TARGET_RLIM_INFINITY    0x7fffffffUL
+#endif
+
+#undef TARGET_RLIMIT_NOFILE
+#define TARGET_RLIMIT_NOFILE    6
+
+#undef TARGET_RLIMIT_NPROC
+#define TARGET_RLIMIT_NPROC     7
+
+#endif
diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
index c8690688b5b7..78607effe847 100644
--- a/linux-user/syscall_defs.h
+++ b/linux-user/syscall_defs.h
@@ -717,54 +717,7 @@ typedef struct target_siginfo {
 #define TARGET_TRAP_HWBKPT      (4)     /* hardware breakpoint/watchpoint */
 #define TARGET_TRAP_UNK         (5)     /* undiagnosed trap */
 
-struct target_rlimit {
-        abi_ulong   rlim_cur;
-        abi_ulong   rlim_max;
-};
-
-#if defined(TARGET_ALPHA)
-#define TARGET_RLIM_INFINITY	0x7fffffffffffffffull
-#elif defined(TARGET_MIPS) || (defined(TARGET_SPARC) && TARGET_ABI_BITS == 32)
-#define TARGET_RLIM_INFINITY	0x7fffffffUL
-#else
-#define TARGET_RLIM_INFINITY	((abi_ulong)-1)
-#endif
-
-#define TARGET_RLIMIT_CPU        0
-#define TARGET_RLIMIT_FSIZE      1
-#define TARGET_RLIMIT_DATA       2
-#define TARGET_RLIMIT_STACK      3
-#define TARGET_RLIMIT_CORE       4
-#if defined(TARGET_MIPS)
-#define TARGET_RLIMIT_NOFILE     5
-#define TARGET_RLIMIT_AS         6
-#define TARGET_RLIMIT_RSS        7
-#define TARGET_RLIMIT_NPROC      8
-#define TARGET_RLIMIT_MEMLOCK    9
-#elif defined(TARGET_ALPHA)
-#define TARGET_RLIMIT_RSS        5
-#define TARGET_RLIMIT_NOFILE     6
-#define TARGET_RLIMIT_AS         7
-#define TARGET_RLIMIT_NPROC      8
-#define TARGET_RLIMIT_MEMLOCK    9
-#elif defined(TARGET_SPARC)
-#define TARGET_RLIMIT_RSS        5
-#define TARGET_RLIMIT_NOFILE     6
-#define TARGET_RLIMIT_NPROC      7
-#define TARGET_RLIMIT_MEMLOCK    8
-#define TARGET_RLIMIT_AS         9
-#else
-#define TARGET_RLIMIT_RSS        5
-#define TARGET_RLIMIT_NPROC      6
-#define TARGET_RLIMIT_NOFILE     7
-#define TARGET_RLIMIT_MEMLOCK    8
-#define TARGET_RLIMIT_AS         9
-#endif
-#define TARGET_RLIMIT_LOCKS      10
-#define TARGET_RLIMIT_SIGPENDING 11
-#define TARGET_RLIMIT_MSGQUEUE   12
-#define TARGET_RLIMIT_NICE       13
-#define TARGET_RLIMIT_RTPRIO     14
+#include "target_resource.h"
 
 struct target_pollfd {
     int fd;           /* file descriptor */
@@ -2769,10 +2722,6 @@ struct target_epoll_event {
 #define TARGET_EP_MAX_EVENTS (INT_MAX / sizeof(struct target_epoll_event))
 
 #endif
-struct target_rlimit64 {
-    uint64_t rlim_cur;
-    uint64_t rlim_max;
-};
 
 struct target_ucred {
     uint32_t pid;
diff --git a/linux-user/x86_64/target_resource.h b/linux-user/x86_64/target_resource.h
new file mode 100644
index 000000000000..227259594c00
--- /dev/null
+++ b/linux-user/x86_64/target_resource.h
@@ -0,0 +1 @@
+#include "../generic/target_resource.h"
diff --git a/linux-user/xtensa/target_resource.h b/linux-user/xtensa/target_resource.h
new file mode 100644
index 000000000000..227259594c00
--- /dev/null
+++ b/linux-user/xtensa/target_resource.h
@@ -0,0 +1 @@
+#include "../generic/target_resource.h"
