在此紀錄R/W MSR的一些方式!!

 

Assembly要去R/W CPU MSR Register是透過RDMSR & WRMSR這二個指令,而MSR是一個64 bit Register,要去R/W MSR需要透過下列格式:

ECX : Index register

MSR : EDX(High Dword) + EAX(Low Dword)

 

以讀取CPU倍頻(IA32_PERF_STS -- Performance Status Register)為例,下列為debug32去讀取IA32_PERF_STS的方式:

Mov             ECX,0198hß198hIA32_PERF_STS MSR Address

RDMSR

;

EAX就會秀出XXXXX613hß根據INTEL SPEC 6就是現在倍頻為6

 

如果要寫入CPU倍頻(IA32_PERF_CTL – Performance Control Register)為例,下列為debug32去寫入IA32_PERF_CTL的方式:

Mov             ECX,0199hß199hIA32_PERF_CTL MSR Address

Mov             EDX,00000000hß high Dword 0

Mov             EAX, 0000000A 13hßlow Dword所寫入的ABUS_RATIO_SEL是根 

                                    INTEL SPEC

WRMSR

;

然後在用之前讀取MSR的方式去確認!!就可以知道是否有寫入的,不是每一個INTEL CPU都可以這樣寫入!!但是目前手上所使用的Core 2 DUO CPU是可以這樣寫入.

 

OS底下用RW去讀取IA32_PERF_STS的方式:

RDMSR                             0x198

            (IA32_PERF_STS MSR Address)

OS底下用RW去寫入IA32_PERF_CTL的方式

WRMSR                            0x199            0ß high Dword                 0xA13ßlow Dword

            (IA32_PERF_CTL MSR Address)

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 cj6m3 的頭像
    cj6m3

    勇ㄅㄟㄅㄟ胡言亂語堂

    cj6m3 發表在 痞客邦 留言(0) 人氣()