繁体   English   中英

我应该如何读写APIC寄存器“ APIC_ICR”?

[英]How should I read or write APIC register “APIC_ICR”?

这是代码:

static int __init test3_init(void)
{
   uint64_t v,i;
   for (i=0;i<10;i++)
   {
       v= native_x2apic_icr_read();
       printk("v=%llx\n",v);
   }
   return 0;
}

结果如下:

[ 6658.458919] v=9a557fd8
[ 6658.458925] v=1d
[ 6658.458928] v=17
[ 6658.458930] v=17
[ 6658.458932] v=17
[ 6658.458935] v=17
[ 6658.458937] v=17
[ 6658.458939] v=17
[ 6658.458942] v=17
[ 6658.458944] v=17

为什么连续读取该寄存器的值看起来像这样。 前两个不同,但其余相同。

我的最终目标是在此寄存器中重置APIC_DM_NMI(0x00400),但是如果该值不一致,那么重置该位有什么意义呢? 有人告诉我,重置此位APIC_DM_NMI可以从APIC启用NMI,我不知道,我完全是新手。 如果有人可以提供有关此MSR的任何信息,以及如何正确操作它,将不胜感激。

谢谢。

我以某种方式认为稳定值(即0x17)似乎是一个更“正常”的值。 这些输出可以重复吗? 我的意思是,前两个总是不同的,并且稳定地从3开始?

这是Pentium处理器系统体系结构(第395页)中ICR寄存器的描述,我对阅读本指南没有任何注意。 在此处输入图片说明

仅供参考,这是我从演讲笔记中找到的ICR寄存器位规范: ICR高32位ICR低32位

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM