I tried to figure out why I don't see any issues during normal debugging when I
set breakpoints and then start GDB, I only have a problem when I hit ^C to
enter GDB. Since bsp_idle_thread() is unusual in that the generated code has no
return from subroutine:
0006ef44 <bsp_idle_thread>:
6ef44: 48 00 00 00 b 6ef44 <bsp_idle_thread>
I hacked the bsp_idle_thread to be the following. Now when I break into the
debugger with ^C I'm in the "this_is_a_hack()" function, and I do not have any
issues with pending interrupts and then winding up returning from
bsp_idle_thread() and then calling bsp_reset().
Anyone have any ideas as to what could be causing this odd behavior?
void __attribute__ ((noinline)) this_is_a_hack()
{
volatile int i;
for (i = 0; i < 1000000; i++) {
}
}
void *bsp_idle_thread(uintptr_t arg)
{
while (true) {
this_is_a_hack();
}
return NULL;
}
On Jun 3, 2014, at 07:19 , Peter Dufault <[email protected]> wrote:
> I stumbled on something. If I disconnect the ethernet it will work OK. I
> also notice that if I hit a return at the serial console while within GDB it
> will do the same thing. Something about trying to resume with an interrupt
> pending is screwing things up. It mustn't be clock tick interrupts, though,
> or maybe the clock is stopped and restarted but the other interrupts remain
> pending.
Peter
-----------------
Peter Dufault
HD Associates, Inc. Software and System Engineering
_______________________________________________
rtems-devel mailing list
[email protected]
http://www.rtems.org/mailman/listinfo/rtems-devel