我正在编程一个SPARC v8 (32位)系统,需要验证对HW陷阱的响应。
SPARC提供了256个陷阱,每个陷阱都与陷阱类型tt不同,其中第一个128是HW陷阱,而128到255是软件陷阱。SPARC指令集文档表示执行
ta N ; trap always, n = 0..127导致tt=N+128类型的陷阱。陷阱导致跳转到陷阱基地址+ tt * 16。
是否有一种方法可以编程地导致HW陷阱,而无需编写显示每个HW陷阱条件的代码,如窗口下流、未对齐访问等?
我正在考虑安装SW陷阱处理程序,只需跳转到陷阱处理程序(N-128),并使我的手指好运。我对这个想法感到不舒服,因为HW陷阱可能会导致其他处理器状态改变,而SW陷阱不会.
发布于 2018-08-03 11:22:10
是否有一种方法可以编程地导致HW陷阱,而无需编写显示每个HW陷阱条件的代码,如窗口下流、未对齐访问等?
不,没有办法以编程的方式复制由硬件陷阱引起的所有影响。例如,一个真正的硬陷阱在TBR寄存器中设置tt (trap类型字段),以指示陷阱的类型。此字段不能由程序员通过写入TBR寄存器来修改。如果这个字段是在陷阱处理程序中读取的(无论出于什么原因),您可能无法人为地设置它。但是,正如注释所提到的,如果您的处理器实现提供了调试接口,则可能会导致硬件陷阱。
我正在编程一个SPARC v8 (32位)系统,需要验证对HW陷阱的响应。
是否有一个特殊的原因,为什么你不能写代码,实际上导致硬件陷阱(例如,窗口溢出或除以零等)?实际上,在sparc中编写用于测试这些陷阱的小单元测试是非常简单的。如果您想彻底测试对陷阱的响应,那么它可能实际上是必要的。另一种可能性是使用sparc V8模拟器。
https://stackoverflow.com/questions/51307713
复制相似问题