The AMD64 kernel is loaded with an X86 loader. This is to enable a single loader to dual-boot either an i386 or Amd64 build. The remainder of this text refers to only the i386 version of the loader. There are two new AMD64-specific exports in boot.lib: ARC_STATUS BlAmd64CheckForLongMode( IN ULONG LoadDeviceId, IN OUT PCHAR KernelPath, IN PCHAR KernelFileName ); extern BOOLEAN BlAmd64UseLongMode; BlAmd64CheckForLongMode() is called from the loader. If an AMD64 kernel image is found, then the global BlAmd64UseLongMode is set to TRUE. From this point forward, all images are expected to be AMD64 images. Almost all of the code specific to AMD64 support is found in boot\lib\amd64. At present, the contents of this directory is available to only a few people. However the loader, obviously, must build for everybody. To facilitate this, _X86AMD64_ is defined while building the boot\lib directory if files within the amd64 directory are present on the build machine. If they are not present, then a stub version of BlAmd64CheckForLongMode() is created.