[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] How works Xen mmu ?
On Thu, Jun 3, 2010 at 3:29 PM, Keir Fraser <keir.fraser@xxxxxxxxxxxxx> wrote: > > > > On 03/06/2010 14:16, "Sylvestre Gallon" <syl@xxxxxxxxx> wrote: > >> addr = get_cr3(); // getting page directory >> addr &= 0xfffff000; // remove pdir flags >> addr = ((uint32_t*) addr_[0]; // get address of first page dir >> (0xb8000 is in the first pdir) >> addr += 0xb8 * 4; // 0xb8000 must be the pte 0xb8 into >> pdir >> 0 >> >> mmu.ptr = pte | MMU_NORMAL_PT_UPDATE; >> mmu.val = 0xb8000 | 0x3; // 0x3 for pte present and rw flags >> >> HYPERVISOR_mmu_update(&mmu, 1, NULL, DOMID_SELF); >> >> while(42); >> >> But when I try this code I get an unhandled page fault :/ >> >> Do I have misunderstood something ? > > This is closer, but page table entries will be 64 bits not 32 bits (hence > use uint64_t). And also the page tables will have three or four levels > (depending on whether your guest is 32-bit PAE or 64-bit). So in the 64-bit > case for example, you would read cr3 to get pagedir_1, then index into > pagedir_1 to get pagedir_2, then index into pagedir_2 to get pagedir_3, then > index into pagedir_3 to get the pagetable. And mmu.ptr would point at an > entry in that pagetable. > OK , I see. I still have a question, does I need to compile my kernel with -m64 ? If not how can I use 64bits addresses ? Thanks for your help. Cheers, -- Sylvestre Gallon _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |