23bbd586ed
When UML is built as a static binary, it segfaults when run. The reason is that a memory hole that is present in dynamic binaries isn't there in static binaries, and it contains essential stuff. This fix removes the code which maps some anonymous memory into that hole and cleans up some related code. Signed-off-by: Jeff Dike <jdike@addtoit.com> Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
37 lines
901 B
C
37 lines
901 B
C
/*
|
|
* Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
|
|
* Licensed under the GPL
|
|
*/
|
|
|
|
#include "linux/stddef.h"
|
|
#include "linux/config.h"
|
|
#include "linux/mm.h"
|
|
#include "asm/uaccess.h"
|
|
#include "mem_user.h"
|
|
#include "kern_util.h"
|
|
#include "user_util.h"
|
|
#include "kern.h"
|
|
#include "tt.h"
|
|
|
|
void before_mem_tt(unsigned long brk_start)
|
|
{
|
|
if(debug)
|
|
remap_data(UML_ROUND_DOWN(&_stext), UML_ROUND_UP(&_etext), 1);
|
|
remap_data(UML_ROUND_DOWN(&_sdata), UML_ROUND_UP(&_edata), 1);
|
|
remap_data(UML_ROUND_DOWN(&__bss_start), UML_ROUND_UP(&_end), 1);
|
|
}
|
|
|
|
#define SIZE ((CONFIG_NEST_LEVEL + CONFIG_KERNEL_HALF_GIGS) * 0x20000000)
|
|
#define START (CONFIG_TOP_ADDR - SIZE)
|
|
|
|
unsigned long set_task_sizes_tt(unsigned long *task_size_out)
|
|
{
|
|
unsigned long host_task_size;
|
|
|
|
/* Round up to the nearest 4M */
|
|
host_task_size = ROUND_4M((unsigned long) &host_task_size);
|
|
*task_size_out = START;
|
|
|
|
return host_task_size;
|
|
}
|