diff --git a/pyopencl/cffi_cl.py b/pyopencl/cffi_cl.py
index 367fe9813ed8a71e49881e3174d70304cab9f86a..8c67c3947d597dae74f35d67c5a5667c5b88a5e4 100644
--- a/pyopencl/cffi_cl.py
+++ b/pyopencl/cffi_cl.py
@@ -459,7 +459,7 @@ _locals = locals()
 
 
 # TODO: constant values are cl_ulong
-@_ffi.callback('void (*)(const char*, const char* name, unsigned long value)')
+@_ffi.callback('void (*)(const char*, const char* name, int64_t value)')
 def _constant_callback(type_, name, value):
     setattr(_locals[_ffi_pystr(type_)], _ffi_pystr(name), value)  # noqa
 
diff --git a/src/c_wrapper/wrap_cl_core.h b/src/c_wrapper/wrap_cl_core.h
index 0cae572ab211743350a9ad05ac22ecf0226b5027..6b53485b9f8d37b63c39f7eec3149c4c63641874 100644
--- a/src/c_wrapper/wrap_cl_core.h
+++ b/src/c_wrapper/wrap_cl_core.h
@@ -56,7 +56,7 @@ void set_py_funcs(int (*_gc)(), void *(*_ref)(void*), void (*_deref)(void*),
 int have_gl();
 
 unsigned bitlog2(unsigned long v);
-void populate_constants(void(*add)(const char*, const char*, unsigned long value));
+void populate_constants(void(*add)(const char*, const char*, int64_t value));
 int get_debug();
 void set_debug(int debug);
 
diff --git a/src/c_wrapper/wrap_constants.cpp b/src/c_wrapper/wrap_constants.cpp
index 952d3b51b063529d7f3d603f0f9fac68fbf9e77f..fa0695a6640716e0d2f4a754aad2ac691b373b86 100644
--- a/src/c_wrapper/wrap_constants.cpp
+++ b/src/c_wrapper/wrap_constants.cpp
@@ -2,7 +2,7 @@
 #include <iostream>
 
 extern "C"
-void populate_constants(void(*add)(const char*, const char*, unsigned long value))
+void populate_constants(void(*add)(const char*, const char*, int64_t value))
 {
 #define _ADD_ATTR(TYPE, PREFIX, NAME, SUFFIX, ...)      \
       add(TYPE, #NAME, CL_##PREFIX##NAME##SUFFIX)