| .. include:: ../../disclaimer-zh_TW.rst |
| |
| :Original: Documentation/arch/parisc/debugging.rst |
| |
| :翻譯: |
| |
| 司延騰 Yanteng Si <siyanteng@loongson.cn> |
| |
| .. _tw_parisc_debugging: |
| |
| ================= |
| 調試PA-RISC |
| ================= |
| |
| 好吧,這裏有一些關於調試linux/parisc的較底層部分的信息。 |
| |
| |
| 1. 絕對地址 |
| ===================== |
| |
| 很多彙編代碼目前運行在實模式下,這意味着會使用絕對地址,而不是像內核其他 |
| 部分那樣使用虛擬地址。要將絕對地址轉換爲虛擬地址,你可以在System.map中查 |
| 找,添加__PAGE_OFFSET(目前是0x10000000)。 |
| |
| |
| 2. HPMCs |
| ======== |
| |
| 當實模式的代碼試圖訪問不存在的內存時,會出現HPMC(high priority machine |
| check)而不是內核oops。若要調試HPMC,請嘗試找到系統響應程序/請求程序地址。 |
| 系統請求程序地址應該與(某)處理器的HPA(I/O範圍內的高地址)相匹配;系統響應程 |
| 序地址是實模式代碼試圖訪問的地址。 |
| |
| 系統響應程序地址的典型值是大於__PAGE_OFFSET (0x10000000)的地址,這意味着 |
| 在實模式試圖訪問它之前,虛擬地址沒有被翻譯成物理地址。 |
| |
| |
| 3. 有趣的Q位 |
| ============ |
| |
| 某些非常關鍵的代碼必須清除PSW中的Q位。當Q位被清除時,CPU不會更新中斷處理 |
| 程序所讀取的寄存器,以找出機器被中斷的位置——所以如果你在清除Q位的指令和再 |
| 次設置Q位的RFI之間遇到中斷,你不知道它到底發生在哪裏。如果你幸運的話,IAOQ |
| 會指向清除Q位的指令,如果你不幸運的話,它會指向任何地方。通常Q位的問題會 |
| 表現爲無法解釋的系統掛起或物理內存越界。 |
| |