diff options
author | David Howells <dhowells@redhat.com> | 2005-11-28 16:43:51 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-11-28 17:42:23 -0500 |
commit | 8080f231224ccd3169f39e73fd750ba98d5b98a7 (patch) | |
tree | e86762b01f248dbf735e786783d3d9eb0e7c9950 | |
parent | c13cf856cbe16aec3007604dc013cbf3a16c6686 (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.c | 2 | ||||
-rw-r--r-- | arch/frv/mb93090-mb00/pci-irq.c | 2 | ||||
-rw-r--r-- | arch/frv/mm/init.c | 2 | ||||
-rw-r--r-- | arch/frv/mm/pgalloc.c | 6 | ||||
-rw-r--r-- | include/asm-frv/hardirq.h | 1 | ||||
-rw-r--r-- | include/asm-frv/ide.h | 8 | ||||
-rw-r--r-- | include/asm-frv/page.h | 4 | ||||
-rw-r--r-- | include/asm-frv/semaphore.h | 2 | ||||
-rw-r--r-- | include/asm-frv/thread_info.h | 2 |
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 |
24 | void semtrace(struct semaphore *sem, const char *str) | 24 | void 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 | ||
63 | void __init pcibios_penalize_isa_irq(int irq, int active) | 63 | void __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 | ||
103 | void pgd_ctor(void *pgd, kmem_cache_t *cache, unsigned long unused) | 103 | void 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 | ||
18 | typedef struct { | 19 | typedef 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 |