Hi,
The following is extracted from Documentation/x86/boot.txt,
which show's memory map when booting a kernel.
117 ~ ~ 118 | Protected-mode kernel | 119 100000 +------------------------+ 120 | I/O memory hole | 121 0A0000 +------------------------+ 122 | Reserved for BIOS | Leave as much as possible unused 123 ~ ~ 124 | Command line | (Can also be below the X+10000 mark) 125 X+10000 +------------------------+ 126 | Stack/heap | For use by the kernel real-mode code. 127 X+08000 +------------------------+ 128 | Kernel setup | The kernel real-mode code. 129 | Kernel boot sector | The kernel legacy boot sector. 130 X +------------------------+ 131 | Boot loader | <- Boot sector entry point 0000:7C00 132 001000 +------------------------+ 133 | Reserved for MBR/BIOS | 134 000800 +------------------------+ 135 | Typically used by MBR | 136 000600 +------------------------+ 137 | BIOS use only | 138 000000 +------------------------+
where the address X is as low as the design of the boot loader 141 permits.
The address X is not determined by kernel, so the kernel real-mode code's VMA may not equal to LMA, how kernel solved it??
One more question, in ld script, does the location counter ".", represent VMA??
Thanks.
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies