linux/Documentation/parisc/debugging
<<
tion8.1/spae=" 8.1/form=" 8.1a tion8. href="../linux+v3.7.2/Documentaalue/parisc/debugging">tion8.1img src="../.staalc/gfx/right.png" alt=">>">ti1/spae="ti1spae class="lxr_search">tiontion8.1input typ4.8hidden" nam4.8navtarget" v4.8">tion8.1input typ4.8text" nam4.8search" id.8search">tion8.1butt >typ4.8submit">Searchtion8.Prefs" 8.1/a>ti1/spae="on8. .1/div="on8. .1form acalue="ajax+*" method="post" onsubmit="return false;">ti1input typ4.8hidden" nam4.8ajax_lookup" id.8ajax_lookup" v4.8">ton8. .1/form="ton8. .1div class="headingbott m">. .11/a>okay, here are some hints for debugging the lower-level parts of . .21/a>linux/parisc. . .31/a>t. .41/a>t. .51/a>1. Absolute addressest. .61/a>t. .71/a>A lot of the assembly code currently runs in real mode, which meanst. .81/a>absolute addresses are used instead of virtual addresses as in thet. .91/a>rest of the kernel. To translate an absolute address to a virtualt. tiona>address you can lookup in System.map, add __PAGE_OFFSET (0x10000000t. 111/a>currently). . 121/a>t. 131/a>t. 141/a>2. HPMCst. 151/a>t. 161/a>When real-mode code tries to access non-existent memory, you'll gett. 171/a>an HPMC instead of a kernel oops. To debug an HPMC, try to findt. 181/a>the System Responder/Requestor addresses. The System Requestort. 19ona>address should match (one of the) processor HPAs (high addresses in . 201/a>the I/O range); the System Responder address is the address real-mode . 211/a>code tried to access. . 221/a>t. 231/a>Typical v4s for the System Responder address are addresses largert. 241/a>than __PAGE_OFFSET (0x10000000) which mean a virtual address didn'tt. 251/a>get translated to a physical address before real-mode code tried tot. 261/a>access it. . 271/a>t. 281/a>t. 29ona>3. Q bit fun . 301/a>t. 311/a>Certain, very critical code has to clear the Q bit in the PSW. Whatt. 321/a>happens when the Q bit is cleared is the CPU does not update thet. 331/a>registers interru" >handlers read to find out where the machinet. 341/a>was interru" ed - so if you get an interru" >between the instrucaluet. 351/a>that clears the Q bit and the RFI that sets it again you don't knowt. 361/a>where exactly it happened. If you're lucky the IAOQ will point to thet. 371/a>instrucalue that cleared the Q bit, if you're not it points anywheret. 381/a>at all. Usually Q bit problems will show themselves in unexplainablet. 39ona>system hangs or running off the end of physical memory. . 401/a> The original LXR software by the LXR community1/a>, this experimental vers >by lxr@linux.no1/a>. 1/div="1div class="subfooter"> lxr.linux.no kindly hos ed by Redpill Linpro AS1/a>, provider of Linux consulting and operaalues services since 1995. 1/div=" 1/body="1/html="