Не удается прочитать обратно из MSR
Я пишу модуль ядра, и речь идет о чтении и написании MSR. Я написал простую программу для тестирования, но она все равно не работает. Все, что он делает, это пишет в MSR, а затем читает его обратно. Вот код:
static int __init test3_init(void)
{
uint32_t hi,lo;
hi=0; lo=0xb;
asm volatile("mov %0,%%eax"::"r"(lo));
asm volatile("mov %0,%%edx"::"r"(hi));
asm volatile("mov $0x38d,%ecx");
asm volatile("wrmsr");
printk("exit_write: hi=%08x lo=%08x\n",hi,lo);
asm volatile("mov $0x38d,%ecx");
asm volatile("rdmsr":"=a"(lo),"=d"(hi));
printk("exit_write2: hi=%08x lo=%08x\n",hi,lo);
return 0;
}
The output looks like:
exit_write: hi=00000000 lo=0000000b
exit_write2: hi=00000000 lo=00000000
Может кто-нибудь сказать мне, почему возвращаемое значение 0 во втором выводе, а не оригинал? Что-то не так с моим кодом? Большое спасибо.