【发布时间】:2010-08-05 23:24:54
【问题描述】:
我正在寻找有关在内核模块中实现某些 CPU 扩展的信息。我发现了一些相关的东西:http://www.mirrors.docunext.com/lxr/http/source/arch/mips/kernel/unaligned.c 事实上,这是我能找到的唯一一个更接近的源代码。
基本上,我有一个使用某些 CPU 扩展构建的仅二进制共享对象,我需要在具有大部分指令集但不是花哨的新东西的稍旧的 CPU 上运行它。是的,我知道这会很慢,但总比使用 SIGILL 崩溃要好。
【问题讨论】:
-
我认为您的问题可能有点过于宽泛。您已经有了基本想法 - 拦截最终导致 SIGILL 的陷阱,而是检查用户进程状态并模拟它尝试执行的指令。 (我认为你不能从一个模块中做到这一点 - 它可能必须被编译,除非你为模块添加一些垫片以连接到)。那么真正的问题是什么?
-
我希望有人有做这样的事情的经验,或者如果我遗漏了什么,至少可以为我指出正确的方向。内核本身有与 FP 芯片仿真相关的片段,以及上面的链接。编写 shim/framework 似乎是实现最大可重用性/可扩展性的下一步。基本上,我正在寻找 SIGILL 的来源,然后从那里开始。有什么更有效的吗?或者,有人知道哪里是诱捕的好地方,即文件 x 行 y?抱歉有很多问题,我不想开始太多新线程。
标签: linux linux-kernel kernel kernel-module kernel-extension