diff --git a/tests/include/test/arguments.h b/tests/include/test/arguments.h
index 7ff416e..74bbbd5 100644
--- a/tests/include/test/arguments.h
+++ b/tests/include/test/arguments.h
@@ -32,7 +32,7 @@
 
 typedef union {
     size_t len;
-    int32_t s32;
+    intmax_t sint;
 } mbedtls_test_argument_t;
 
 #endif /* TEST_ARGUMENTS_H */
diff --git a/tests/scripts/generate_test_code.py b/tests/scripts/generate_test_code.py
index 263cd90..a3f6937 100755
--- a/tests/scripts/generate_test_code.py
+++ b/tests/scripts/generate_test_code.py
@@ -473,7 +473,7 @@
     typ, _ = m.groups()
     if typ in INTEGER_TYPES:
         args.append('int')
-        args_dispatch.append('((mbedtls_test_argument_t*)params[%d])->s32' % arg_idx)
+        args_dispatch.append('((mbedtls_test_argument_t*)params[%d])->sint' % arg_idx)
         return 1
     if typ in STRING_TYPES:
         args.append('char*')
diff --git a/tests/scripts/test_generate_test_code.py b/tests/scripts/test_generate_test_code.py
index 889b962..7c0ac0c 100755
--- a/tests/scripts/test_generate_test_code.py
+++ b/tests/scripts/test_generate_test_code.py
@@ -487,8 +487,8 @@
         self.assertEqual(local, '')
         self.assertEqual(arg_dispatch,
                          ['(char *) params[0]',
-                          '((mbedtls_test_argument_t*)params[1])->s32',
-                          '((mbedtls_test_argument_t*)params[2])->s32'])
+                          '((mbedtls_test_argument_t*)params[1])->sint',
+                          '((mbedtls_test_argument_t*)params[2])->sint'])
 
     def test_hex_params(self):
         """
@@ -503,7 +503,7 @@
                          '((mbedtls_test_argument_t*)params[2])->len};\n')
         self.assertEqual(arg_dispatch, ['(char *) params[0]',
                                         '&data1',
-                                        '((mbedtls_test_argument_t*)params[3])->s32'])
+                                        '((mbedtls_test_argument_t*)params[3])->sint'])
 
     def test_unsupported_arg(self):
         """
diff --git a/tests/suites/host_test.function b/tests/suites/host_test.function
index 59b18d2..06f391f 100644
--- a/tests/suites/host_test.function
+++ b/tests/suites/host_test.function
@@ -32,21 +32,19 @@
  *
  * \return      0 if success else 1
  */
-int verify_int(char *str, int32_t *p_value)
+int verify_int(char *str, intmax_t *p_value)
 {
     char *end = NULL;
     errno = 0;
+    /* Limit the range to long: for large integers, the test framework will
+     * use expressions anyway. */
     long value = strtol(str, &end, 0);
     if (errno == EINVAL || *end != '\0') {
         mbedtls_fprintf(stderr,
                         "Expected integer for parameter and got: %s\n", str);
         return KEY_VALUE_MAPPING_NOT_FOUND;
     }
-    if (errno == ERANGE
-#if LONG_MAX > 0x7fffffff
-        || value > 0x7fffffffL || value < -0x80000000L
-#endif
-        ) {
+    if (errno == ERANGE) {
         mbedtls_fprintf(stderr, "Integer out of range: %s\n", str);
         return KEY_VALUE_MAPPING_NOT_FOUND;
     }
@@ -222,7 +220,7 @@
                 break;
             }
         } else if (strcmp(type, "int") == 0) {
-            if (verify_int(val, &int_params_store->s32) == 0) {
+            if (verify_int(val, &int_params_store->sint) == 0) {
                 *out++ = (char *) int_params_store++;
             } else {
                 ret = (DISPATCH_INVALID_TEST_DATA);
@@ -245,7 +243,7 @@
             }
         } else if (strcmp(type, "exp") == 0) {
             int exp_id = strtol(val, NULL, 10);
-            if (get_expression(exp_id, &int_params_store->s32) == 0) {
+            if (get_expression(exp_id, &int_params_store->sint) == 0) {
                 *out++ = (char *) int_params_store++;
             } else {
                 ret = (DISPATCH_INVALID_TEST_DATA);
diff --git a/tests/suites/main_test.function b/tests/suites/main_test.function
index 11a009a..6c8d98e 100644
--- a/tests/suites/main_test.function
+++ b/tests/suites/main_test.function
@@ -69,7 +69,7 @@
  *
  * \return       0 if exp_id is found. 1 otherwise.
  */
-int get_expression(int32_t exp_id, int32_t *out_value)
+int get_expression(int32_t exp_id, intmax_t *out_value)
 {
     int ret = KEY_VALUE_MAPPING_FOUND;
 
