diff options
Diffstat (limited to 'arch/mips/include/asm')
| -rw-r--r-- | arch/mips/include/asm/mach-generic/spaces.h | 9 | ||||
| -rw-r--r-- | arch/mips/include/asm/processor.h | 5 | ||||
| -rw-r--r-- | arch/mips/include/asm/uaccess.h | 11 | 
3 files changed, 23 insertions, 2 deletions
diff --git a/arch/mips/include/asm/mach-generic/spaces.h b/arch/mips/include/asm/mach-generic/spaces.h index 73d717a75cb..5b2f2e68e57 100644 --- a/arch/mips/include/asm/mach-generic/spaces.h +++ b/arch/mips/include/asm/mach-generic/spaces.h @@ -20,14 +20,21 @@  #endif  #ifdef CONFIG_32BIT - +#ifdef CONFIG_KVM_GUEST +#define CAC_BASE		_AC(0x40000000, UL) +#else  #define CAC_BASE		_AC(0x80000000, UL) +#endif  #define IO_BASE			_AC(0xa0000000, UL)  #define UNCAC_BASE		_AC(0xa0000000, UL)  #ifndef MAP_BASE +#ifdef CONFIG_KVM_GUEST +#define MAP_BASE		_AC(0x60000000, UL) +#else  #define MAP_BASE		_AC(0xc0000000, UL)  #endif +#endif  /*   * Memory above this physical address will be considered highmem. diff --git a/arch/mips/include/asm/processor.h b/arch/mips/include/asm/processor.h index 2a5fa7abb34..71686c897de 100644 --- a/arch/mips/include/asm/processor.h +++ b/arch/mips/include/asm/processor.h @@ -44,11 +44,16 @@ extern unsigned int vced_count, vcei_count;  #define SPECIAL_PAGES_SIZE PAGE_SIZE  #ifdef CONFIG_32BIT +#ifdef CONFIG_KVM_GUEST +/* User space process size is limited to 1GB in KVM Guest Mode */ +#define TASK_SIZE	0x3fff8000UL +#else  /*   * User space process size: 2GB. This is hardcoded into a few places,   * so don't change it unless you know what you are doing.   */  #define TASK_SIZE	0x7fff8000UL +#endif  #ifdef __KERNEL__  #define STACK_TOP_MAX	TASK_SIZE diff --git a/arch/mips/include/asm/uaccess.h b/arch/mips/include/asm/uaccess.h index bd87e36bf26..b46caab453a 100644 --- a/arch/mips/include/asm/uaccess.h +++ b/arch/mips/include/asm/uaccess.h @@ -23,7 +23,11 @@   */  #ifdef CONFIG_32BIT -#define __UA_LIMIT	0x80000000UL +#ifdef CONFIG_KVM_GUEST +#define __UA_LIMIT 0x40000000UL +#else +#define __UA_LIMIT 0x80000000UL +#endif  #define __UA_ADDR	".word"  #define __UA_LA		"la" @@ -55,8 +59,13 @@ extern u64 __ua_limit;   * address in this range it's the process's problem, not ours :-)   */ +#ifdef CONFIG_KVM_GUEST +#define KERNEL_DS	((mm_segment_t) { 0x80000000UL }) +#define USER_DS		((mm_segment_t) { 0xC0000000UL }) +#else  #define KERNEL_DS	((mm_segment_t) { 0UL })  #define USER_DS		((mm_segment_t) { __UA_LIMIT }) +#endif  #define VERIFY_READ    0  #define VERIFY_WRITE   1  |