X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/39236c6e673c41db228275375ab7fdb0f837b292..a1c7dba18ef36983396c282fe85292db066e39db:/osfmk/i386/i386_vm_init.c diff --git a/osfmk/i386/i386_vm_init.c b/osfmk/i386/i386_vm_init.c index d5c3db7f0..8a1d753b5 100644 --- a/osfmk/i386/i386_vm_init.c +++ b/osfmk/i386/i386_vm_init.c @@ -54,7 +54,6 @@ * the rights to redistribute these changes. */ -#include #include @@ -101,9 +100,17 @@ vm_offset_t vm_kernel_top; vm_offset_t vm_kernel_stext; vm_offset_t vm_kernel_etext; vm_offset_t vm_kernel_slide; +vm_offset_t vm_hib_base; vm_offset_t vm_kext_base = VM_MIN_KERNEL_AND_KEXT_ADDRESS; vm_offset_t vm_kext_top = VM_MIN_KERNEL_ADDRESS; +vm_offset_t vm_prelink_stext; +vm_offset_t vm_prelink_etext; +vm_offset_t vm_prelink_sinfo; +vm_offset_t vm_prelink_einfo; +vm_offset_t vm_slinkedit; +vm_offset_t vm_elinkedit; + #define MAXLORESERVE (32 * 1024 * 1024) ppnum_t max_ppnum = 0; @@ -133,6 +140,7 @@ vm_offset_t segTEXTB; unsigned long segSizeTEXT; vm_offset_t segDATAB; unsigned long segSizeDATA; vm_offset_t segLINKB; unsigned long segSizeLINK; vm_offset_t segPRELINKB; unsigned long segSizePRELINK; +vm_offset_t segPRELINKINFOB; unsigned long segSizePRELINKINFO; vm_offset_t segHIBB; unsigned long segSizeHIB; vm_offset_t sectCONSTB; unsigned long sectSizeConst; @@ -245,6 +253,8 @@ i386_vm_init(uint64_t maxmem, "__HIB", &segSizeHIB); segPRELINKB = (vm_offset_t) getsegdatafromheader(&_mh_execute_header, "__PRELINK_TEXT", &segSizePRELINK); + segPRELINKINFOB = (vm_offset_t) getsegdatafromheader(&_mh_execute_header, + "__PRELINK_INFO", &segSizePRELINKINFO); segTEXT = getsegbynamefromheader(&_mh_execute_header, "__TEXT"); segDATA = getsegbynamefromheader(&_mh_execute_header, @@ -259,6 +269,7 @@ i386_vm_init(uint64_t maxmem, sHIB = segHIBB; eHIB = segHIBB + segSizeHIB; + vm_hib_base = sHIB; /* Zero-padded from ehib to stext if text is 2M-aligned */ stext = segTEXTB; lowGlo.lgStext = stext; @@ -284,6 +295,7 @@ i386_vm_init(uint64_t maxmem, DBG("segLINKB = %p\n", (void *) segLINKB); DBG("segHIBB = %p\n", (void *) segHIBB); DBG("segPRELINKB = %p\n", (void *) segPRELINKB); + DBG("segPRELINKINFOB = %p\n", (void *) segPRELINKINFOB); DBG("sHIB = %p\n", (void *) sHIB); DBG("eHIB = %p\n", (void *) eHIB); DBG("stext = %p\n", (void *) stext); @@ -298,6 +310,12 @@ i386_vm_init(uint64_t maxmem, vm_kernel_top = (vm_offset_t) &last_kernel_symbol; vm_kernel_stext = stext; vm_kernel_etext = etext; + vm_prelink_stext = segPRELINKB; + vm_prelink_etext = segPRELINKB + segSizePRELINK; + vm_prelink_sinfo = segPRELINKINFOB; + vm_prelink_einfo = segPRELINKINFOB + segSizePRELINKINFO; + vm_slinkedit = segLINKB; + vm_elinkedit = segLINKB + segSizePRELINK; vm_set_page_size();