Help! isync, exceptions, dummy function problems with RTEMS (near-head) PowerPC/virtex BSP - RESOLVED

Robert S. Grimes rsg at
Tue Aug 14 16:24:24 UTC 2007

It was the stack checker!!!

Joel Sherrill wrote:
> Robert S. Grimes wrote:
>> Hi,
>> I wanted to heed Joel's call to test RTEMS, so I wanted to get
>> my code into a "stable state" so I could compare the new against the
>> code I grabbed from HEAD about four weeks ago. 
> Thank you.  I really do want to get from 4.7->4.8 faster
> than 4.5->4.6 or 4.6->4.7.
>>  Everything has been
>> going along quite well, until I added some seemingly simple code - no
>> new tasks or other RTEMS objects, just some application level state
>> management code.  So the problem I am having is almost certainly in my
>> code, but I'm having trouble figuring out what it is, mainly because of
>> how it dies; it just hangs, and when I break into gdb, I find it is
>> stuck on the isync instruction at the very end of  _CPU_Context_switch
>> in new-exceptions/cpu_asm.S.  There is, of course, no stack information,
>> and I'm not sure how to proceed.  Call this the "isync Problem".
>> Another problem I run into is and infinite "exception handler called for
>> exception 0"; this message is streamed out the console as fast as the
>> serial port allows.  Note that the register dump that is supposed to
>> follow does not happen.  Call this the "Infinite Exception 0 Problem"
>> Another problem I have seen is the message "exception handler called for
>> exception 7"; this one _does_ print out the registers before it halts
>> the system (in its infinite loop).  Call this (not surprisingly) the
>> "Exception 7 Problem".
>> All these problems seem to have nothing to do with anything you would
>> expect.  Right now, without having _knowingly_ fixed anything, the
>> Exception 7 Problem seems to be gone.  But I am still quite stuck!
>> However, I have a relatively simple setup where I can selectively cause
>> the Infinite Exception 0 Problem.  In this, everything works just fine.
>> But if I add this function:
>>     void printCurTaskId() {
>>       rtems_id id;
>>       rtems_task_ident(RTEMS_SELF, 0, &id);
>>       printk("Current Task: $%08x\n", id);
>>     }
>> to the source file that contains my main initialization routine (you
>> know, the one RTEMS calls after it initializes), I get the Infinite
>> Exception 0 Problem.  Now, please note that nowhere in my code is this
>> function actually called!  If I simply comment out this function,
>> everything works just fine!  Argh!!!  As far as I can tell, nothing is
>> changed of any significance in the map files (see follow-up email, if
>> it gets
>> approved by the moderator - if you're
>> interested).  Call this one the "Dummy Function Problem" (named after
>> me, it seems!)
>> So, now some specific questions:
>> 1. What could cause the isync Problem?  I have absolutely no clue on
>> this one.
>> 2. What are exception 0 and 7?  In the Xilinx PPC Reference Guide, they
>> document the available exceptions, but they don't give them "ID"
>> numbers; they do give, however, their "exception-vector offsets".  For
>> example, the Program Interrupt exception has an offset of 0x0700, and I
>> certainly would believe that that is exception 7; however, there is no
>> exception-vector offset 0x0000, so I don't know what Exception 0 is.  So
>> what is the mapping between the exception number reported by RTEMS and
>> the documented exceptions...
>> 3. Any ideas what could cause the Dummy Function Problem, or what to
>> check?
>> My hardware is fine, I have enough memory - maybe it's the phase of the
>> moon???
> I suspect this is the classic problem that the BSP left
> an interrupt source enabled that should be disabled.
> You have an interrupt pending when the first context
> switch enables interrupts and it doesn't have a handler.
> Double check the BSP interrupt initialization.  It needs
> to clear/disable all sources and let individual drivers
> enable the ones they will handle.
> --joel
>> Thanks,
>> -Bob
>> _______________________________________________
>> rtems-users mailing list
>> rtems-users at

More information about the users mailing list