问题描述
我最近开始编写本机管理程序,并且为了支持多核系统,我必须在所有内核上初始化管理程序。 使用Intel的x2APIC,我正在从BSP向其他内核发送SIPI中断。发出中断后,我无法使用该函数的名称调用驻留在其他文件中的函数(C函数)。当我尝试这样做时,cpu会遇到三重故障。
000000000330049c <ApicLongMode>:
330049c: mov $0x770000,%esp
33004a1: mov 0x4000,%rdi
33004a9: callq 3303a2c <InitializeSingleHypervisor>
000000000330049c <ApicLongMode>:
330049c: mov $0x770000,%rdi
33004a9: callq *0x4008
在上述情况下,地址0x4008
包含InitializeSingleHypervisor
函数的地址。
请注意,当我从BSP运行完全相同的代码(第一段代码)时,该函数将成功调用。
我正在将nasm
用作汇编程序,并将ld
用作链接程序。当然,我必须确保在调用该函数之前将其声明为extern。
有人可以解释这种行为吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)