-#define mod_page_state_zone(zone, member, delta) \
- do { \
- unsigned long flags; \
- local_irq_save(flags); \
- if (is_highmem(zone)) \
- __get_cpu_var(page_states).member##_high += (delta);\
- else if (is_normal(zone)) \
- __get_cpu_var(page_states).member##_normal += (delta);\
- else \
- __get_cpu_var(page_states).member##_dma += (delta);\
- local_irq_restore(flags); \
+#define mod_page_state_zone(zone, member, delta) \
+ do { \
+ unsigned offset; \
+ if (is_highmem(zone)) \
+ offset = offsetof(struct page_state, member##_high); \
+ else if (is_normal(zone)) \
+ offset = offsetof(struct page_state, member##_normal); \
+ else \
+ offset = offsetof(struct page_state, member##_dma); \
+ __mod_page_state(offset, (delta)); \