Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8080f231 authored by David Howells's avatar David Howells Committed by Linus Torvalds
Browse files

[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: default avatarDavid Howells <dhowells@redhat.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent c13cf856
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@ struct sem_waiter {
	struct task_struct	*task;
};

#if SEM_DEBUG
#if SEMAPHORE_DEBUG
void semtrace(struct semaphore *sem, const char *str)
{
	if (sem->debug)
+1 −1
Original line number Diff line number Diff line
@@ -60,7 +60,7 @@ void __init pcibios_fixup_irqs(void)
	}
}

void __init pcibios_penalize_isa_irq(int irq, int active)
void __init pcibios_penalize_isa_irq(int irq)
{
}

+1 −1
Original line number Diff line number Diff line
@@ -108,7 +108,7 @@ void __init paging_init(void)

	memset((void *) empty_zero_page, 0, PAGE_SIZE);

#if CONFIG_HIGHMEM
#ifdef CONFIG_HIGHMEM
	if (num_physpages - num_mappedpages) {
		pgd_t *pge;
		pud_t *pue;
+3 −3
Original line number Diff line number Diff line
@@ -85,7 +85,7 @@ static inline void pgd_list_add(pgd_t *pgd)
	struct page *page = virt_to_page(pgd);
	page->index = (unsigned long) pgd_list;
	if (pgd_list)
		pgd_list->private = (unsigned long) &page->index;
		set_page_private(pgd_list, (unsigned long) &page->index);
	pgd_list = page;
	set_page_private(page, (unsigned long)&pgd_list);
}
@@ -97,7 +97,7 @@ static inline void pgd_list_del(pgd_t *pgd)
	pprev = (struct page **) page_private(page);
	*pprev = next;
	if (next)
		next->private = (unsigned long) pprev;
		set_page_private(next, (unsigned long) pprev);
}

void pgd_ctor(void *pgd, kmem_cache_t *cache, unsigned long unused)
+1 −0
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@

#include <linux/config.h>
#include <linux/threads.h>
#include <linux/irq.h>

typedef struct {
	unsigned int __softirq_pending;
Loading