Benjamin ZORES wrote: > Hi, > > I'm facing a problem with the PowerPC version of Xenomai/Adeos that I > have difficulties > to identify the exact source. > > I'm running a Xenomai RT kernel thread that use to crash sometimes due > to potential register corruption. > Problem occurs after a context switch and, in some cases, if the task > gets interrupted and reschedule, > its registers values are not the same as they used to be before context > switch. > > The code is a bit complex and so, makes use of register that is > generally rarely used (GPR r26 to be accurate). > Driver is compiled with -02 and compiling with -O0 (so disabling > optimizations and so, not using r26) works fine > but is not what I'm looking for. > > Can someone tell me where exactly in Adeos/Xenomai is context switching > actually performed and where are the registers save/restore functions ? > I've seen there is specific code for FPU registers handling but can't > find the equivalent for GPR. > > FYI, I'm running on PowerPC 603e core with Linux 2.6.23, Adeos 2.0-09 > (latest) and Xenomai 2.3.4 (latest). > I've seen there are adeos updates (but for updated kernels) but is there > some ChangeLog of Adeos changes ? > Maybe this is a known bug that has been fixed in updated Adeos release ? > > Thx to anyone who can help me on this, >
See arch/powerpc/switch_32.S, rthal_switch_threads(), for the part that does the actual stack switching. Note that this code is obfuscated by the fact that we have to handle so-called "hybrid" switching, between Xenomai kernel threads (which do not rely on a task_struct), and Linux tasks (Xenomai userland, Linux kthreads, or regular userland Linux). Fortunately, what is saved on the stack in any case is easy to find out. > Ben > > > _______________________________________________ > Xenomai-core mailing list > Xenomai-core@gna.org > https://mail.gna.org/listinfo/xenomai-core > -- Philippe. _______________________________________________ Xenomai-core mailing list Xenomai-core@gna.org https://mail.gna.org/listinfo/xenomai-core