Skip to main content.
Navigation:
DENX
>
DULG
>
HowToSingleStepThroughRFIInstruction
Translations:
Edit
|
Attach
|
Raw
|
Ref-By
|
Printable
|
More
DULG
Sections of this site:
DENX Home
|
DULG
|
ELDK-5
|
Know
|
Training
|
U-Boot
|
U-Bootdoc
Topics
DULG Home
BoardSelect
Manual
FAQ
Application Notes
Changes
Index
List of pages in DULG
Search
%SECTION0{name=HowToSingleStepThroughRFIInstruction}% How to single step through "RFI" instruction Question:: I am trying to debug Linux on an IBM 405GP processor. Linux boots fine and I can step through the code until the ="rfi"= instruction in =head_4xx.S=; then I get the following: <verbatim> - TARGET: target has entered debug mode Target state : debug mode Debug entry cause : JTAG stop request Current PC : 0x00000700 Current CR : 0x28004088 Current MSR : 0x00000000 Current LR : 0x000007a8 # Step timeout detected </verbatim> Answer:: Your single step problem most likely comes from the fact that GDB accesses some non-existent memory (at least some versions do/did in the past). This exception is stored in some way within the 405 and when you step ="rfi"= it triggers. This is because some instructions like ="rfi"= are always stepped using a hardware breakpoint and not with the JTAG single step feature. <p></p> Probably you can step over the ="rfi"= instruction when using the BDI2000's =telnet= command interface instead of GDB. <p></p> Similar problems have also been reported when stepping through ="mtmsr"= or ="mfmsr"= during initial boot code. The problem comes also from the fact that GDB accesses non-existent memory (maybe it tries to read a non-existent stack frame). <p></p> To debug the Linux kernel, I recommend that you run to a point where the MMU is on before you connect with GDB. <p></p> To debug boot code where the MMU is off I recommend to use the MMAP feature of the BDI to prevent illegal memory accesses from GDB.
14.6.2. How to Debug Linux Exceptions
1. Abstract
14.6.4. Setting a breakpoint doesn't work
Prev
Home
Next