gpt4 book ai didi

c - 我应该如何读取或写入 APIC 寄存器 0x​​104567910?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:07:31 28 4
gpt4 key购买 nike

代码如下:

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),但是如果值不一致,重置位有什么意义呢?有人告诉我 Resetting this bit APIC_DM_NMI 可以从 APIC 启用 NMI,我不知道,我完全是新手。如果有人可以提供有关此 MSR 的任何信息,以及如何正确操作它,我们将不胜感激。

谢谢。

最佳答案

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

这里是来自Pentium Processor System Architecture (page 395)的ICR寄存器的描述,我没有看到任何关于阅读这个注册器的警告。 enter image description here

仅供引用,这是我从 lecture notes 中找到的 ICR 寄存器位规范: ICR Higher 32 Bits ICR Lower 32 Bits

关于c - 我应该如何读取或写入 APIC 寄存器 0x​​104567910?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11359021/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com