|
@@ -39,7 +39,21 @@
|
|
|
* Note that object index <obj_idx> is relative to system
|
|
|
* page <PFN> it is stored in, so for each sub-page belonging
|
|
|
* to a zspage, obj_idx starts with 0.
|
|
|
+ *
|
|
|
+ * This is made more complicated by various memory models and PAE.
|
|
|
+ */
|
|
|
+
|
|
|
+#ifndef MAX_PHYSMEM_BITS
|
|
|
+#ifdef CONFIG_HIGHMEM64G
|
|
|
+#define MAX_PHYSMEM_BITS 36
|
|
|
+#else /* !CONFIG_HIGHMEM64G */
|
|
|
+/*
|
|
|
+ * If this definition of MAX_PHYSMEM_BITS is used, OBJ_INDEX_BITS will just
|
|
|
+ * be PAGE_SHIFT
|
|
|
*/
|
|
|
+#define MAX_PHYSMEM_BITS BITS_PER_LONG
|
|
|
+#endif
|
|
|
+#endif
|
|
|
#define _PFN_BITS (MAX_PHYSMEM_BITS - PAGE_SHIFT)
|
|
|
#define OBJ_INDEX_BITS (BITS_PER_LONG - _PFN_BITS)
|
|
|
#define OBJ_INDEX_MASK ((_AC(1, UL) << OBJ_INDEX_BITS) - 1)
|