Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/amd64/src/asm.S

    r811770c r1a5eca4  
    3333#include <arch/kseg_struct.h>
    3434#include <arch/cpu.h>
    35 #include <arch/smp/apic.h>
    3635
    3736.text
     
    9493       
    9594        /* Flip the ID bit */
    96         xorl $RFLAGS_ID, %edx
     95        btcl $21, %edx
    9796       
    9897        /* Store RFLAGS */
     
    103102        /* Get the ID bit again */
    104103        popq %rdx
    105         andl $RFLAGS_ID, %eax
    106         andl $RFLAGS_ID, %edx
     104        andl $(1 << 21), %eax
     105        andl $(1 << 21), %edx
    107106       
    108107        /* 0 if not supported, 1 if supported */
     
    128127FUNCTION_END(cpuid)
    129128
    130 /** Enable local APIC
    131  *
    132  * Enable local APIC in MSR.
    133  *
    134  */
    135 FUNCTION_BEGIN(enable_l_apic_in_msr)
    136         movl $AMD_MSR_APIC_BASE, %ecx
     129FUNCTION_BEGIN(set_efer_flag)
     130        movl $0xc0000080, %ecx
    137131        rdmsr
    138         orl $(L_APIC_BASE | AMD_APIC_BASE_GE), %eax
     132        btsl %edi, %eax
    139133        wrmsr
    140134        ret
    141 FUNCTION_END(enable_l_apic_in_msr)
     135FUNCTION_END(set_efer_flag)
     136
     137FUNCTION_BEGIN(read_efer_flag)
     138        movl $0xc0000080, %ecx
     139        rdmsr
     140        ret
     141FUNCTION_END(read_efer_flag)
    142142
    143143/*
     
    541541        ret
    542542FUNCTION_END(early_putchar)
     543
Note: See TracChangeset for help on using the changeset viewer.