Ignore:
File:
1 edited

Legend:

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

    r4bf0926e r17af882  
    2929 */
    3030
    31 #include <abi/asmtool.h>
    3231#include <arch/boot/boot.h>
    3332#include <arch/mm/page.h>
     
    6564
    6665.align 4
     66.global multiboot_image_start
    6767multiboot_header:
    6868        .long MULTIBOOT_HEADER_MAGIC
     
    7575        .long multiboot_image_start
    7676
    77 SYMBOL(multiboot_image_start)
     77multiboot_image_start:
    7878        cli
    7979        cld
     
    168168       
    169169        movl %cr4, %eax
    170         orl $CR4_PAE, %eax
     170        btsl $5, %eax
    171171        movl %eax, %cr4
    172172       
     
    176176       
    177177        /* Enable long mode */
    178         movl $AMD_MSR_EFER, %ecx
     178        movl $EFER_MSR_NUM, %ecx
    179179        rdmsr                     /* read EFER */
    180         orl $AMD_LME, %eax        /* set LME = 1 */
     180        btsl $AMD_LME_FLAG, %eax  /* set LME = 1 */
    181181        wrmsr
    182182       
    183183        /* Enable paging to activate long mode (set CR0.PG = 1) */
    184184        movl %cr0, %eax
    185         orl $CR0_PG, %eax
     185        btsl $31, %eax
    186186        movl %eax, %cr0
    187187       
     
    427427        long_status $status_long
    428428       
    429         /* Call amd64_pre_main(multiboot_eax, multiboot_ebx) */
     429        /* Call arch_pre_main(multiboot_eax, multiboot_ebx) */
    430430        movl multiboot_eax, %edi
    431431        movl multiboot_ebx, %esi
    432        
    433 #ifdef MEMORY_MODEL_large
    434         movabsq $amd64_pre_main, %rax
    435         callq *%rax
    436 #else
    437         callq amd64_pre_main
    438 #endif
    439        
     432        callq arch_pre_main
     433
    440434        long_status $status_main
    441435       
    442436        /* Call main_bsp() */
    443 #ifdef MEMORY_MODEL_large
    444         movabsq $main_bsp, %rax
    445         callq *%rax
    446 #else
    447         callq main_bsp
    448 #endif
     437        callq main_bsp
    449438       
    450439        /* Not reached */
     
    633622        ptl2gen 512 7
    634623
    635 #ifdef MEMORY_MODEL_kernel
    636624.align 4096
    637625ptl_1:
     
    650638        .quad ptl_2_1g + (PTL_WRITABLE | PTL_PRESENT)
    651639
    652 .align 4096
    653 SYMBOL(ptl_0)
     640
     641.align 4096
     642.global ptl_0
     643ptl_0:
    654644        .quad ptl_1 + (PTL_WRITABLE | PTL_PRESENT)
    655645        .fill 510, 8, 0
    656646        .quad ptl_1 + (PTL_WRITABLE | PTL_PRESENT)
    657 #endif
    658 
    659 #ifdef MEMORY_MODEL_large
    660 .align 4096
    661 ptl_1:
    662         /* Identity mapping for [0; 8G) */
    663         .quad ptl_2_0g + (PTL_WRITABLE | PTL_PRESENT)
    664         .quad ptl_2_1g + (PTL_WRITABLE | PTL_PRESENT)
    665         .quad ptl_2_2g + (PTL_WRITABLE | PTL_PRESENT)
    666         .quad ptl_2_3g + (PTL_WRITABLE | PTL_PRESENT)
    667         .quad ptl_2_4g + (PTL_WRITABLE | PTL_PRESENT)
    668         .quad ptl_2_5g + (PTL_WRITABLE | PTL_PRESENT)
    669         .quad ptl_2_6g + (PTL_WRITABLE | PTL_PRESENT)
    670         .quad ptl_2_7g + (PTL_WRITABLE | PTL_PRESENT)
    671         .fill 504, 8, 0
    672 
    673 .align 4096
    674 SYMBOL(ptl_0)
    675         .quad ptl_1 + (PTL_WRITABLE | PTL_PRESENT)
    676         .fill 255, 8, 0
    677         .quad ptl_1 + (PTL_WRITABLE | PTL_PRESENT)
    678         .fill 255, 8, 0
    679 #endif
    680647
    681648.section K_DATA_START, "aw", @progbits
    682649
    683 SYMBOL(bootstrap_idtr)
     650.global bootstrap_idtr
     651bootstrap_idtr:
    684652        .word 0
    685653        .long 0
    686654
    687 SYMBOL(bootstrap_gdtr)
     655.global bootstrap_gdtr
     656bootstrap_gdtr:
    688657        .word GDT_SELECTOR(GDT_ITEMS)
    689658        .long KA2PA(gdt)
    690659
    691 SYMBOL(multiboot_eax)
     660.global multiboot_eax
     661multiboot_eax:
    692662        .long 0
    693663
    694 SYMBOL(multiboot_ebx)
     664.global multiboot_ebx
     665multiboot_ebx:
    695666        .long 0
    696667
Note: See TracChangeset for help on using the changeset viewer.