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