#include <linux/types.h>
 #include <linux/spinlock_types.h>
+#include <linux/atomic.h>
 
 struct device;
 struct device_node;
  */
 struct gen_pool_chunk {
        struct list_head next_chunk;    /* next chunk in pool */
-       atomic_t avail;
+       atomic_long_t avail;
        phys_addr_t phys_addr;          /* physical starting address of memory chunk */
        unsigned long start_addr;       /* start address of memory chunk */
        unsigned long end_addr;         /* end address of memory chunk (inclusive) */
 
        chunk->phys_addr = phys;
        chunk->start_addr = virt;
        chunk->end_addr = virt + size - 1;
-       atomic_set(&chunk->avail, size);
+       atomic_long_set(&chunk->avail, size);
 
        spin_lock(&pool->lock);
        list_add_rcu(&chunk->next_chunk, &pool->chunks);
        nbits = (size + (1UL << order) - 1) >> order;
        rcu_read_lock();
        list_for_each_entry_rcu(chunk, &pool->chunks, next_chunk) {
-               if (size > atomic_read(&chunk->avail))
+               if (size > atomic_long_read(&chunk->avail))
                        continue;
 
                start_bit = 0;
 
                addr = chunk->start_addr + ((unsigned long)start_bit << order);
                size = nbits << order;
-               atomic_sub(size, &chunk->avail);
+               atomic_long_sub(size, &chunk->avail);
                break;
        }
        rcu_read_unlock();
                        remain = bitmap_clear_ll(chunk->bits, start_bit, nbits);
                        BUG_ON(remain);
                        size = nbits << order;
-                       atomic_add(size, &chunk->avail);
+                       atomic_long_add(size, &chunk->avail);
                        rcu_read_unlock();
                        return;
                }
 
        rcu_read_lock();
        list_for_each_entry_rcu(chunk, &pool->chunks, next_chunk)
-               avail += atomic_read(&chunk->avail);
+               avail += atomic_long_read(&chunk->avail);
        rcu_read_unlock();
        return avail;
 }