On Monday 22 October 2007 14:01:33, Benjamin Herrenschmidt wrote: > > I'm porting an adeos nano kernel named xtratum (http://www.xtratum.org) > > from x86 to ppc, I think I'm near the ending except the above problem. > > xtratum is doing things like xen but it's much simpler (it's aimed for > > realtime), it need provides memory space sperations for it's domains, so > > I need manually paging. Each domain is loaded by a userspace program > > (instead of the root domain as a kernel module), the loader will load the > > domain's (ELF staticly excutable) PT_LOAD section into memory, and then > > raise a properly system call (passing the structurized loaded data as > > arguments) to load the domain via load_domain_sys(), and at the last step > > of loading the domain, xtratum will jump to the entry code of the new > > domain(asm wrappered start() routine) and then everything should be fine. > > The problem now is as follow: > > > > under my ppc (440GR/440EP) platform, start() is always at 0x100000a0, but > > I guess there is something wrong with my mm code so after the domain is > > loaded, the virt addres 0x100000a0 just point to garbage instead of the > > right start() routine. So how can I setup paging properly so that the > > virtual memory could be translated to proper data? > > Are you aware that the 440 MMU doesn't actually know what a page table > is and doesn't load PTEs from memory ? Sorry I didn't realized that. I've finished looking pem64b.pdf, but it's almost nothing like in ppc 4xx/44x. > It's a software loaded TLB, you'll have to put translations in the TLB > yourself. You'll need to design your own data structures for that, tho > you can use a page table for tracking, like we do in linux, and then > have your own TLB miss handler to fill the TLB from that. OK, Shall I look for the DataTLBError code in head.S? I realized that I've got DataTLBError sometimes via BDI2000/kgdb (the fault address is within DataTLBError), Shall I should also look for arch/ppc/mm/fault.c? > Your initial code probably need to bolt a TLB entry for the kernel > itself. I don't understand this clearly, how can I do this? > Ben.
Regards, Wang -- Wang, Baojun Lanzhou University Distributed & Embedded System Lab http://dslab.lzu.edu.cn School of Information Science and Engeneering [EMAIL PROTECTED] Tianshui South Road 222. Lanzhou 730000 .P.R.China Tel:+86-931-8912025 Fax:+86-931-8912022 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev