This could be a basic question. I am using an atomic64_t variable for a counter in a kernel module. This compiled fine on x86_64 machines but not on i386, so included the atomic64_32.h header : if defined(__i386__) #include <asm/atomic64_32.h> #endif This is helping to get the module compiled but fails to load the module saying the atomic64_* symbols are not found? Unknown symbol atomic64_inc Unknown symbol atomic64_set What is the correct way to use atomic64_t types in a kernel module? I tried looking up the exported kernel symbols and it does not list the atomic64* smbols both on i386 and x86_64 archs cat /proc/kallsyms | grep atomic64_inc I guess my basic understanding of kernel symbols and loading is poor. Please refer me to any good documentation if any.