aboutsummaryrefslogtreecommitdiffstats
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
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>
-rw-r--r--arch/frv/kernel/semaphore.c2
-rw-r--r--arch/frv/mb93090-mb00/pci-irq.c2
-rw-r--r--arch/frv/mm/init.c2
-rw-r--r--arch/frv/mm/pgalloc.c6
-rw-r--r--include/asm-frv/hardirq.h1
-rw-r--r--include/asm-frv/ide.h8
-rw-r--r--include/asm-frv/page.h4
-rw-r--r--include/asm-frv/semaphore.h2
-rw-r--r--include/asm-frv/thread_info.h2
9 files changed, 15 insertions, 14 deletions
diff --git a/arch/frv/kernel/semaphore.c b/arch/frv/kernel/semaphore.c
index 5cba9c1f2b3d..7971d680ae29 100644
--- a/arch/frv/kernel/semaphore.c
+++ b/arch/frv/kernel/semaphore.c
@@ -20,7 +20,7 @@ struct sem_waiter {
20 struct task_struct *task; 20 struct task_struct *task;
21}; 21};
22 22
23#if SEM_DEBUG 23#if SEMAPHORE_DEBUG
24void semtrace(struct semaphore *sem, const char *str) 24void semtrace(struct semaphore *sem, const char *str)
25{ 25{
26 if (sem->debug) 26 if (sem->debug)
diff --git a/arch/frv/mb93090-mb00/pci-irq.c b/arch/frv/mb93090-mb00/pci-irq.c
index af981bda015c..24622d89b1ca 100644
--- a/arch/frv/mb93090-mb00/pci-irq.c
+++ b/arch/frv/mb93090-mb00/pci-irq.c
@@ -60,7 +60,7 @@ void __init pcibios_fixup_irqs(void)
60 } 60 }
61} 61}
62 62
63void __init pcibios_penalize_isa_irq(int irq, int active) 63void __init pcibios_penalize_isa_irq(int irq)
64{ 64{
65} 65}
66 66
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)
diff --git a/include/asm-frv/hardirq.h b/include/asm-frv/hardirq.h
index 5248ca054909..685123981e8b 100644
--- a/include/asm-frv/hardirq.h
+++ b/include/asm-frv/hardirq.h
@@ -14,6 +14,7 @@
14 14
15#include <linux/config.h> 15#include <linux/config.h>
16#include <linux/threads.h> 16#include <linux/threads.h>
17#include <linux/irq.h>
17 18
18typedef struct { 19typedef struct {
19 unsigned int __softirq_pending; 20 unsigned int __softirq_pending;
diff --git a/include/asm-frv/ide.h b/include/asm-frv/ide.h
index f9caecf7e3c0..ae031eaa3dd2 100644
--- a/include/asm-frv/ide.h
+++ b/include/asm-frv/ide.h
@@ -33,10 +33,10 @@
33/* 33/*
34 * some bits needed for parts of the IDE subsystem to compile 34 * some bits needed for parts of the IDE subsystem to compile
35 */ 35 */
36#define __ide_mm_insw(port, addr, n) insw(port, addr, n) 36#define __ide_mm_insw(port, addr, n) insw((unsigned long) (port), addr, n)
37#define __ide_mm_insl(port, addr, n) insl(port, addr, n) 37#define __ide_mm_insl(port, addr, n) insl((unsigned long) (port), addr, n)
38#define __ide_mm_outsw(port, addr, n) outsw(port, addr, n) 38#define __ide_mm_outsw(port, addr, n) outsw((unsigned long) (port), addr, n)
39#define __ide_mm_outsl(port, addr, n) outsl(port, addr, n) 39#define __ide_mm_outsl(port, addr, n) outsl((unsigned long) (port), addr, n)
40 40
41 41
42#endif /* __KERNEL__ */ 42#endif /* __KERNEL__ */
diff --git a/include/asm-frv/page.h b/include/asm-frv/page.h
index 4feba567e7fd..b8221b611b5c 100644
--- a/include/asm-frv/page.h
+++ b/include/asm-frv/page.h
@@ -47,8 +47,8 @@ typedef struct { unsigned long pgprot; } pgprot_t;
47 47
48#define devmem_is_allowed(pfn) 1 48#define devmem_is_allowed(pfn) 1
49 49
50#define __pa(vaddr) virt_to_phys((void *) vaddr) 50#define __pa(vaddr) virt_to_phys((void *) (unsigned long) (vaddr))
51#define __va(paddr) phys_to_virt((unsigned long) paddr) 51#define __va(paddr) phys_to_virt((unsigned long) (paddr))
52 52
53#define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT) 53#define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT)
54 54
diff --git a/include/asm-frv/semaphore.h b/include/asm-frv/semaphore.h
index b18396288df1..907c5c3643cc 100644
--- a/include/asm-frv/semaphore.h
+++ b/include/asm-frv/semaphore.h
@@ -20,7 +20,7 @@
20#include <linux/spinlock.h> 20#include <linux/spinlock.h>
21#include <linux/rwsem.h> 21#include <linux/rwsem.h>
22 22
23#define SEMAPHORE_DEBUG WAITQUEUE_DEBUG 23#define SEMAPHORE_DEBUG 0
24 24
25/* 25/*
26 * the semaphore definition 26 * the semaphore definition
diff --git a/include/asm-frv/thread_info.h b/include/asm-frv/thread_info.h
index c8cba7836f0d..60f6b2aee76d 100644
--- a/include/asm-frv/thread_info.h
+++ b/include/asm-frv/thread_info.h
@@ -58,7 +58,7 @@ struct thread_info {
58 58
59#endif 59#endif
60 60
61#define PREEMPT_ACTIVE 0x4000000 61#define PREEMPT_ACTIVE 0x10000000
62 62
63/* 63/*
64 * macros/functions for gaining access to the thread information structure 64 * macros/functions for gaining access to the thread information structure