1*92b3de3fSJonathan Corbet.. include:: ../../disclaimer-zh_CN.rst 2*92b3de3fSJonathan Corbet 3*92b3de3fSJonathan Corbet:Original: Documentation/arch/parisc/debugging.rst 4*92b3de3fSJonathan Corbet 5*92b3de3fSJonathan Corbet:翻译: 6*92b3de3fSJonathan Corbet 7*92b3de3fSJonathan Corbet 司延腾 Yanteng Si <siyanteng@loongson.cn> 8*92b3de3fSJonathan Corbet 9*92b3de3fSJonathan Corbet.. _cn_parisc_debugging: 10*92b3de3fSJonathan Corbet 11*92b3de3fSJonathan Corbet================= 12*92b3de3fSJonathan Corbet调试PA-RISC 13*92b3de3fSJonathan Corbet================= 14*92b3de3fSJonathan Corbet 15*92b3de3fSJonathan Corbet好吧,这里有一些关于调试linux/parisc的较底层部分的信息。 16*92b3de3fSJonathan Corbet 17*92b3de3fSJonathan Corbet 18*92b3de3fSJonathan Corbet1. 绝对地址 19*92b3de3fSJonathan Corbet===================== 20*92b3de3fSJonathan Corbet 21*92b3de3fSJonathan Corbet很多汇编代码目前运行在实模式下,这意味着会使用绝对地址,而不是像内核其他 22*92b3de3fSJonathan Corbet部分那样使用虚拟地址。要将绝对地址转换为虚拟地址,你可以在System.map中查 23*92b3de3fSJonathan Corbet找,添加__PAGE_OFFSET(目前是0x10000000)。 24*92b3de3fSJonathan Corbet 25*92b3de3fSJonathan Corbet 26*92b3de3fSJonathan Corbet2. HPMCs 27*92b3de3fSJonathan Corbet======== 28*92b3de3fSJonathan Corbet 29*92b3de3fSJonathan Corbet当实模式的代码试图访问不存在的内存时,会出现HPMC(high priority machine 30*92b3de3fSJonathan Corbetcheck)而不是内核oops。若要调试HPMC,请尝试找到系统响应程序/请求程序地址。 31*92b3de3fSJonathan Corbet系统请求程序地址应该与(某)处理器的HPA(I/O范围内的高地址)相匹配;系统响应程 32*92b3de3fSJonathan Corbet序地址是实模式代码试图访问的地址。 33*92b3de3fSJonathan Corbet 34*92b3de3fSJonathan Corbet系统响应程序地址的典型值是大于__PAGE_OFFSET (0x10000000)的地址,这意味着 35*92b3de3fSJonathan Corbet在实模式试图访问它之前,虚拟地址没有被翻译成物理地址。 36*92b3de3fSJonathan Corbet 37*92b3de3fSJonathan Corbet 38*92b3de3fSJonathan Corbet3. 有趣的Q位 39*92b3de3fSJonathan Corbet============ 40*92b3de3fSJonathan Corbet 41*92b3de3fSJonathan Corbet某些非常关键的代码必须清除PSW中的Q位。当Q位被清除时,CPU不会更新中断处理 42*92b3de3fSJonathan Corbet程序所读取的寄存器,以找出机器被中断的位置——所以如果你在清除Q位的指令和再 43*92b3de3fSJonathan Corbet次设置Q位的RFI之间遇到中断,你不知道它到底发生在哪里。如果你幸运的话,IAOQ 44*92b3de3fSJonathan Corbet会指向清除Q位的指令,如果你不幸运的话,它会指向任何地方。通常Q位的问题会 45*92b3de3fSJonathan Corbet表现为无法解释的系统挂起或物理内存越界。 46