簡體   English   中英

gem5中用於armv8處理器的未定義TLBI指令

[英]Undefined TLBI instruction for armv8 processor in gem5

在裸機模式下為aarch64運行gem5 fs仿真時遇到了gem5錯誤。 特別是,當我的自定義啟動代碼嘗試使用匯編指令tlbi ALLE3使TLB無效時,模擬器報告了以下消息:

system.cpu T0 : @core0+72    :   msr   tlbi_alle3, xzr    : IntAlu :
Undefined Instruction: Invoking Fault (AArch64 target EL) : Undefined Instruction cpsr:0x3c5 PC:0x2186c elr:0x2186c newVec: 0xa00

另外,我使用“ tlbi ALLE1”進行了測試,但最終出現了相同的錯誤。 供您參考,我使用TimingSimpleCPU配置了CPU類型。 根據該消息,傳遞的tlbi指令似乎在ARM64處理器模型中未實現。 但是,由於我知道gem5在fs模式下成功為aarch64引導了Linux,所以我想知道這種情況如何處理tlbi指令。 換句話說,如果tlbi指令實際上是gem5中未實現的指令,我認為引導Linux也應該遇到相同的錯誤。 我能知道是否有人在gem5中遇到過tlbi的未定義指令錯誤嗎? 感謝您的預先答復/評論。

Update1 :進一步調查顯示, tlbi VMALLE3不會引起任何錯誤,而tlbi ALLE3指令則導致未定義的指令錯誤。

Linux內核僅行使所有ARM功能的子集。

例如,Linux v4.18 ARMv7之所以中斷,是因為它開始使用CSDB,因此我們現在將該指令標記為已忽略: https : //github.com/gem5/gem5/commit/33b311d8d8b8d527d500d62a35b50be63e41b556只是發出警告,因為該指令是實現定義的,可以是NOP。

值得注意的是,有幾條尚未實現的ARMv8.x指令。

因此,我建議以下內容:

  • grep src/arch/arm/isa/下的.isa文件,並搜索您正在使用的確切tlbi編碼。

    這些文件負責指令的解碼,因此,如果實現了指令,則必須在其中查找。

    tlbi下已經有命中,但是請確保您的確切指令字節在正確的位置。

    GDB如有必要,請調試debug gem5,並記住可能存在解碼錯誤,並且字節實際上應該是另一條指令。

  • 實際上使用--debug-flags=Exec進行Linux內核啟動跟蹤,並查看它是否包含上述指令。

  • 提供可以重現該問題的匯編行,以及用於匯編該問題的GNU GAS版本,以便其他人可以重現該問題。

如果您發現缺少編碼,並且能夠完全實現它,或者如果它是一個實現定義的NOP(如CSDB),則只需發出警告就忽略它,請在Gerrit和CC me上發送補丁。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM