如何解决Gem5 ARM fs仿真期间的未定义指令错误

时间:2019-06-25 13:58:43

标签: arm arm64 gem5

我当前正在尝试在Gem5上运行为arm64编译的程序。我正在使用sve/beta1 branch of Gem5linux kernel 4.15,并且该程序使用了glibc(它是静态链接的)。 要运行Gem5,我使用以下命令:

  

./ build / ARM / gem5.opt configs / example / arm / fs_bigLITTLE.py --arm-sve-vl = 8 --cpu-type = atomic --big-cpus = 2 --little-cpus = 2-内核= / dist / m5 / system / binaries / linux4_15 --dtb = / dist / m5 / system / binaries / armv8_gem5_v1_big_little_2_2.dtb --disk = / dist / m5 / system / disks / linaro-minimal-aarch64。 img

我成功启动了Linux发行版,二进制文件也启动了。但是,一段时间后,我收到以下错误消息:

  

[13602.881469] Program_Binary [1059]:未定义的指令:pc = 000000006e018621   [13602.881484]代码:d503201f d11b43ff a9007bfd 910003fd(d50320ff)

我不确定是哪条指令引起的,但是我认为这是一条指令(d11b43ff),根据ARM参考手册,该指令是msr指令。有人对我如何解决此问题有想法吗?

2 个答案:

答案 0 :(得分:1)

public/gem5分支的提交260b0fc,33b311d,6efe7e1和fcc379d的更改应用到sve / beta1分支可以解决此问题,同时适用于FS和SE模拟。

答案 1 :(得分:0)

通常,只有一种解决方案:去执行丢失的指令。

在这种特殊情况下,由于您位于分支上,因此您应该首先生成一个使用该指令的最小示例(如果可能,是个简单的方法,为se.py),该示例使用该指令并查看它是否已在master中固定。

How to compile and run an executable in gem5 syscall emulation mode with se.py?所述,但是几个月以来,在提交260b0fc5381a47c681e7ead8e4f13aad45069665时仍存在MRS glibc的主要修订,但尚未纳入sve / beta1。您可以尝试摘下它,看看会发生什么吗?