-#define SHARED_REGION_BASE_I386 0x90000000ULL
-#define SHARED_REGION_SIZE_I386 0x20000000ULL
-#define SHARED_REGION_NESTING_BASE_I386 0x90000000ULL
-#define SHARED_REGION_NESTING_SIZE_I386 0x20000000ULL
-#define SHARED_REGION_NESTING_MIN_I386 0x00020000ULL
-#define SHARED_REGION_NESTING_MAX_I386 0xFFFE0000ULL
-
-#define SHARED_REGION_BASE_X86_64 0x00007FFF60000000ULL
-#define SHARED_REGION_SIZE_X86_64 0x000000009FE00000ULL
-#define SHARED_REGION_NESTING_BASE_X86_64 0x00007FFF60000000ULL
-#define SHARED_REGION_NESTING_SIZE_X86_64 0x000000009FE00000ULL
-#define SHARED_REGION_NESTING_MIN_X86_64 0x0000000000020000ULL
-#define SHARED_REGION_NESTING_MAX_X86_64 0xFFFFFFFFFFFE0000ULL
-
-#define SHARED_REGION_BASE_PPC 0x90000000ULL
-#define SHARED_REGION_SIZE_PPC 0x20000000ULL
-#define SHARED_REGION_NESTING_BASE_PPC 0x90000000ULL
-#define SHARED_REGION_NESTING_SIZE_PPC 0x10000000ULL
-#define SHARED_REGION_NESTING_MIN_PPC 0x10000000ULL
-#define SHARED_REGION_NESTING_MAX_PPC 0x10000000ULL
-
-#define SHARED_REGION_BASE_PPC64 0x00007FFF60000000ULL
-#define SHARED_REGION_SIZE_PPC64 0x00000000A0000000ULL
-#define SHARED_REGION_NESTING_BASE_PPC64 0x00007FFF60000000ULL
-#define SHARED_REGION_NESTING_SIZE_PPC64 0x00000000A0000000ULL
-#define SHARED_REGION_NESTING_MIN_PPC64 0x0000000010000000ULL
-#define SHARED_REGION_NESTING_MAX_PPC64 0x0000000010000000ULL
-
-#define SHARED_REGION_BASE_ARM 0x30000000ULL
-#define SHARED_REGION_SIZE_ARM 0x10000000ULL
-#define SHARED_REGION_NESTING_BASE_ARM 0x30000000ULL
-#define SHARED_REGION_NESTING_SIZE_ARM 0x08000000ULL
-#define SHARED_REGION_NESTING_MIN_ARM ?
-#define SHARED_REGION_NESTING_MAX_ARM ?
-
-/*
+#define SHARED_REGION_BASE_I386 0x90000000ULL
+#define SHARED_REGION_SIZE_I386 0x20000000ULL
+#define SHARED_REGION_NESTING_BASE_I386 0x90000000ULL
+#define SHARED_REGION_NESTING_SIZE_I386 0x20000000ULL
+#define SHARED_REGION_NESTING_MIN_I386 0x00200000ULL
+#define SHARED_REGION_NESTING_MAX_I386 0xFFE00000ULL
+
+#define SHARED_REGION_BASE_X86_64 0x00007FFF00000000ULL
+#define SHARED_REGION_SIZE_X86_64 0x00000000FFE00000ULL
+#define SHARED_REGION_NESTING_BASE_X86_64 0x00007FFF00000000ULL
+#define SHARED_REGION_NESTING_SIZE_X86_64 0x00000000FFE00000ULL
+#define SHARED_REGION_NESTING_MIN_X86_64 0x0000000000200000ULL
+#define SHARED_REGION_NESTING_MAX_X86_64 0xFFFFFFFFFFE00000ULL
+
+#define SHARED_REGION_BASE_PPC 0x90000000ULL
+#define SHARED_REGION_SIZE_PPC 0x20000000ULL
+#define SHARED_REGION_NESTING_BASE_PPC 0x90000000ULL
+#define SHARED_REGION_NESTING_SIZE_PPC 0x10000000ULL
+#define SHARED_REGION_NESTING_MIN_PPC 0x10000000ULL
+#define SHARED_REGION_NESTING_MAX_PPC 0x10000000ULL
+
+#define SHARED_REGION_BASE_PPC64 0x00007FFF60000000ULL
+#define SHARED_REGION_SIZE_PPC64 0x00000000A0000000ULL
+#define SHARED_REGION_NESTING_BASE_PPC64 0x00007FFF60000000ULL
+#define SHARED_REGION_NESTING_SIZE_PPC64 0x00000000A0000000ULL
+#define SHARED_REGION_NESTING_MIN_PPC64 0x0000000010000000ULL
+#define SHARED_REGION_NESTING_MAX_PPC64 0x0000000010000000ULL
+
+#define SHARED_REGION_BASE_ARM 0x40000000ULL
+#define SHARED_REGION_SIZE_ARM 0x40000000ULL
+#define SHARED_REGION_NESTING_BASE_ARM 0x40000000ULL
+#define SHARED_REGION_NESTING_SIZE_ARM 0x40000000ULL
+#define SHARED_REGION_NESTING_MIN_ARM ?
+#define SHARED_REGION_NESTING_MAX_ARM ?
+
+#define SHARED_REGION_BASE_ARM64_32 0x1A000000ULL
+#define SHARED_REGION_SIZE_ARM64_32 0x40000000ULL
+#define SHARED_REGION_NESTING_BASE_ARM64_32 0x1A000000ULL
+#define SHARED_REGION_NESTING_SIZE_ARM64_32 0x40000000ULL
+#define SHARED_REGION_NESTING_MIN_ARM64_32 ?
+#define SHARED_REGION_NESTING_MAX_ARM64_32 ?
+
+#ifdef XNU_KERNEL_PRIVATE
+/* ARM64_TODO: move to higher memory */
+#endif
+#define SHARED_REGION_BASE_ARM64 0x180000000ULL
+#define SHARED_REGION_SIZE_ARM64 0x100000000ULL
+#define SHARED_REGION_NESTING_BASE_ARM64 0x180000000ULL
+#define SHARED_REGION_NESTING_SIZE_ARM64 0x100000000ULL
+#define SHARED_REGION_NESTING_MIN_ARM64 ?
+#define SHARED_REGION_NESTING_MAX_ARM64 ?
+
+#if defined(__i386__)
+#define SHARED_REGION_BASE SHARED_REGION_BASE_I386
+#define SHARED_REGION_SIZE SHARED_REGION_SIZE_I386
+#define SHARED_REGION_NESTING_BASE SHARED_REGION_NESTING_BASE_I386
+#define SHARED_REGION_NESTING_SIZE SHARED_REGION_NESTING_SIZE_I386
+#define SHARED_REGION_NESTING_MIN SHARED_REGION_NESTING_MIN_I386
+#define SHARED_REGION_NESTING_MAX SHARED_REGION_NESTING_MAX_I386
+#elif defined(__x86_64__)
+#define SHARED_REGION_BASE SHARED_REGION_BASE_X86_64
+#define SHARED_REGION_SIZE SHARED_REGION_SIZE_X86_64
+#define SHARED_REGION_NESTING_BASE SHARED_REGION_NESTING_BASE_X86_64
+#define SHARED_REGION_NESTING_SIZE SHARED_REGION_NESTING_SIZE_X86_64
+#define SHARED_REGION_NESTING_MIN SHARED_REGION_NESTING_MIN_X86_64
+#define SHARED_REGION_NESTING_MAX SHARED_REGION_NESTING_MAX_X86_64
+#elif defined(__arm__)
+#define SHARED_REGION_BASE SHARED_REGION_BASE_ARM
+#define SHARED_REGION_SIZE SHARED_REGION_SIZE_ARM
+#define SHARED_REGION_NESTING_BASE SHARED_REGION_NESTING_BASE_ARM
+#define SHARED_REGION_NESTING_SIZE SHARED_REGION_NESTING_SIZE_ARM
+#define SHARED_REGION_NESTING_MIN SHARED_REGION_NESTING_MIN_ARM
+#define SHARED_REGION_NESTING_MAX SHARED_REGION_NESTING_MAX_ARM
+#elif defined(__arm64__) && !defined(__LP64__)
+#define SHARED_REGION_BASE SHARED_REGION_BASE_ARM64_32
+#define SHARED_REGION_SIZE SHARED_REGION_SIZE_ARM64_32
+#define SHARED_REGION_NESTING_BASE SHARED_REGION_NESTING_BASE_ARM64_32
+#define SHARED_REGION_NESTING_SIZE SHARED_REGION_NESTING_SIZE_ARM64_32
+#define SHARED_REGION_NESTING_MIN SHARED_REGION_NESTING_MIN_ARM64_32
+#define SHARED_REGION_NESTING_MAX SHARED_REGION_NESTING_MAX_ARM64_32
+#elif defined(__arm64__) && defined(__LP64__)
+#define SHARED_REGION_BASE SHARED_REGION_BASE_ARM64
+#define SHARED_REGION_SIZE SHARED_REGION_SIZE_ARM64
+#define SHARED_REGION_NESTING_BASE SHARED_REGION_NESTING_BASE_ARM64
+#define SHARED_REGION_NESTING_SIZE SHARED_REGION_NESTING_SIZE_ARM64
+#define SHARED_REGION_NESTING_MIN SHARED_REGION_NESTING_MIN_ARM64
+#define SHARED_REGION_NESTING_MAX SHARED_REGION_NESTING_MAX_ARM64
+#endif
+
+#ifdef KERNEL_PRIVATE
+
+/*
+ * This is routine sets the current source of power.
+ * Arguments:
+ * 0 if it is external source (connected to power )
+ * 1 if it is internal power source ie battery
+ */
+
+void post_sys_powersource(int);
+
+#endif /* KERNEL_PRIVATE */
+/*