From 64c5a652fb76e999eea27aed777d710d747ed949 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Fri, 13 Aug 2004 23:39:45 +0000 Subject: Fixup PAGE_SIZE problems -Erik --- libc/misc/internals/__uClibc_main.c | 2 +- libc/stdlib/malloc/malloc.h | 5 ++-- libc/sysdeps/linux/alpha/bits/uClibc_page.h | 28 ++++++++++++++++++++++ libc/sysdeps/linux/alpha/sys/user.h | 2 +- libc/sysdeps/linux/common/bits/uClibc_page.h | 28 ++++++++++++++++++++++ libc/sysdeps/linux/i386/sys/user.h | 4 +--- libc/sysdeps/linux/mips/bits/uClibc_page.h | 35 ++++++++++++++++++++++++++++ libc/sysdeps/linux/mips/sys/user.h | 4 +--- 8 files changed, 97 insertions(+), 11 deletions(-) create mode 100644 libc/sysdeps/linux/alpha/bits/uClibc_page.h create mode 100644 libc/sysdeps/linux/common/bits/uClibc_page.h create mode 100644 libc/sysdeps/linux/mips/bits/uClibc_page.h (limited to 'libc') diff --git a/libc/misc/internals/__uClibc_main.c b/libc/misc/internals/__uClibc_main.c index 6d5a930b1..6b5463f58 100644 --- a/libc/misc/internals/__uClibc_main.c +++ b/libc/misc/internals/__uClibc_main.c @@ -17,7 +17,7 @@ #include #include #include -#include +#include #ifdef __UCLIBC_PROPOLICE__ extern void __guard_setup(void); #endif diff --git a/libc/stdlib/malloc/malloc.h b/libc/stdlib/malloc/malloc.h index 37afe7299..ef95994a6 100644 --- a/libc/stdlib/malloc/malloc.h +++ b/libc/stdlib/malloc/malloc.h @@ -14,9 +14,8 @@ /* The alignment we guarantee for malloc return values. */ #define MALLOC_ALIGNMENT (sizeof (double)) -/* The system pagesize we assume; we really ought to get it with - getpagesize, but gee, how annoying. */ -#define MALLOC_PAGE_SIZE 4096 +/* The system pagesize... */ +#define MALLOC_PAGE_SIZE _dl_pagesize /* The minimum size of block we request from the the system to extend the heap for small allocations (we may request a bigger block if necessary to diff --git a/libc/sysdeps/linux/alpha/bits/uClibc_page.h b/libc/sysdeps/linux/alpha/bits/uClibc_page.h new file mode 100644 index 000000000..8219a19da --- /dev/null +++ b/libc/sysdeps/linux/alpha/bits/uClibc_page.h @@ -0,0 +1,28 @@ +/* Copyright (C) 2004 Erik Andersen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* Supply an architecture specific value for PAGE_SIZE and friends. */ + +#ifndef _UCLIBC_PAGE_H +#define _UCLIBC_PAGE_H + +/* PAGE_SHIFT determines the page size -- in this case 8192 */ +#define PAGE_SHIFT 13 +#define PAGE_SIZE (1UL << PAGE_SHIFT) +#define PAGE_MASK (~(PAGE_SIZE-1)) + +#endif /* _UCLIBC_PAGE_H */ diff --git a/libc/sysdeps/linux/alpha/sys/user.h b/libc/sysdeps/linux/alpha/sys/user.h index 4cd29d2ff..f9beea082 100644 --- a/libc/sysdeps/linux/alpha/sys/user.h +++ b/libc/sysdeps/linux/alpha/sys/user.h @@ -23,7 +23,7 @@ only. Don't read too much into it. Don't use it for anything other than gdb/strace unless you know what you are doing. */ -#include +#include #include struct user diff --git a/libc/sysdeps/linux/common/bits/uClibc_page.h b/libc/sysdeps/linux/common/bits/uClibc_page.h new file mode 100644 index 000000000..e91be2d13 --- /dev/null +++ b/libc/sysdeps/linux/common/bits/uClibc_page.h @@ -0,0 +1,28 @@ +/* Copyright (C) 2004 Erik Andersen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* Supply an architecture specific value for PAGE_SIZE and friends. */ + +#ifndef _UCLIBC_PAGE_H +#define _UCLIBC_PAGE_H + +/* PAGE_SHIFT determines the page size -- in this case 4096 */ +#define PAGE_SHIFT 12 +#define PAGE_SIZE (1UL << PAGE_SHIFT) +#define PAGE_MASK (~(PAGE_SIZE-1)) + +#endif /* _UCLIBC_PAGE_H */ diff --git a/libc/sysdeps/linux/i386/sys/user.h b/libc/sysdeps/linux/i386/sys/user.h index aca46e7d3..c5cfff256 100644 --- a/libc/sysdeps/linux/i386/sys/user.h +++ b/libc/sysdeps/linux/i386/sys/user.h @@ -92,9 +92,7 @@ struct user int u_debugreg [8]; }; -#define PAGE_SHIFT 12 -#define PAGE_SIZE (1UL << PAGE_SHIFT) -#define PAGE_MASK (~(PAGE_SIZE-1)) +#include #define NBPG PAGE_SIZE #define UPAGES 1 #define HOST_TEXT_START_ADDR (u.start_code) diff --git a/libc/sysdeps/linux/mips/bits/uClibc_page.h b/libc/sysdeps/linux/mips/bits/uClibc_page.h new file mode 100644 index 000000000..915918c36 --- /dev/null +++ b/libc/sysdeps/linux/mips/bits/uClibc_page.h @@ -0,0 +1,35 @@ +/* Copyright (C) 2004 Erik Andersen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* Supply an architecture specific value for PAGE_SIZE and friends. */ + +#ifndef _UCLIBC_PAGE_H +#define _UCLIBC_PAGE_H + +/* PAGE_SIZE of mips is sortof wierd, and depends on how the kernel + * happens to have been configured. It might use 4KB, 16K or 64K + * pages. To avoid using the current kernel configuration settings, + * uClibc will simply use 4KB on mips and call it good. */ +#if 0 +#define PAGE_SHIFT 16 +#define PAGE_SHIFT 14 +#endif +#define PAGE_SHIFT 12 +#define PAGE_SIZE (1UL << PAGE_SHIFT) +#define PAGE_MASK (~(PAGE_SIZE-1)) + +#endif /* _UCLIBC_PAGE_H */ diff --git a/libc/sysdeps/linux/mips/sys/user.h b/libc/sysdeps/linux/mips/sys/user.h index 8b21ff278..8e6b1e1ef 100644 --- a/libc/sysdeps/linux/mips/sys/user.h +++ b/libc/sysdeps/linux/mips/sys/user.h @@ -205,9 +205,7 @@ struct user { #endif -#define PAGE_SHIFT 12 -#define PAGE_SIZE (1UL << PAGE_SHIFT) -#define PAGE_MASK (~(PAGE_SIZE-1)) +#include #define NBPG PAGE_SIZE #define UPAGES 1 #define HOST_TEXT_START_ADDR (u.start_code) -- cgit v1.2.3