--- ./Modules/clinic/posixmodule.c.h_orig	2026-07-12 23:19:08.470700654 -0400
+++ ./Modules/clinic/posixmodule.c.h	2026-07-12 23:21:53.347961095 -0400
@@ -9231,7 +9231,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	2026-07-12 23:22:51.131164354 -0400
+++ ./Modules/posixmodule.c	2026-07-12 23:26:31.758643766 -0400
@@ -78,6 +78,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
@@ -2710,7 +2719,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));
-    SET_ITEM(2, _PyLong_FromDev(st->st_dev));
+    SET_ITEM(2, PyLong_FromUnsignedLong(st->st_dev));
 #endif
     SET_ITEM(3, PyLong_FromLong((long)st->st_nlink));
 #if defined(MS_WINDOWS)
