我有一個ARMv5的動力非XScale的設備(SHARP Brain™電子詞典)與安裝在NAND閃存的Windows Embedded CE 6.0,我用TCPMP播放我最喜歡的AAC音樂和MPEG -4部電影。確定是否XScale的是存在於安全的方式
但是,當我開始TCPMP,有時TCPMP凍結。所以我看着TCPMP,我發現當這段代碼執行時會發生凍結。
CheckARMXScale PROC
mov r0,#0x1000000
mov r1,#0x1000000
mar acc0,r0,r1 ; <--- here
mov r0,#32
mov r1,#32
mra r0,r1,acc0
cmp r0,#0x1000000
moveq r0,#1
movne r0,#0
cmp r1,#0x1000000 ;64bit or just 40bit?
moveq r0,#2
mov pc,lr
此代碼確定的XScale是否存在通過嘗試執行的XScale指令,並且捕捉異常如果「未定義指令」拋出異常。
的問題是,不知何故系統無法正常通過這個例外TCPMP,造成TCPMP凍結。這似乎不是因爲Windows CE,而是因爲這款設備中有錯誤的驅動程序。由於在此設備上運行TCPMP未得到正式支持,因此不會期望任何驅動程序更新。
我把這個問題發佈到2channel,有人聲稱這樣判斷XScale是否存在並不好,但沒有人甚至試圖找到更好的方法。所以我搜索了一下並閱讀了ARMv5體系結構參考手冊等,但是我什麼都沒發現。似乎幾乎每個使用XScale指令集的程序都會以相同的方式確定XScale是否存在。
問題是,是否有可能確定是否XScale的指令集是本,而不使用任何異常或除了用戶模式中的任何模式的CPU的?
這是NOR包含內核代碼閃存。 – yvt 2014-04-07 12:16:29