--- ./Modules/clinic/posixmodule.c.h_orig	2025-01-16 04:06:58.862679028 -0500
+++ ./Modules/clinic/posixmodule.c.h	2025-01-16 04:09:43.543764187 -0500
@@ -8074,7 +8074,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	2025-01-16 04:09:53.900788992 -0500
+++ ./Modules/posixmodule.c	2025-01-17 08:55:27.553402420 -0500
@@ -240,6 +240,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 */
@@ -2556,8 +2565,12 @@
     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));
+#if defined(_AIX)
+    SET_ITEM(2, PyLong_FromUnsignedLongLong(st->st_dev));
+#else
     SET_ITEM(2, _PyLong_FromDev(st->st_dev));
 #endif
+#endif
     SET_ITEM(3, PyLong_FromLong((long)st->st_nlink));
 #if defined(MS_WINDOWS)
     SET_ITEM(4, PyLong_FromLong(0));
