#include "init.h"
#include "kern_constants.h"
+extern char __binary_start;
+
/* Changed during early boot */
unsigned long *empty_zero_page = NULL;
unsigned long *empty_bad_page = NULL;
void mem_init(void)
{
+ unsigned long start;
+
max_low_pfn = (high_physmem - uml_physmem) >> PAGE_SHIFT;
/* clear the zero-page */
free_bootmem(__pa(brk_end), uml_reserved - brk_end);
uml_reserved = brk_end;
+ /* Fill in any hole at the start of the binary */
+ start = (unsigned long) &__binary_start & PAGE_MASK;
+ if(uml_physmem != start){
+ map_memory(uml_physmem, __pa(uml_physmem), start - uml_physmem,
+ 1, 1, 0);
+ }
+
/* this will put all low memory onto the freelists */
totalram_pages = free_all_bootmem();
totalhigh_pages = highmem >> PAGE_SHIFT;