From aa71161a048abd28edbc801b1b19e6eca59dde68 Mon Sep 17 00:00:00 2001 From: Bahadir Balban Date: Sun, 9 Aug 2009 17:59:32 +0300 Subject: [PATCH] Seems phys_to_page/page_to_phys macros are fixed in mm0 --- src/generic/container.c | 2 +- tasks/mm0/include/vm_area.h | 10 ++++++---- tasks/mm0/src/physmem.c | 3 +++ 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/generic/container.c b/src/generic/container.c index 108af8b..8027dab 100644 --- a/src/generic/container.c +++ b/src/generic/container.c @@ -29,7 +29,7 @@ struct container_info cinfo[] = { [0] = { .pager_lma = __pfn(CONFIG_CONT0_PAGER_START), .pager_vma = __pfn(0xE0000000), - .pager_size = __pfn(0x9F000), + .pager_size = __pfn(0xa0000), .ncaps = 14, .caps = { [0] = { diff --git a/tasks/mm0/include/vm_area.h b/tasks/mm0/include/vm_area.h index 98aa64e..21cab02 100644 --- a/tasks/mm0/include/vm_area.h +++ b/tasks/mm0/include/vm_area.h @@ -13,6 +13,7 @@ #include #include #include +#include // #define DEBUG_FAULT_HANDLING #ifdef DEBUG_FAULT_HANDLING @@ -76,10 +77,11 @@ struct devpage { #define page_refcnt(x) ((x)->count + 1) #define virtual(x) ((x)->virtual) -#define phys_to_page(x) (page_array + __pfn(x)) -#define page_to_phys(x) __pfn_to_addr((((void *)x) - \ - (void *)page_array) \ - / sizeof(struct page)) +#define phys_to_page(x) (page_array + __pfn((x) - membank[0].start)) +#define page_to_phys(x) (__pfn_to_addr((((void *)(x)) - \ + (void *)page_array) / \ + sizeof(struct page)) + \ + membank[0].start) /* Fault data specific to this task + ptr to kernel's data */ struct fault_data { diff --git a/tasks/mm0/src/physmem.c b/tasks/mm0/src/physmem.c index 18541d5..96c418b 100644 --- a/tasks/mm0/src/physmem.c +++ b/tasks/mm0/src/physmem.c @@ -131,6 +131,9 @@ void init_physmem_secondary(struct initdata *initdata, struct membank *membank) /* Set global page array to this bank's array */ page_array = membank[0].page_array; + + /* Test that page/phys macros work */ + BUG_ON(phys_to_page(page_to_phys(&page_array[5])) != &page_array[5]) }