#define I386_PGBYTES 4096 /* bytes per 80386 page */
#define I386_PGSHIFT 12 /* bitshift for pages */
-#ifdef PRIVATE
-#define KERNEL_PAGE_SIZE I386_PGBYTES
-#define KERNEL_PAGE_SHIFT I386_PGSHIFT
-#define KERNEL_PAGE_MASK (KERNEL_PAGE_SIZE-1)
-#endif
-
#define PAGE_SIZE I386_PGBYTES
#define PAGE_SHIFT I386_PGSHIFT
#define PAGE_MASK (PAGE_SIZE - 1)
+#define PAGE_MAX_SHIFT PAGE_SHIFT
+#define PAGE_MAX_SIZE PAGE_SIZE
+#define PAGE_MAX_MASK PAGE_MASK
+
+#define PAGE_MIN_SHIFT PAGE_SHIFT
+#define PAGE_MIN_SIZE PAGE_SIZE
+#define PAGE_MIN_MASK PAGE_MASK
+
#define I386_LPGBYTES 2*1024*1024 /* bytes per large page */
#define I386_LPGSHIFT 21 /* bitshift for large pages */
#define I386_LPGMASK (I386_LPGBYTES-1)
/*
* default top of user stack... it grows down from here
*/
-#define VM_USRSTACK64 ((user_addr_t) 0x00007FFF5FC00000ULL)
+#define VM_USRSTACK64 ((user_addr_t) 0x00007FFEEFC00000ULL)
+
+/*
+ * XXX TODO: Obsolete?
+ */
#define VM_DYLD64 ((user_addr_t) 0x00007FFF5FC00000ULL)
#define VM_LIB64_SHR_DATA ((user_addr_t) 0x00007FFF60000000ULL)
#define VM_LIB64_SHR_TEXT ((user_addr_t) 0x00007FFF80000000ULL)
#ifdef KERNEL_PRIVATE
+#define TEST_PAGE_SIZE_16K FALSE
+#define TEST_PAGE_SIZE_4K TRUE
+
/* Kernel-wide values */
#define KB (1024ULL)
* Maximum physical memory supported.
*/
#define K32_MAXMEM (32*GB)
-#define K64_MAXMEM (128*GB)
+#define K64_MAXMEM (252*GB)
#define KERNEL_MAXMEM K64_MAXMEM
/*
#define KEXT_ALLOC_BASE(x) ((x) - KEXT_ALLOC_MAX_OFFSET)
#define KEXT_ALLOC_SIZE(x) (KEXT_ALLOC_MAX_OFFSET - (x))
-
-#define KERNEL_STACK_SIZE (I386_PGBYTES*4)
+#define VM_KERNEL_ADDRESS(va) ((((vm_address_t)(va))>=VM_MIN_KERNEL_AND_KEXT_ADDRESS) && \
+ (((vm_address_t)(va))<=VM_MAX_KERNEL_ADDRESS))
#define VM_MAP_MIN_ADDRESS MACH_VM_MIN_ADDRESS
#define VM_MAP_MAX_ADDRESS MACH_VM_MAX_ADDRESS
/* FIXME - always leave like this? */
-#define INTSTACK_SIZE (I386_PGBYTES*4)
+#if KASAN
+/* Increase the stack sizes to account for the redzones that get added to every
+ * stack object. */
+# define INTSTACK_SIZE (I386_PGBYTES*4*4)
+# define KERNEL_STACK_SIZE (I386_PGBYTES*4*4)
+#else
+# define INTSTACK_SIZE (I386_PGBYTES*4)
+# define KERNEL_STACK_SIZE (I386_PGBYTES*4)
+#endif
#ifdef MACH_KERNEL_PRIVATE
#define PMAP_SET_CACHE_ATTR(mem, object, cache_attr, batch_pmap_op) \
MACRO_BEGIN \
- pmap_set_cache_attributes((mem)->phys_page, (cache_attr)); \
+ pmap_set_cache_attributes(VM_PAGE_GET_PHYS_PAGE(mem), (cache_attr)); \
(object)->set_cache_attr = TRUE; \
(void) batch_pmap_op; \
MACRO_END