mirror of
https://github.com/reactos/reactos.git
synced 2025-01-15 18:43:27 +00:00
21c51eed05
- Introduce "Relocator16Boot()". So far its aim is just to correctly set the CPU state (segments, registers, flags) to what is expected by a given boot image before running it. This function can be seen as the embryonic state of a future boot relocator (see e.g. GRUB or SYSLINUX) that would also relocate the boot image at the correct places. (Such feature is needed when boot images have to be loaded in memory areas that cover where the boot loader is in memory.) - Implement ChainLoadBiosBootSectorCode() around it. - Replace BootOldLinuxKernel() and BootNewLinuxKernel() by a new BootLinuxKernel() function (in assembly) that relocates the kernel to a given position and then boot it, using Relocator16Boot(). Ideally the relocation should be done by a future boot relocator... Implementation notes for Relocator16Boot(): =========================================== For setting the CPU state the function is based on a similar code as the Int386() helper, namely it takes a pointer to REGS structure and pass this information through the 32->16 bits call before setting the CPU state in accordance. New stack segment/pointer and code segment/pointer are also specified. For passing these values through the 32->16 bits call the 16-bit BSS memory offsets "BSS_CallbackReturn" and "BSS_RealModeEntry" (respectively) are reused. |
||
---|---|---|
.. | ||
armllb | ||
bcd | ||
bgfx | ||
bootdata | ||
environ | ||
freeldr | ||
CMakeLists.txt |