Ignore:
Timestamp:
2016-05-09T15:16:03Z (9 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
147a066
Parents:
fa9f8ad
Message:

Use autogenerated offsets to access multiboot info and memory map

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ia32/src/boot/multiboot.S

    rfa9f8ad r7ba16eb  
    3131#include <abi/asmtool.h>
    3232#include <arch/boot/boot.h>
     33#include <arch/boot/memmap.h>
    3334#include <arch/mm/page.h>
    3435#include <arch/pm.h>
     
    315316                /* Check if memory map flag is present */
    316317                movl (%ebx), %edx
    317                 andl $(1 << 6), %edx
     318                andl $MULTIBOOT_INFO_FLAGS_MMAP, %edx
    318319                jnz use_multiboot_map
    319320                       
     
    323324               
    324325                /* Copy address of the memory map to edx */
    325                 movl 48(%ebx), %edx
     326                movl MULTIBOOT_INFO_OFFSET_MMAP_ADDR(%ebx), %edx
    326327                movl %edx, %ecx
    327328               
    328                 addl 44(%ebx), %ecx
     329                addl MULTIBOOT_INFO_OFFSET_MMAP_LENGTH(%ebx), %ecx
    329330               
    330331                /* Find a free region at least 2M in size */
     
    332333                       
    333334                        /* Is this a free region? */
    334                         cmp $1, 20(%edx)
     335                        cmpl $MEMMAP_MEMORY_AVAILABLE, MULTIBOOT_MEMMAP_OFFSET_MM_INFO + E820MEMMAP_OFFSET_TYPE(%edx)
    335336                        jnz next_region
    336337                       
    337338                        /* Check size */
    338                         cmp $0, 16(%edx)
     339                        cmpl $0, MULTIBOOT_MEMMAP_OFFSET_MM_INFO + E820MEMMAP_OFFSET_SIZE + 4(%edx)
    339340                        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)
    342342                        jbe next_region
    343343                       
    344                         cmp $0, 8(%edx)
     344                        cmpl $0, MULTIBOOT_MEMMAP_OFFSET_MM_INFO + E820MEMMAP_OFFSET_BASE_ADDRESS + 4(%edx)
    345345                        jz found_region
    346346               
     
    354354                next_region_do:
    355355                       
    356                         addl (%edx), %edx
    357                         addl $4, %edx
     356                        addl MULTIBOOT_MEMMAP_OFFSET_SIZE(%edx), %edx
     357                        addl $MULTIBOOT_MEMMAP_SIZE_SIZE, %edx
    358358                        jmp check_memmap_loop
    359359                       
     
    361361                       
    362362                        /* Use end of the found region */
    363                         mov 4(%edx), %ecx
    364                         add 12(%edx), %ecx
     363                        mov MULTIBOOT_MEMMAP_OFFSET_MM_INFO + E820MEMMAP_OFFSET_BASE_ADDRESS(%edx), %ecx
     364                        add MULTIBOOT_MEMMAP_OFFSET_MM_INFO + E820MEMMAP_OFFSET_SIZE(%edx), %ecx
    365365                        sub $(2 * 1024 * 1024), %ecx
    366366                        mov %ecx, free_area
Note: See TracChangeset for help on using the changeset viewer.