aboutsummaryrefslogtreecommitdiffstats
path: root/arch/frv/mm
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2005-11-28 16:43:51 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2005-11-28 17:42:23 -0500
commit8080f231224ccd3169f39e73fd750ba98d5b98a7 (patch)
treee86762b01f248dbf735e786783d3d9eb0e7c9950 /arch/frv/mm
parentc13cf856cbe16aec3007604dc013cbf3a16c6686 (diff)
[PATCH] FRV: Make the FRV arch work again
The attached patch implements a bunch of small changes to the FRV arch to make it work again. It deals with the following problems: (1) SEM_DEBUG should be SEMAPHORE_DEBUG. (2) The argument list to pcibios_penalize_isa_irq() has changed. (3) CONFIG_HIGHMEM can't be used directly in #if as it may not be defined. (4) page->private is no longer directly accessible. (5) linux/hardirq.h assumes asm/hardirq.h will include linux/irq.h (6) The IDE MMIO access functions are given pointers, not integers, and so get type casting errors. (7) __pa() is passed an explicit u64 type in drivers/char/mem.c, but that can't be cast directly to a pointer on a 32-bit platform. (8) SEMAPHORE_DEBUG should not be contingent on WAITQUEUE_DEBUG as that no longer exists. (9) PREEMPT_ACTIVE is too low a value. Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/frv/mm')
-rw-r--r--arch/frv/mm/init.c2
-rw-r--r--arch/frv/mm/pgalloc.c6
2 files changed, 4 insertions, 4 deletions
diff --git a/arch/frv/mm/init.c b/arch/frv/mm/init.c
index 79433159b5f0..765088ea8a50 100644
--- a/arch/frv/mm/init.c
+++ b/arch/frv/mm/init.c
@@ -108,7 +108,7 @@ void __init paging_init(void)
108 108
109 memset((void *) empty_zero_page, 0, PAGE_SIZE); 109 memset((void *) empty_zero_page, 0, PAGE_SIZE);
110 110
111#if CONFIG_HIGHMEM 111#ifdef CONFIG_HIGHMEM
112 if (num_physpages - num_mappedpages) { 112 if (num_physpages - num_mappedpages) {
113 pgd_t *pge; 113 pgd_t *pge;
114 pud_t *pue; 114 pud_t *pue;
diff --git a/arch/frv/mm/pgalloc.c b/arch/frv/mm/pgalloc.c
index 2c67dfe5a6b3..f76dd03ddd99 100644
--- a/arch/frv/mm/pgalloc.c
+++ b/arch/frv/mm/pgalloc.c
@@ -85,7 +85,7 @@ static inline void pgd_list_add(pgd_t *pgd)
85 struct page *page = virt_to_page(pgd); 85 struct page *page = virt_to_page(pgd);
86 page->index = (unsigned long) pgd_list; 86 page->index = (unsigned long) pgd_list;
87 if (pgd_list) 87 if (pgd_list)
88 pgd_list->private = (unsigned long) &page->index; 88 set_page_private(pgd_list, (unsigned long) &page->index);
89 pgd_list = page; 89 pgd_list = page;
90 set_page_private(page, (unsigned long)&pgd_list); 90 set_page_private(page, (unsigned long)&pgd_list);
91} 91}
@@ -94,10 +94,10 @@ static inline void pgd_list_del(pgd_t *pgd)
94{ 94{
95 struct page *next, **pprev, *page = virt_to_page(pgd); 95 struct page *next, **pprev, *page = virt_to_page(pgd);
96 next = (struct page *) page->index; 96 next = (struct page *) page->index;
97 pprev = (struct page **)page_private(page); 97 pprev = (struct page **) page_private(page);
98 *pprev = next; 98 *pprev = next;
99 if (next) 99 if (next)
100 next->private = (unsigned long) pprev; 100 set_page_private(next, (unsigned long) pprev);
101} 101}
102 102
103void pgd_ctor(void *pgd, kmem_cache_t *cache, unsigned long unused) 103void pgd_ctor(void *pgd, kmem_cache_t *cache, unsigned long unused)