Changeset 7ba16eb in mainline for kernel/arch/ia32/src/boot/multiboot.S
- Timestamp:
- 2016-05-09T15:16:03Z (9 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 147a066
- Parents:
- fa9f8ad
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia32/src/boot/multiboot.S
rfa9f8ad r7ba16eb 31 31 #include <abi/asmtool.h> 32 32 #include <arch/boot/boot.h> 33 #include <arch/boot/memmap.h> 33 34 #include <arch/mm/page.h> 34 35 #include <arch/pm.h> … … 315 316 /* Check if memory map flag is present */ 316 317 movl (%ebx), %edx 317 andl $ (1 << 6), %edx318 andl $MULTIBOOT_INFO_FLAGS_MMAP, %edx 318 319 jnz use_multiboot_map 319 320 … … 323 324 324 325 /* Copy address of the memory map to edx */ 325 movl 48(%ebx), %edx326 movl MULTIBOOT_INFO_OFFSET_MMAP_ADDR(%ebx), %edx 326 327 movl %edx, %ecx 327 328 328 addl 44(%ebx), %ecx329 addl MULTIBOOT_INFO_OFFSET_MMAP_LENGTH(%ebx), %ecx 329 330 330 331 /* Find a free region at least 2M in size */ … … 332 333 333 334 /* Is this a free region? */ 334 cmp $1, 20(%edx)335 cmpl $MEMMAP_MEMORY_AVAILABLE, MULTIBOOT_MEMMAP_OFFSET_MM_INFO + E820MEMMAP_OFFSET_TYPE(%edx) 335 336 jnz next_region 336 337 337 338 /* Check size */ 338 cmp $0, 16(%edx)339 cmpl $0, MULTIBOOT_MEMMAP_OFFSET_MM_INFO + E820MEMMAP_OFFSET_SIZE + 4(%edx) 339 340 jnz next_region 340 341 cmpl $(2 * 1024 * 1024 + 4 * 1024), 12(%edx) 341 cmpl $(2 * 1024 * 1024 + PAGE_SIZE), MULTIBOOT_MEMMAP_OFFSET_MM_INFO + E820MEMMAP_OFFSET_SIZE(%edx) 342 342 jbe next_region 343 343 344 cmp $0, 8(%edx)344 cmpl $0, MULTIBOOT_MEMMAP_OFFSET_MM_INFO + E820MEMMAP_OFFSET_BASE_ADDRESS + 4(%edx) 345 345 jz found_region 346 346 … … 354 354 next_region_do: 355 355 356 addl (%edx), %edx357 addl $ 4, %edx356 addl MULTIBOOT_MEMMAP_OFFSET_SIZE(%edx), %edx 357 addl $MULTIBOOT_MEMMAP_SIZE_SIZE, %edx 358 358 jmp check_memmap_loop 359 359 … … 361 361 362 362 /* Use end of the found region */ 363 mov 4(%edx), %ecx364 add 12(%edx), %ecx363 mov MULTIBOOT_MEMMAP_OFFSET_MM_INFO + E820MEMMAP_OFFSET_BASE_ADDRESS(%edx), %ecx 364 add MULTIBOOT_MEMMAP_OFFSET_MM_INFO + E820MEMMAP_OFFSET_SIZE(%edx), %ecx 365 365 sub $(2 * 1024 * 1024), %ecx 366 366 mov %ecx, free_area
Note:
See TracChangeset
for help on using the changeset viewer.