• Home
  • Raw
  • Download

Lines Matching +full:linear +full:- +full:mapping +full:- +full:mode

1 .. SPDX-License-Identifier: GPL-2.0
12 real-mode DOS as a mainstream operating system.
28 Protocol 2.02 (Kernel 2.4.0-test3-pre3) New command line protocol.
31 safe for systems which use the EBDA from SMM or 32-bit
35 Protocol 2.03 (Kernel 2.4.18-pre1) Explicitly makes the highest possible
40 Protocol 2.05 (Kernel 2.6.20) Make protected mode kernel relocatable.
54 Protocol 2.09 (Kernel 2.6.26) Added a field of 64-bit physical
68 Protocol 2.13 (Kernel 3.14) Support 32- and 64-bit flags being set in
69 xloadflags to support booting a 64-bit kernel from 32-bit
99 0A0000 +------------------------+
101 09A000 +------------------------+
103 | Stack/heap | For use by the kernel real-mode code.
104 098000 +------------------------+
105 | Kernel setup | The kernel real-mode code.
106 090200 +------------------------+
108 090000 +------------------------+
109 | Protected-mode kernel | The bulk of the kernel image.
110 010000 +------------------------+
111 | Boot loader | <- Boot sector entry point 0000:7C00
112 001000 +------------------------+
114 000800 +------------------------+
116 000600 +------------------------+
118 000000 +------------------------+
120 When using bzImage, the protected-mode kernel was relocated to
121 0x100000 ("high memory"), and the kernel real-mode block (boot sector,
127 It is desirable to keep the "memory ceiling" -- the highest point in
128 low memory touched by the boot loader -- as low as possible, since
146 | Protected-mode kernel |
147 100000 +------------------------+
149 0A0000 +------------------------+
153 X+10000 +------------------------+
154 | Stack/heap | For use by the kernel real-mode code.
155 X+08000 +------------------------+
156 | Kernel setup | The kernel real-mode code.
158 X +------------------------+
159 | Boot loader | <- Boot sector entry point 0000:7C00
160 001000 +------------------------+
162 000800 +------------------------+
164 000600 +------------------------+
166 000000 +------------------------+
171 The Real-Mode Kernel Header
179 real-mode code (boot sector and setup code) and then examine the
180 following header at offset 0x01f1. The real-mode code can total up to
191 01F4/4 2.04+(2) syssize The size of the 32-bit code in 16-byte paras
192 01F8/2 ALL ram_size DO NOT USE - for bootsect.S use only
193 01FA/2 ALL vid_mode Video mode control
200 020C/2 2.00+ start_sys_seg The load-low segment (0x1000) (obsolete)
208 0220/4 2.00+ bootsect_kludge DO NOT USE - for bootsect.S use only
212 0228/4 2.02+ cmd_line_ptr 32-bit pointer to the kernel command line
220 0240/8 2.07+ hardware_subarch_data Subarchitecture-specific data
223 0250/8 2.09+ setup_data 64-bit physical pointer to linked list
226 0260/4 2.10+ init_size Linear memory required during initialization
239 (3) Ignored, but safe to set, for boot protocols 2.02-2.09.
247 Real-mode kernel must be located at 0x90000.
277 The size of the setup code in 512-byte sectors. If this field is
278 0, the real value is 4. The real-mode code consists of the boot
279 sector (always one 512-byte sector) plus the setup code.
299 The size of the protected-mode code in units of 16-byte paragraphs.
397 If set to a nonzero value, contains a pointer to a NUL-terminated
398 human-readable kernel version number string, less 0x200. This can
430 type_of_loader <- 0xE4
431 ext_loader_type <- 0x05
432 ext_loader_ver <- 0x23
438 (0x00 reserved for pre-2.00 bootloader)
440 2 bootsect-loader
446 8 U-Boot
451 D kexec-tools
456 <http://sebastian-plotz.blogspot.de>
474 - If 0, the protected-mode code is loaded at 0x10000.
475 - If 1, the protected-mode code is loaded at 0x100000.
479 - Used internally by the compressed kernel to communicate
482 - If 1, KASLR enabled.
483 - If 0, KASLR disabled.
487 - If 0, print early messages.
488 - If 1, suppress early messages.
498 - This flag is obsolete.
511 Protocol: 2.00-2.01
514 When using protocol 2.00 or 2.01, if the real mode kernel is not
517 the kernel command line) moved in addition to the real-mode kernel
523 if the real-mode code is loaded at 0x90000.
532 The address to jump to in protected mode. This defaults to the load
551 The 32-bit linear address of the initial ramdisk or ramfs. Leave at
580 Set this field to the offset (from the beginning of the real-mode
623 Set this field to the linear address of the kernel command line.
626 same 64K segment as the real-mode code itself.
672 If this field is nonzero, the protected-mode part of the kernel can
693 power-of-two alignment from kernel_alignment down to this alignment.
706 - If 1, this kernel has the legacy 64-bit entry point at 0x200.
710 - If 1, kernel/boot_params/cmdline/ramdisk can be above 4G.
714 - If 1, the kernel supports the 32-bit EFI handoff entry point
719 - If 1, the kernel supports the 64-bit EFI handoff entry point
724 - If 1, the kernel supports kexec EFI boot with EFI runtime support.
763 Type: write (subarch-dependent)
779 If non-zero then this field contains the offset from the beginning
780 of the protected-mode code to the payload.
806 The 64-bit physical pointer to NULL terminated single linked list of
818 Where, the next is a 64-bit physical pointer to the next node of
830 and because it has a 32-bit length field. However, it is important that
880 A non-relocatable kernel will unconditionally move itself and to run
890 This field indicates the amount of linear contiguous memory starting
934 in the uncompressed protected mode region.
951 a long time, for lack of alternatives and -- especially early on -- inertia.
953 available to a BIOS-based loader (setup_data is, though).
956 2-byte jump field, which doubles as a length field for the structure, combined
957 with the size of the "hole" in struct boot_params that a protected-mode loader
964 the kernel image, because it is .bss and has no image-provided content.
979 .long kernel_info_var_len_data - kernel_info
980 .long kernel_info_end - kernel_info
985 .long example_struct_end - example_struct
991 .long example_strings_end - example_strings
997 This way the kernel_info is self-contained blob.
1000 Each variable size data header/magic can be any 4-character string,
1044 From boot protocol version 2.08 onwards the CRC-32 is calculated over
1059 The kernel command line is a null-terminated string. The maximum
1072 - At offset 0x0020 (word), "cmd_line_magic", enter the magic
1075 - At offset 0x0022 (word), "cmd_line_offset", enter the offset
1077 real-mode kernel).
1079 - The kernel command line *must* be within the memory region
1084 Memory Layout of The Real-Mode Code
1087 The real-mode code requires a stack/heap to be set up, as well as
1089 in the real-mode accessible memory in bottom megabyte.
1098 - When loading a zImage kernel ((loadflags & 0x01) == 0).
1099 - When loading a 2.01 or earlier boot protocol kernel.
1102 For the 2.00 and 2.01 boot protocols, the real-mode code
1105 real-mode code must be loaded at 0x90000.
1110 located in the same 64K segment as the real-mode setup code; it is
1114 The kernel command line should not be located below the real-mode
1122 mode segment.
1127 0x0000-0x7fff Real mode kernel
1128 0x8000-0xdfff Stack and heap
1129 0xe000-0xffff Kernel command line
1135 0x0000-0x7fff Real mode kernel
1136 0x8000-0x97ff Stack and heap
1137 0x9800-0x9fff Kernel command line
1142 unsigned long base_ptr; /* base address for real-mode segment */
1161 heap_end_ptr = heap_end - 0x200;
1182 /* A very old kernel MUST have its real-mode code
1186 /* Copy the real-mode kernel */
1195 (64-(setup_sects+1))*512);
1202 The 32-bit (non-real-mode) kernel starts at offset (setup_sects+1)*512
1214 the entire 0x10000-0x90000 range of memory. This means it is pretty
1215 much a requirement for these kernels to load the real-mode part at
1227 Documentation/admin-guide/kernel-parameters.rst to make sure they will not
1230 vga=<mode>
1231 <mode> here is either an integer (in C notation, either
1249 obviously bootloader-dependent, and some boot loaders
1253 user-specified command line:
1257 is obviously bootloader-dependent.
1263 recommended that they are located *first*, before the user-specified
1264 or configuration-specified command line. Otherwise, "init=/bin/sh"
1272 located at *segment* offset 0x20 from the start of the real mode
1273 kernel. This means that if you loaded your real-mode kernel code at
1276 At entry, ds = es = ss should point to the start of the real-mode
1292 /* Set up the real-mode kernel stack */
1303 a demand-loaded module!
1320 A 16-bit real mode far subroutine invoked immediately before
1321 entering protected mode. The default routine disables NMI, so
1325 A 32-bit flat-mode routine *jumped* to immediately after the
1326 transition to protected mode, but before the kernel is
1336 32-bit Boot Protocol
1340 LinuxBIOS, etc, and kexec, the 16-bit real mode setup code in kernel
1341 based on legacy BIOS can not be used, so a 32-bit boot protocol needs
1344 In 32-bit boot protocol, the first step in loading a Linux kernel
1355 boot_params as that of 16-bit boot protocol, the boot loader should
1357 described in chapter Documentation/arch/x86/zero-page.rst.
1360 32/64-bit kernel in the same way as that of 16-bit boot protocol.
1362 In 32-bit boot protocol, the kernel is started by jumping to the
1363 32-bit kernel entry point, which is the start address of loaded
1364 32/64-bit kernel.
1366 At entry, the CPU must be in 32-bit protected mode with paging
1374 64-bit Boot Protocol
1378 and we need a 64-bit boot protocol.
1380 In 64-bit boot protocol, the first step in loading a Linux kernel
1391 boot_params as that of 16-bit boot protocol, the boot loader should
1393 in chapter Documentation/arch/x86/zero-page.rst.
1396 64-bit kernel in the same way as that of 16-bit boot protocol, but
1399 In 64-bit boot protocol, the kernel is started by jumping to the
1400 64-bit kernel entry point, which is the start address of loaded
1401 64-bit kernel plus 0x200.
1403 At entry, the CPU must be in 64-bit mode with paging enabled.
1405 kernel and zero page and command line buffer get ident mapping;
1419 which is hdr->handover_offset bytes from the beginning of
1433 firmware, 'table' is the EFI system table - these are the first two
1435 UEFI specification. 'bp' is the boot loader-allocated boot params.
1439 - hdr.cmd_line_ptr
1440 - hdr.ramdisk_image (if applicable)
1441 - hdr.ramdisk_size (if applicable)
1453 [0] https://github.com/u-boot/u-boot/commit/ec80b4735a593961fe701cc3a5d717d4739b0fd0