#ifdef emacs
-#include "config.h"
+#include <config.h>
#include "lisp.h" /* Needed for VALBITS. */
#undef NULL
/* Macros for rounding. Note that rounding to any value is possible
by changing the definition of PAGE. */
#define PAGE (getpagesize ())
-#define ALIGNED(addr) (((unsigned int) (addr) & (page_size - 1)) == 0)
-#define ROUNDUP(size) (((unsigned int) (size) + page_size - 1) & ~(page_size - 1))
+#define ALIGNED(addr) (((unsigned long int) (addr) & (page_size - 1)) == 0)
+#define ROUNDUP(size) (((unsigned long int) (size) + page_size - 1) \
+ & ~(page_size - 1))
#define ROUND_TO_PAGE(addr) (addr & (~(page_size - 1)))
\f
/* Functions to get and return memory from the system. */
extra_bytes = ROUNDUP (50000);
page_break_value = (POINTER) ROUNDUP (break_value);
+
+ /* The extra call to real_morecore guarantees that the end of the
+ address space is a multiple of page_size, even if page_size is
+ not really the page size of the system running the binary in
+ which page_size is stored. This allows a binary to be built on a
+ system with one page size and run on a system with a smaller page
+ size. */
+ (*real_morecore) (page_break_value - break_value);
+
/* Clear the rest of the last page; this memory is in our address space
even though it is after the sbrk value. */
+ /* Doubly true, with the additional call that explicitly adds the
+ rest of that page to the address space. */
bzero (break_value, (page_break_value - break_value));
+ virtual_break_value = break_value = page_break_value;
use_relocatable_buffers = 1;
}