--- ./Modules/clinic/posixmodule.c.h_orig	2021-02-11 10:46:43.356483657 -0600
+++ ./Modules/clinic/posixmodule.c.h	2021-02-12 05:05:51.243623150 -0600
@@ -6299,7 +6299,11 @@
     if ((_return_value == (dev_t)-1) && PyErr_Occurred()) {
         goto exit;
     }
+#ifdef _AIX
+    return_value = PyLong_FromUnsignedLong(_return_value);
+#else
     return_value = _PyLong_FromDev(_return_value);
+#endif
 
 exit:
     return return_value;
--- ./Modules/posixmodule.c_orig	2024-04-26 05:10:14.492213070 +0000
+++ ./Modules/posixmodule.c	2024-04-26 05:15:41.328743338 +0000
@@ -230,6 +230,15 @@
 #  include <sys/sysmacros.h>
 #endif
 
+#ifdef _AIX
+#undef minor
+#undef major
+#undef makedev
+#define minor minor64
+#define major major64
+#define makedev makedev64
+#endif
+
 #ifdef HAVE_SYS_STAT_H
 #  include <sys/stat.h>
 #endif /* HAVE_SYS_STAT_H */
@@ -2439,7 +2448,7 @@
     static_assert(sizeof(unsigned long long) >= sizeof(st->st_ino),
                   "stat.st_ino is larger than unsigned long long");
     SET_ITEM(1, PyLong_FromUnsignedLongLong(st->st_ino));
-#ifdef MS_WINDOWS
+#if defined(MS_WINDOWS) || defined(_AIX)
     SET_ITEM(2, PyLong_FromUnsignedLong(st->st_dev));
 #else
     SET_ITEM(2, _PyLong_FromDev(st->st_dev));
