Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/amd64/src/cpu/cpu.c

    r9d58539 r811770c  
    7676void cpu_setup_fpu(void)
    7777{
    78         asm volatile (
    79                 "movq %%cr0, %%rax\n"
    80                 "btsq $1, %%rax\n"  /* cr0.mp */
    81                 "btrq $2, %%rax\n"  /* cr0.em */
    82                 "movq %%rax, %%cr0\n"
    83                
    84                 "movq %%cr4, %%rax\n"
    85                 "bts $9, %%rax\n"   /* cr4.osfxsr */
    86                 "movq %%rax, %%cr4\n"
    87                 ::: "%rax"
    88         );
     78        write_cr0((read_cr0() & ~CR0_EM) | CR0_MP);
     79        write_cr4(read_cr4() | CR4_OSFXSR);
    8980}
    9081
     
    9788void fpu_disable(void)
    9889{
    99         asm volatile (
    100                 "mov %%cr0, %%rax\n"
    101                 "bts $3, %%rax\n"
    102                 "mov %%rax, %%cr0\n"
    103                 ::: "%rax"
    104         );
     90        write_cr0(read_cr0() | CR0_TS);
    10591}
    10692
    10793void fpu_enable(void)
    10894{
    109         asm volatile (
    110                 "mov %%cr0, %%rax\n"
    111                 "btr $3, %%rax\n"
    112                 "mov %%rax, %%cr0\n"
    113                 ::: "%rax"
    114         );
     95        write_cr0(read_cr0() & ~CR0_TS);
    11596}
    11697
     
    158139void cpu_print_report(cpu_t* m)
    159140{
    160         printf("cpu%d: (%s family=%d model=%d stepping=%d) %dMHz\n",
     141        printf("cpu%d: (%s family=%d model=%d stepping=%d apicid=%u) %dMHz\n",
    161142            m->id, vendor_str[m->arch.vendor], m->arch.family, m->arch.model,
    162             m->arch.stepping, m->frequency_mhz);
     143            m->arch.stepping, m->arch.id, m->frequency_mhz);
    163144}
    164145
Note: See TracChangeset for help on using the changeset viewer.