Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/amd64/src/boot/multiboot2.S

    r17af882 r4bf0926e  
    2727 */
    2828
     29#include <abi/asmtool.h>
    2930#include <arch/boot/boot.h>
    3031#include <arch/mm/page.h>
     
    4142
    4243.align 8
    43 .global multiboot2_image_start
    4444multiboot2_header_start:
    4545        .long MULTIBOOT2_HEADER_MAGIC
     
    4949       
    5050        /* Information request tag */
     51        .align 8
    5152        tag_info_req_start:
    5253                .word MULTIBOOT2_TAG_INFO_REQ
     
    6162       
    6263        /* Address tag */
     64        .align 8
    6365        tag_address_start:
    6466                .word MULTIBOOT2_TAG_ADDRESS
     
    7274       
    7375        /* Entry address tag */
     76        .align 8
    7477        tag_entry_address_start:
    7578                .word MULTIBOOT2_TAG_ENTRY_ADDRESS
     
    8083       
    8184        /* Flags tag */
     85        .align 8
    8286        tag_flags_start:
    8387                .word MULTIBOOT2_TAG_FLAGS
     
    8993#ifdef CONFIG_FB
    9094        /* Framebuffer tag */
     95        .align 8
    9196        tag_framebuffer_start:
    9297                .word MULTIBOOT2_TAG_FRAMEBUFFER
     
    100105       
    101106        /* Module alignment tag */
     107        .align 8
    102108        tag_module_align_start:
    103109                .word MULTIBOOT2_TAG_MODULE_ALIGN
     
    108114       
    109115        /* Tag terminator */
     116        .align 8
    110117        tag_terminator_start:
    111118                .word MULTIBOOT2_TAG_TERMINATOR
     
    115122multiboot2_header_end:
    116123
    117 multiboot2_image_start:
     124SYMBOL(multiboot2_image_start)
    118125        cli
    119126        cld
     
    202209       
    203210        movl %cr4, %eax
    204         btsl $5, %eax
     211        orl $CR4_PAE, %eax
    205212        movl %eax, %cr4
    206213       
     
    210217       
    211218        /* Enable long mode */
    212         movl $EFER_MSR_NUM, %ecx
     219        movl $AMD_MSR_EFER, %ecx
    213220        rdmsr                     /* read EFER */
    214         btsl $AMD_LME_FLAG, %eax  /* set LME = 1 */
     221        orl $AMD_LME, %eax        /* set LME = 1 */
    215222        wrmsr
    216223       
    217224        /* Enable paging to activate long mode (set CR0.PG = 1) */
    218225        movl %cr0, %eax
    219         btsl $31, %eax
     226        orl $CR0_PG, %eax
    220227        movl %eax, %cr0
    221228       
     
    243250        movq %rsp, %rbp
    244251       
    245         /* Call arch_pre_main(multiboot_eax, multiboot_ebx) */
     252        /* Call amd64_pre_main(multiboot_eax, multiboot_ebx) */
    246253        movl multiboot_eax, %edi
    247254        movl multiboot_ebx, %esi
    248         callq arch_pre_main
     255       
     256#ifdef MEMORY_MODEL_large
     257        movabsq $amd64_pre_main, %rax
     258        callq *%rax
     259#else
     260        callq amd64_pre_main
     261#endif
    249262       
    250263        /* Call main_bsp() */
    251         callq main_bsp
     264#ifdef MEMORY_MODEL_large
     265        movabsq $main_bsp, %rax
     266        callq *%rax
     267#else
     268        callq main_bsp
     269#endif
    252270       
    253271        /* Not reached */
Note: See TracChangeset for help on using the changeset viewer.