This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Spurious GDB traps using OpenRISC and eCos


Mark Salter said:
>>>>>> Robert Cragie writes:
>
>> I am trying to build a ROM 'monitor' which contains only GDB debugging stubs
>> and can debug code which is downloaded into RAM. On startup, the code to be
>> debugged is bootstrapped from a serial Flash device into RAM and then the
>> breakpoint() function (which I have copied) is called. The idea is that all
>> the exception handlers remain in ROM and only interrupt handlers can be
>> claimed by RAM. But at the moment I'm not using interrupts at all apart from
>> the ctrl-c interrupt for GDB interruption, which I want to be handled by the
>> ROM code.
>
>> The problem is is that I cannot single step or continue from this point - it
>> just seems to keep coming bask to the same address - here is the output from
>> GDB.
>
> I think what is happening is that you are continually retrying the
> breakpoint insn. You simply need to skip that initial breakpoint
> before continuing. Something like (Assuming 32-bit opcodes):
>
>  (gdb) set $pc = $pc + 4
>  (gdb) continue

Indeed, and note that this is highly architecture specific.

Look at how the HAL handles the breakpoint exception.  Depending on the
processor, the "pc" may point at the instruction itself, or at some
subsequent one.  The HAL typically adjusts it's internal value of "pc"
to point to the actual exception, to make it easier to continue after
the exception has been handled.





-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]