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

Commit 002547b4 authored by Russell King's avatar Russell King Committed by Russell King
Browse files

[ARM] nommu: adjust headers for !MMU ARM systems



Majorily based on Hyok Choi's patches, this fixes up the asm-arm
header files for mmuless systems.  Over and above Hyok's patches:

- nommu.h merged into mmu.h (it's only a structure)
- nommu_context.h is essentially the same as mmu_context.h, but
  without the MM switching code.

so there's no point having separate files.  Also, in memory.h,
there's no point #ifndef'ing PHYS_OFFSET and END_MEM - both
CONFIG_DRAM_BASE and CONFIG_DRAM_SIZE will always be set by the
configuration scripts.

Other files have minor formatting changes, but are essentially
the same.  Hyok's original patches were signed off thusly:

  Signed-off-by: default avatarHyok S. Choi <hyok.choi@samsung.com>

Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 60b6cf68
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -10,8 +10,12 @@
#ifndef __ASM_BUGS_H
#ifndef __ASM_BUGS_H
#define __ASM_BUGS_H
#define __ASM_BUGS_H


#ifdef CONFIG_MMU
extern void check_writebuffer_bugs(void);
extern void check_writebuffer_bugs(void);


#define check_bugs() check_writebuffer_bugs()
#define check_bugs() check_writebuffer_bugs()
#else
#define check_bugs() do { } while (0)
#endif


#endif
#endif
+7 −0
Original line number Original line Diff line number Diff line
@@ -50,6 +50,8 @@
#define domain_val(dom,type)	((type) << (2*(dom)))
#define domain_val(dom,type)	((type) << (2*(dom)))


#ifndef __ASSEMBLY__
#ifndef __ASSEMBLY__

#ifdef CONFIG_MMU
#define set_domain(x)					\
#define set_domain(x)					\
	do {						\
	do {						\
	__asm__ __volatile__(				\
	__asm__ __volatile__(				\
@@ -66,5 +68,10 @@
	set_domain(thread->cpu_domain);				\
	set_domain(thread->cpu_domain);				\
	} while (0)
	} while (0)


#else
#define set_domain(x)		do { } while (0)
#define modify_domain(dom,type)	do { } while (0)
#endif

#endif
#endif
#endif /* !__ASSEMBLY__ */
#endif /* !__ASSEMBLY__ */
+57 −18
Original line number Original line Diff line number Diff line
@@ -2,6 +2,7 @@
 *  linux/include/asm-arm/memory.h
 *  linux/include/asm-arm/memory.h
 *
 *
 *  Copyright (C) 2000-2002 Russell King
 *  Copyright (C) 2000-2002 Russell King
 *  modification for nommu, Hyok S. Choi, 2004
 *
 *
 * This program is free software; you can redistribute it and/or modify
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * it under the terms of the GNU General Public License version 2 as
@@ -26,6 +27,8 @@
#include <asm/arch/memory.h>
#include <asm/arch/memory.h>
#include <asm/sizes.h>
#include <asm/sizes.h>


#ifdef CONFIG_MMU

#ifndef TASK_SIZE
#ifndef TASK_SIZE
/*
/*
 * TASK_SIZE - the maximum size of a user space task.
 * TASK_SIZE - the maximum size of a user space task.
@@ -47,6 +50,60 @@
#define PAGE_OFFSET		UL(0xc0000000)
#define PAGE_OFFSET		UL(0xc0000000)
#endif
#endif


/*
 * The module space lives between the addresses given by TASK_SIZE
 * and PAGE_OFFSET - it must be within 32MB of the kernel text.
 */
#define MODULE_END		(PAGE_OFFSET)
#define MODULE_START		(MODULE_END - 16*1048576)

#if TASK_SIZE > MODULE_START
#error Top of user space clashes with start of module space
#endif

/*
 * The XIP kernel gets mapped at the bottom of the module vm area.
 * Since we use sections to map it, this macro replaces the physical address
 * with its virtual address while keeping offset from the base section.
 */
#define XIP_VIRT_ADDR(physaddr)  (MODULE_START + ((physaddr) & 0x000fffff))

#else /* CONFIG_MMU */

/*
 * The limitation of user task size can grow up to the end of free ram region.
 * It is difficult to define and perhaps will never meet the original meaning
 * of this define that was meant to.
 * Fortunately, there is no reference for this in noMMU mode, for now.
 */
#ifndef TASK_SIZE
#define TASK_SIZE		(CONFIG_DRAM_SIZE)
#endif

#ifndef TASK_UNMAPPED_BASE
#define TASK_UNMAPPED_BASE	UL(0x00000000)
#endif

#ifndef PHYS_OFFSET
#define PHYS_OFFSET 		(CONFIG_DRAM_BASE)
#endif

#ifndef END_MEM
#define END_MEM     		(CONFIG_DRAM_BASE + CONFIG_DRAM_SIZE)
#endif

#ifndef PAGE_OFFSET
#define PAGE_OFFSET		(PHYS_OFFSET)
#endif

/*
 * The module can be at any place in ram in nommu mode.
 */
#define MODULE_END		(END_MEM)
#define MODULE_START		(PHYS_OFFSET)

#endif /* !CONFIG_MMU */

/*
/*
 * Size of DMA-consistent memory region.  Must be multiple of 2M,
 * Size of DMA-consistent memory region.  Must be multiple of 2M,
 * between 2MB and 14MB inclusive.
 * between 2MB and 14MB inclusive.
@@ -71,24 +128,6 @@
#define	__phys_to_pfn(paddr)	((paddr) >> PAGE_SHIFT)
#define	__phys_to_pfn(paddr)	((paddr) >> PAGE_SHIFT)
#define	__pfn_to_phys(pfn)	((pfn) << PAGE_SHIFT)
#define	__pfn_to_phys(pfn)	((pfn) << PAGE_SHIFT)


/*
 * The module space lives between the addresses given by TASK_SIZE
 * and PAGE_OFFSET - it must be within 32MB of the kernel text.
 */
#define MODULE_END	(PAGE_OFFSET)
#define MODULE_START	(MODULE_END - 16*1048576)

#if TASK_SIZE > MODULE_START
#error Top of user space clashes with start of module space
#endif

/*
 * The XIP kernel gets mapped at the bottom of the module vm area.
 * Since we use sections to map it, this macro replaces the physical address
 * with its virtual address while keeping offset from the base section.
 */
#define XIP_VIRT_ADDR(physaddr)  (MODULE_START + ((physaddr) & 0x000fffff))

#ifndef __ASSEMBLY__
#ifndef __ASSEMBLY__


/*
/*
+16 −0
Original line number Original line Diff line number Diff line
#ifndef __ARM_MMU_H
#ifndef __ARM_MMU_H
#define __ARM_MMU_H
#define __ARM_MMU_H


#ifdef CONFIG_MMU

typedef struct {
typedef struct {
#if __LINUX_ARM_ARCH__ >= 6
#if __LINUX_ARM_ARCH__ >= 6
	unsigned int id;
	unsigned int id;
@@ -13,4 +15,18 @@ typedef struct {
#define ASID(mm)	(0)
#define ASID(mm)	(0)
#endif
#endif


#else

/*
 * From nommu.h:
 *  Copyright (C) 2002, David McCullough <davidm@snapgear.com>
 *  modified for 2.6 by Hyok S. Choi <hyok.choi@samsung.com>
 */
typedef struct {
	struct vm_list_struct	*vmlist;
	unsigned long		end_brk;
} mm_context_t;

#endif

#endif
#endif
+2 −0
Original line number Original line Diff line number Diff line
@@ -82,6 +82,7 @@ static inline void
switch_mm(struct mm_struct *prev, struct mm_struct *next,
switch_mm(struct mm_struct *prev, struct mm_struct *next,
	  struct task_struct *tsk)
	  struct task_struct *tsk)
{
{
#ifdef CONFIG_MMU
	unsigned int cpu = smp_processor_id();
	unsigned int cpu = smp_processor_id();


	if (prev != next) {
	if (prev != next) {
@@ -91,6 +92,7 @@ switch_mm(struct mm_struct *prev, struct mm_struct *next,
		if (cache_is_vivt())
		if (cache_is_vivt())
			cpu_clear(cpu, prev->cpu_vm_mask);
			cpu_clear(cpu, prev->cpu_vm_mask);
	}
	}
#endif
}
}


#define deactivate_mm(tsk,mm)	do { } while (0)
#define deactivate_mm(tsk,mm)	do { } while (0)
Loading