Revision e737b32a target-i386/op_helper.c

b/target-i386/op_helper.c
1919 1919
        ECX = 0;
1920 1920
        EDX = 0x2c307d;
1921 1921
        break;
1922
    case 4:
1923
        /* cache info: needed for Core compatibility */
1924
        switch (ECX) {
1925
            case 0: /* L1 dcache info */
1926
                EAX = 0x0000121;
1927
                EBX = 0x1c0003f;
1928
                ECX = 0x000003f;
1929
                EDX = 0x0000001;
1930
                break;
1931
            case 1: /* L1 icache info */
1932
                EAX = 0x0000122;
1933
                EBX = 0x1c0003f;
1934
                ECX = 0x000003f;
1935
                EDX = 0x0000001;
1936
                break;
1937
            case 2: /* L2 cache info */
1938
                EAX = 0x0000143;
1939
                EBX = 0x3c0003f;
1940
                ECX = 0x0000fff;
1941
                EDX = 0x0000001;
1942
                break;
1943
            default: /* end of info */
1944
                EAX = 0;
1945
                EBX = 0;
1946
                ECX = 0;
1947
                EDX = 0;
1948
                break;
1949
        }
1950

  
1951
        break;
1952
    case 5:
1953
        /* mwait info: needed for Core compatibility */
1954
        EAX = 0; /* Smallest monitor-line size in bytes */
1955
        EBX = 0; /* Largest monitor-line size in bytes */
1956
        ECX = CPUID_MWAIT_EMX | CPUID_MWAIT_IBE;
1957
        EDX = 0;
1958
        break;
1922 1959
    case 0x80000000:
1923 1960
        EAX = env->cpuid_xlevel;
1924 1961
        EBX = env->cpuid_vendor1;
......
3089 3126
    case MSR_VM_HSAVE_PA:
3090 3127
        env->vm_hsave = val;
3091 3128
        break;
3129
    case MSR_IA32_PERF_STATUS:
3130
        /* tsc_increment_by_tick */ 
3131
        val = 1000ULL;
3132
        /* CPU multiplier */
3133
        val |= (((uint64_t)4ULL) << 40);
3134
        break;
3092 3135
#ifdef TARGET_X86_64
3093 3136
    case MSR_LSTAR:
3094 3137
        env->lstar = val;

Also available in: Unified diff