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

Commit 8d5796d2 authored by Lennert Buytenhek's avatar Lennert Buytenhek Committed by Russell King
Browse files

[ARM] 5222/1: Allow configuring user:kernel split via Kconfig



This patch adds a config option (CONFIG_VMSPLIT_*) to allow choosing
between 3:1, 2:2 and 1:3 user:kernel memory splits.

Tested-by: default avatarRiku Voipio <riku.voipio@iki.fi>
Signed-off-by: default avatarLennert Buytenhek <buytenh@marvell.com>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 2d4b6c9a
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -311,6 +311,7 @@ config ARCH_IOP13XX
	select PLAT_IOP
	select PCI
	select ARCH_SUPPORTS_MSI
	select VMSPLIT_1G
	help
	  Support for Intel's IOP13XX (XScale) family of processors.

@@ -739,6 +740,29 @@ config SMP

	  If you don't know what to do here, say N.

choice
	prompt "Memory split"
	default VMSPLIT_3G
	help
	  Select the desired split between kernel and user memory.

	  If you are not absolutely sure what you are doing, leave this
	  option alone!

	config VMSPLIT_3G
		bool "3G/1G user/kernel split"
	config VMSPLIT_2G
		bool "2G/2G user/kernel split"
	config VMSPLIT_1G
		bool "1G/3G user/kernel split"
endchoice

config PAGE_OFFSET
	hex
	default 0x40000000 if VMSPLIT_1G
	default 0x80000000 if VMSPLIT_2G
	default 0xC0000000

config NR_CPUS
	int "Maximum number of CPUs (2-32)"
	range 2 32
+10 −20
Original line number Diff line number Diff line
@@ -13,43 +13,33 @@
#ifndef __ASM_ARM_MEMORY_H
#define __ASM_ARM_MEMORY_H

#include <linux/compiler.h>
#include <linux/const.h>
#include <mach/memory.h>
#include <asm/sizes.h>

/*
 * Allow for constants defined here to be used from assembly code
 * by prepending the UL suffix only with actual C code compilation.
 */
#ifndef __ASSEMBLY__
#define UL(x) (x##UL)
#else
#define UL(x) (x)
#endif

#include <linux/compiler.h>
#include <mach/memory.h>
#include <asm/sizes.h>
#define UL(x) _AC(x, UL)

#ifdef CONFIG_MMU

#ifndef TASK_SIZE
/*
 * PAGE_OFFSET - the virtual address of the start of the kernel image
 * TASK_SIZE - the maximum size of a user space task.
 * TASK_UNMAPPED_BASE - the lower boundary of the mmap VM area
 */
#define TASK_SIZE		UL(0xbf000000)
#define TASK_UNMAPPED_BASE	UL(0x40000000)
#endif
#define PAGE_OFFSET		UL(CONFIG_PAGE_OFFSET)
#define TASK_SIZE		(UL(CONFIG_PAGE_OFFSET) - UL(0x01000000))
#define TASK_UNMAPPED_BASE	(UL(CONFIG_PAGE_OFFSET) / 3)

/*
 * The maximum size of a 26-bit user space task.
 */
#define TASK_SIZE_26		UL(0x04000000)

/*
 * Page offset: 3GB
 */
#ifndef PAGE_OFFSET
#define PAGE_OFFSET		UL(0xc0000000)
#endif

/*
 * The module space lives between the addresses given by TASK_SIZE
 * and PAGE_OFFSET - it must be within 32MB of the kernel text.
+0 −10
Original line number Diff line number Diff line
@@ -42,10 +42,6 @@ extern unsigned long __bus_to_virt(unsigned long);

#endif

/* Task size and page offset at 3GB */
#define TASK_SIZE		UL(0xbf000000)
#define PAGE_OFFSET		UL(0xc0000000)

/*
 * Cache flushing area.
 */
@@ -56,12 +52,6 @@ extern unsigned long __bus_to_virt(unsigned long);
 */
#define PHYS_OFFSET		UL(0x00000000)

/*
 * This decides where the kernel will search for a free chunk of vm
 * space during mmap's.
 */
#define TASK_UNMAPPED_BASE ((TASK_SIZE + 0x01000000) / 3)

#define FLUSH_BASE_PHYS		0x50000000

#endif
+0 −3
Original line number Diff line number Diff line
@@ -7,9 +7,6 @@
 * Physical DRAM offset.
 */
#define PHYS_OFFSET	UL(0x00000000)
#define TASK_SIZE  	UL(0x3f000000)
#define PAGE_OFFSET	UL(0x40000000)
#define TASK_UNMAPPED_BASE ((TASK_SIZE + 0x01000000) / 3)

#ifndef __ASSEMBLY__