<p>1) No, there is no 32 bit entry point.  It expects to be executed at its compiled address, with paging enabled, in long mode.  This is quite different to how the i386 kernel starts up.</p>

<p>2) It's not particularly fussy - but it does need V==P for the first 1GB or so, and the 1GB that the kernel is executing in.  I kept it simple for our loader and mapped first 1GB of physical memory over the entire address space.  All slots of the 4th level page table point to the same level 3 page, which point to the same level 2 page, which is full of 1:1 mappings for 2MB pages for the first 1GB.  This 12KB is discarded after very early in the bootstrap.</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br>Reply to this email directly or <a href="https://github.com/ipxe/ipxe/pull/36#issuecomment-122392569">view it on GitHub</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/AArTVBdVkKkYKpJguBOcIrwmYYfYbjxWks5oeVQfgaJpZM4FLzyb.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
  <div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
    <link itemprop="url" href="https://github.com/ipxe/ipxe/pull/36#issuecomment-122392569"></link>
    <meta itemprop="name" content="View Pull Request"></meta>
  </div>
  <meta itemprop="description" content="View this Pull Request on GitHub"></meta>
</div>