diff --git a/truffle/src/com.oracle.truffle.api/src/com/oracle/truffle/api/InternalResource.java b/truffle/src/com.oracle.truffle.api/src/com/oracle/truffle/api/InternalResource.java
index 15c65a2bd299..68da5d7e31e1 100644
--- a/truffle/src/com.oracle.truffle.api/src/com/oracle/truffle/api/InternalResource.java
+++ b/truffle/src/com.oracle.truffle.api/src/com/oracle/truffle/api/InternalResource.java
@@ -484,7 +484,12 @@ enum OS {
          *
          * @since 23.1
          */
-        WINDOWS("windows");
+        WINDOWS("windows"),
+
+        /**
+         * The IBM z/OS operating system.
+         */
+        ZOS("z/OS");
 
         private final String id;
 
@@ -517,6 +522,8 @@ public static OS getCurrent() {
                 return DARWIN;
             } else if (os.toLowerCase().startsWith("windows")) {
                 return WINDOWS;
+            } else if (os.equalsIgnoreCase("z/OS")) {
+                return ZOS;
             } else {
                 throw CompilerDirectives.shouldNotReachHere("Unsupported OS name " + os);
             }
@@ -542,7 +549,13 @@ enum CPUArchitecture {
          *
          * @since 23.1
          */
-        AMD64("amd64");
+        AMD64("amd64"),
+
+        /**
+         * The IBM s390x 64-bit architecture.
+         *
+         */
+        S390X("s390x");
 
         private final String id;
 
@@ -573,6 +586,7 @@ public static CPUArchitecture getCurrent() {
             return switch (arch) {
                 case "amd64", "x86_64" -> AMD64;
                 case "aarch64", "arm64" -> AARCH64;
+                case "s390x" -> S390X;
                 default -> throw CompilerDirectives.shouldNotReachHere("Unsupported CPU architecture " + arch);
             };
         }
diff --git a/truffle/src/com.oracle.truffle.polyglot/src/com/oracle/truffle/polyglot/InternalResourceRoots.java b/truffle/src/com.oracle.truffle.polyglot/src/com/oracle/truffle/polyglot/InternalResourceRoots.java
index de3fda5ee1d2..208dd378deeb 100644
--- a/truffle/src/com.oracle.truffle.polyglot/src/com/oracle/truffle/polyglot/InternalResourceRoots.java
+++ b/truffle/src/com.oracle.truffle.polyglot/src/com/oracle/truffle/polyglot/InternalResourceRoots.java
@@ -339,6 +339,7 @@ private static ResolvedCacheFolder findCacheRootDefault() {
                 yield userCacheDir;
             }
             case WINDOWS -> new ResolvedCacheFolder(userHome.resolve(Path.of("AppData", "Local")), "user home", userHome);
+            case ZOS -> new ResolvedCacheFolder(userHome.resolve(".cache"), "user home", userHome);
         };
         return container.resolve("org.graalvm.polyglot");
     }