Changeset e515167d in mainline for arch/amd64/src/cpu/cpu.c


Ignore:
Timestamp:
2005-09-03T09:52:47Z (19 years ago)
Author:
Ondrej Palkovsky <ondrap@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
be56c17
Parents:
5a5ed25
Message:

Added basic FPU context (not working).
Added CPU utilities from ia32
Fixed bug in vm.c that wanted PTL to be mapped in bottom memory.

File:
1 edited

Legend:

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

    r5a5ed25 re515167d  
    6363void set_TS_flag(void)
    6464{
    65         asm
    66         (
     65        __asm__ volatile (
    6766                "mov %%cr0,%%rax;"
    6867                "or $8,%%rax;"
     
    7170                :
    7271                :"%rax"
    73         );
     72                );
    7473}
    7574
    7675void reset_TS_flag(void)
    7776{
    78         asm
    79         (
     77        __asm__ volatile (
    8078                "mov %%cr0,%%rax;"
    8179                "btc $4,%%rax;"
     
    8482                :
    8583                :"%rax"
    86         );     
     84                );     
    8785}
     86
     87void cpu_arch_init(void)
     88{
     89        CPU->arch.tss = tss_p;
     90        CPU->fpu_owner=NULL;
     91}
     92
     93
     94void cpu_identify(void)
     95{
     96        cpu_info_t info;
     97        int i;
     98
     99        CPU->arch.vendor = VendorUnknown;
     100        if (has_cpuid()) {
     101                cpuid(0, &info);
     102
     103                /*
     104                 * Check for AMD processor.
     105                 */
     106                if (info.cpuid_ebx==AMD_CPUID_EBX && info.cpuid_ecx==AMD_CPUID_ECX && info.cpuid_edx==AMD_CPUID_EDX) {
     107                        CPU->arch.vendor = VendorAMD;
     108                }
     109
     110                /*
     111                 * Check for Intel processor.
     112                 */             
     113                if (info.cpuid_ebx==INTEL_CPUID_EBX && info.cpuid_ecx==INTEL_CPUID_ECX && info.cpuid_edx==INTEL_CPUID_EDX) {
     114                        CPU->arch.vendor = VendorIntel;
     115                }
     116                               
     117                cpuid(1, &info);
     118                CPU->arch.family = (info.cpuid_eax>>8)&0xf;
     119                CPU->arch.model = (info.cpuid_eax>>4)&0xf;
     120                CPU->arch.stepping = (info.cpuid_eax>>0)&0xf;                                           
     121        }
     122}
     123
     124void cpu_print_report(cpu_t* m)
     125{
     126        printf("cpu%d: (%s family=%d model=%d stepping=%d) %dMHz\n",
     127                m->id, vendor_str[m->arch.vendor], m->arch.family, m->arch.model, m->arch.stepping,
     128                m->frequency_mhz);
     129}
Note: See TracChangeset for help on using the changeset viewer.