Reynolds, Terry (Contractor-SIMTECH) wrote:
Hello all,
I've fixed my data alignment problems, and the __adeos_init_domain function seems to have the stack set up properly for the new domain. The next event is a switch_domain from the root domain to the new one. This still fails. On printing out the inputs, the root domain's stack isn't setup. The items loaded in the initial call to __adeos_init are OK, but the stack pointer adp->esp[cpuid] is null, as is the m_link structure member. It looks like the root domain has never been suspended prior to the real-time domain being registered. When should the root domain's esp's pointed at stack been created / initialized? That isn't happening in the __adeos_init function.

There is no need to init esp for root, since the Linux stack pre-exists, and the first switch could only occur after the first non-root domain has been created. Since you always switch from root to non-root for the first time, root's esp[] is initially saved but not read; it is only read when switching back to it.

m_mutex is not related; it's a link into the inter-domain mutex pending queue. Having it NULL at startup is thus sane.

Thanks for any help! Terry

________________________________

From: Reynolds, Terry (Contractor-SIMTECH)
Sent: Wed 2/23/2005 6:44 PM
To: [email protected]
Subject: RE: [Adeos-main] Porting question


I've been looking at the __adeos_init_domain function with printk statements.   
It looks like the ppc64's 64 bits
for unsigned long's have hosed up the positions of the structure elements.  The 
adp->m_link and adp->flags
both come back as zero from the call to the init_domain function.  They were 
non-zero in the function. I'll have
to re-compute the relative addresses for the structure elements.
Thanks, Terry
________________________________

From: [EMAIL PROTECTED] on behalf of Philippe Gerum
Sent: Wed 2/23/2005 12:32 PM
To: Reynolds, Terry (Contractor-SIMTECH)
Cc: adeos
Subject: Re: [Adeos-main] Porting question



Reynolds, Terry (Contractor-SIMTECH) wrote:

My apologies for being vague!  I'd never looked at the 2.4 tree & didn't know 
there was a ppc port there, I'm working on a ppc64, 2.6 port.

I have a newfound appreciation for everyone porting ppc drivers to ppc64, the 
differences are huge.

My specific problem is in using the RTAI sample test (latency), via the 
adeos/generic.c implementation.   In adeos_register_domain, when the root 
domain (linux) calls the adeos_switch_to function, the link register value 
stored for the RTAI_hal domain isn't set up properly to return to the 
register_domain function.

At least I assume that's what's happening, since my system crashes in the 
adeos_switch_domain function, or in returning from there.

This would be much easier to work on if there was a kdb available for ppc64!  
Printk statements, with the kernel crashing every time I run the program is 
very time consuming.

My question is: in the process of registering a domain, when does it's stack 
get setup so that a call to switch domain will pull up the correct value to 
place in the link register so that the switch function will know where to 
return to?




__adeos_init_domain(). Really. Excerpt:

        ksp[19] = (_cpuid == cpuid); /* r3 */
        ksp[25] = (unsigned long)attr->entry; /* lr <====== */
        ksp[26] = flags & ~MSR_EE; /* msr */


PS: please ask your mail client to wrap lines. (My 2700 inches CRT does
not fit on my office desk...)


Thanks,


Terry

_______________________________________________
Adeos-main mailing list
[email protected]
https://mail.gna.org/listinfo/adeos-main



--

Philippe.

_______________________________________________
Adeos-main mailing list
[email protected]
https://mail.gna.org/listinfo/adeos-main



_______________________________________________
Adeos-main mailing list
[email protected]
https://mail.gna.org/listinfo/adeos-main


--

Philippe.

Reply via email to