Ignore:
File:
1 edited

Legend:

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

    rdc0b964 radd04f7  
    3838
    3939#include <arch.h>
    40 #include <typedefs.h>
     40#include <arch/types.h>
    4141#include <print.h>
    4242#include <fpu_context.h>
     
    4949 * Contains only non-MP-Specification specific SMP code.
    5050 */
    51 #define AMD_CPUID_EBX  UINT32_C(0x68747541)
    52 #define AMD_CPUID_ECX  UINT32_C(0x444d4163)
    53 #define AMD_CPUID_EDX  UINT32_C(0x69746e65)
     51#define AMD_CPUID_EBX  0x68747541
     52#define AMD_CPUID_ECX  0x444d4163
     53#define AMD_CPUID_EDX  0x69746e65
    5454
    55 #define INTEL_CPUID_EBX  UINT32_C(0x756e6547)
    56 #define INTEL_CPUID_ECX  UINT32_C(0x6c65746e)
    57 #define INTEL_CPUID_EDX  UINT32_C(0x49656e69)
     55#define INTEL_CPUID_EBX  0x756e6547
     56#define INTEL_CPUID_ECX  0x6c65746e
     57#define INTEL_CPUID_EDX  0x49656e69
    5858
    5959
     
    6464};
    6565
    66 static const char *vendor_str[] = {
     66static char *vendor_str[] = {
    6767        "Unknown Vendor",
    6868        "AMD",
     
    9292void cpu_arch_init(void)
    9393{
     94        cpuid_feature_info fi;
    9495        cpuid_extended_feature_info efi;
    9596        cpu_info_t info;
     
    101102        CPU->fpu_owner = NULL;
    102103       
    103         cpuid(INTEL_CPUID_STANDARD, &info);
     104        cpuid(1, &info);
    104105       
    105         CPU->arch.fi.word = info.cpuid_edx;
     106        fi.word = info.cpuid_edx;
    106107        efi.word = info.cpuid_ecx;
    107108       
    108         if (CPU->arch.fi.bits.fxsr)
     109        if (fi.bits.fxsr)
    109110                fpu_fxsr();
    110111        else
    111112                fpu_fsr();
    112113       
    113         if (CPU->arch.fi.bits.sse) {
     114        if (fi.bits.sse) {
    114115                asm volatile (
    115116                        "mov %%cr4, %[help]\n"
     
    121122        }
    122123       
    123         if (CPU->arch.fi.bits.sep) {
    124                 /* Setup fast SYSENTER/SYSEXIT syscalls */
    125                 syscall_setup_cpu();
    126         }
     124        /* Setup fast SYSENTER/SYSEXIT syscalls */
     125        syscall_setup_cpu();
    127126}
    128127
     
    133132        CPU->arch.vendor = VendorUnknown;
    134133        if (has_cpuid()) {
    135                 cpuid(INTEL_CPUID_LEVEL, &info);
     134                cpuid(0, &info);
    136135
    137136                /*
     
    140139                if ((info.cpuid_ebx == AMD_CPUID_EBX)
    141140                    && (info.cpuid_ecx == AMD_CPUID_ECX)
    142                     && (info.cpuid_edx == AMD_CPUID_EDX))
     141                        && (info.cpuid_edx == AMD_CPUID_EDX))
    143142                        CPU->arch.vendor = VendorAMD;
    144143               
    145144                /*
    146145                 * Check for Intel processor.
    147                  */
     146                 */             
    148147                if ((info.cpuid_ebx == INTEL_CPUID_EBX)
    149148                    && (info.cpuid_ecx == INTEL_CPUID_ECX)
    150                     && (info.cpuid_edx == INTEL_CPUID_EDX))
     149                        && (info.cpuid_edx == INTEL_CPUID_EDX))
    151150                        CPU->arch.vendor = VendorIntel;
    152151               
    153                 cpuid(INTEL_CPUID_STANDARD, &info);
    154                 CPU->arch.family = (info.cpuid_eax >> 8) & 0x0fU;
    155                 CPU->arch.model = (info.cpuid_eax >> 4) & 0x0fU;
    156                 CPU->arch.stepping = (info.cpuid_eax >> 0) & 0x0fU;
     152                cpuid(1, &info);
     153                CPU->arch.family = (info.cpuid_eax >> 8) & 0x0f;
     154                CPU->arch.model = (info.cpuid_eax >> 4) & 0x0f;
     155                CPU->arch.stepping = (info.cpuid_eax >> 0) & 0x0f;                                             
    157156        }
    158157}
Note: See TracChangeset for help on using the changeset viewer.