Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
Building NT fdisk's boot code -----------------------------
The master boot code is contained in the file x86mboot.c, which is #include'd into fd_nt.c. The boot code is in the form of an array (named x86BootCode) of unsigned chars, which is refered to by code in fd_nt.c when fdisk needs to lay boot code on the disk.
The x86mboot.c file is generated by different means depending on the compilation host (ie, whether you're building on x86 or MIPS).
The following applies to x86 ONLY: ----------------------------------
The master boot code is built from the x86mboot.asm and x86mboot.msg files in i386 by running masm386 over these files to produce x86mboot.obj.
Then link_60 is run over x86mboot.obj to produce x86mboot.com. The boot code is at offset 1280 in this file (1280 = 600h-100h. 600h is where the boot code is assembled, and 100h is where a .com file is loaded by DOS.) It is of length 0x1be (512 byte sector - 64-byte partition table - signature word).
The tool bin2c.exe (in sdktoosl) is run over x86mboot.com to generate i386\x86mboot.c.
The following applies to MIPS ONLY: -----------------------------------
On MIPS, the best we can do is check in the 'finished' product of the x86 process, namely x86mboot.c, into the mips directory (we cannot run masm386 or link_60 on MIPS!). If, however, the i386\x86mboot.asm or .msg files are newer than mips\x86mboot.c, then that means that someone changed the boot code but did not check in the .c file to mips\x86mboot.c. So we generate an error message.
The correct action when receiving this error message is to go to an x86 machine, bget or build the i386\x86mboot.c file, and check that file into mips\x86mboot.c. Then sync on the MIPS machine.
Our build process generates a -I parameter to the compiler based on the compilation environement (ie, -Imips\ or -Ii386\). This allows fdisk to simply '#include "x86mboot.c"' and get either the generated file on x86 or the file under source control for MIPS. This way we maintain at least a semblance of the correct dependencies should the x86mboot.msg file be translated, etc.
|