struct vm_layout {
        unsigned long kaslr_offset;
        unsigned long kaslr_offset_phys;
+       unsigned long identity_base;
        unsigned long identity_size;
 };
 
 
 #define __kaslr_offset         vm_layout.kaslr_offset
 #define __kaslr_offset_phys    vm_layout.kaslr_offset_phys
+#define __identity_base                vm_layout.identity_base
 #define ident_map_size         vm_layout.identity_size
 
 static inline unsigned long kaslr_offset(void)
        return 0;
 }
 
-#define __PAGE_OFFSET          0x0UL
-#define PAGE_OFFSET            0x0UL
+#define __PAGE_OFFSET          __identity_base
+#define PAGE_OFFSET            __PAGE_OFFSET
 
 #define __pa_nodebug(x)                ((unsigned long)(x))
 
 
 struct physmem_info __bootdata(physmem_info);
 
 struct vm_layout __bootdata_preserved(vm_layout);
+EXPORT_SYMBOL_GPL(vm_layout);
 int __bootdata_preserved(__kaslr_enabled);
 unsigned int __bootdata_preserved(zlib_dfltcc_support);
 EXPORT_SYMBOL(zlib_dfltcc_support);