1okay, here are some hints for debugging the lower-level parts of 2linux/parisc. 3 4 51. Absolute addresses 6 7A lot of the assembly code currently runs in real mode, which means 8absolute addresses are used instead of virtual addresses as in the 9rest of the kernel. To translate an absolute address to a virtual 10address you can lookup in System.map, add __PAGE_OFFSET (0x10000000 11currently). 12 13 142. HPMCs 15 16When real-mode code tries to access non-existent memory, you'll get 17an HPMC instead of a kernel oops. To debug an HPMC, try to find 18the System Responder/Requestor addresses. The System Requestor 19address should match (one of the) processor HPAs (high addresses in 20the I/O range); the System Responder address is the address real-mode 21code tried to access. 22 23Typical values for the System Responder address are addresses larger 24than __PAGE_OFFSET (0x10000000) which mean a virtual address didn't 25get translated to a physical address before real-mode code tried to 26access it. 27 28 293. Q bit fun 30 31Certain, very critical code has to clear the Q bit in the PSW. What 32happens when the Q bit is cleared is the CPU does not update the 33registers interruption handlers read to find out where the machine 34was interrupted - so if you get an interruption between the instruction 35that clears the Q bit and the RFI that sets it again you don't know 36where exactly it happened. If you're lucky the IAOQ will point to the 37instrucion that cleared the Q bit, if you're not it points anywhere 38at all. Usually Q bit problems will show themselves in unexplainable 39system hangs or running off the end of physical memory. 40