mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-03 18:13:01 +00:00
mips: determine page size at runtime
Instead of passing an option to the configure script, use runtime detection of the page size. Remove the "--with-pagesize" parameter from the configure script. Also accept 8k and 32k as valid page sizes. Patch by Maran Pakkirisamy It fixes BZ#342356. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15813
This commit is contained in:
parent
8a8b65d1f2
commit
d7a9a37a07
26
configure.ac
26
configure.ac
@ -930,32 +930,6 @@ AC_CACHE_CHECK([for using the undefined behaviour sanitiser], vg_cv_ubsan,
|
||||
[vg_cv_ubsan=$enableval],
|
||||
[vg_cv_ubsan=no])])
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Define MIPS_PAGE_SHIFT (--with-pagesize)
|
||||
#----------------------------------------------------------------------------
|
||||
AC_ARG_WITH(pagesize,
|
||||
[ --with-pagesize= override detected page size (4, 16 or 64)],
|
||||
[psize=$withval],
|
||||
[psize=0]
|
||||
)
|
||||
|
||||
if test "$psize" = "0"; then
|
||||
psizer=`getconf PAGESIZE`
|
||||
psize=$((${psizer}/1024))
|
||||
fi
|
||||
|
||||
if test "$psize" = "4"; then
|
||||
AC_DEFINE([MIPS_PAGE_SHIFT], 12, [configured page size 4k])
|
||||
elif test "$psize" = "16"; then
|
||||
AC_DEFINE([MIPS_PAGE_SHIFT], 14, [configured page size 16k])
|
||||
elif test "$psize" = "64"; then
|
||||
AC_DEFINE([MIPS_PAGE_SHIFT], 16, [configured page size 64k])
|
||||
else
|
||||
AC_DEFINE([MIPS_PAGE_SHIFT], 12, [configured default page size 4k])
|
||||
fi
|
||||
AC_MSG_RESULT([checking for Pagesize... ${psize}k])
|
||||
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Extra fine-tuning of installation directories
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
@ -1743,10 +1743,12 @@ Int valgrind_main ( Int argc, HChar **argv, HChar **envp )
|
||||
// p: logging, plausible-stack
|
||||
//--------------------------------------------------------------
|
||||
VG_(debugLog)(1, "main", "Starting the address space manager\n");
|
||||
vg_assert(VKI_PAGE_SIZE == 4096 || VKI_PAGE_SIZE == 65536
|
||||
|| VKI_PAGE_SIZE == 16384);
|
||||
vg_assert(VKI_MAX_PAGE_SIZE == 4096 || VKI_MAX_PAGE_SIZE == 65536
|
||||
|| VKI_MAX_PAGE_SIZE == 16384);
|
||||
vg_assert(VKI_PAGE_SIZE == 4096 || VKI_PAGE_SIZE == 8192
|
||||
|| VKI_PAGE_SIZE == 16384 || VKI_PAGE_SIZE == 32768
|
||||
|| VKI_PAGE_SIZE == 65536);
|
||||
vg_assert(VKI_MAX_PAGE_SIZE == 4096 || VKI_MAX_PAGE_SIZE == 8192
|
||||
|| VKI_MAX_PAGE_SIZE == 16384 || VKI_MAX_PAGE_SIZE == 32768
|
||||
|| VKI_MAX_PAGE_SIZE == 65536);
|
||||
vg_assert(VKI_PAGE_SIZE <= VKI_MAX_PAGE_SIZE);
|
||||
vg_assert(VKI_PAGE_SIZE == (1 << VKI_PAGE_SHIFT));
|
||||
vg_assert(VKI_MAX_PAGE_SIZE == (1 << VKI_MAX_PAGE_SHIFT));
|
||||
@ -3324,11 +3326,12 @@ void _start_in_C_linux ( UWord* pArgc )
|
||||
the_iicii.sp_at_startup = (Addr)pArgc;
|
||||
|
||||
# if defined(VGP_ppc32_linux) || defined(VGP_ppc64be_linux) \
|
||||
|| defined(VGP_ppc64le_linux) || defined(VGP_arm64_linux)
|
||||
|| defined(VGP_ppc64le_linux) || defined(VGP_arm64_linux) \
|
||||
|| defined(VGP_mips32_linux) || defined(VGP_mips64_linux)
|
||||
{
|
||||
/* ppc32/ppc64 can be configured with different page sizes.
|
||||
Determine this early. This is an ugly hack and really should
|
||||
be moved into valgrind_main. */
|
||||
/* ppc32/ppc64, arm64, mips32/64 can be configured with different
|
||||
page sizes. Determine this early. This is an ugly hack and really
|
||||
should be moved into valgrind_main. */
|
||||
UWord *sp = &pArgc[1+argc+1];
|
||||
while (*sp++ != 0)
|
||||
;
|
||||
|
||||
@ -39,11 +39,12 @@
|
||||
describing the kernel interface, so this file is nearly empty. */
|
||||
|
||||
|
||||
/* ppc32/64-linux determines page size at startup, hence m_vki is
|
||||
the logical place to store that info. */
|
||||
/* ppc32/64, arm64 and mips32/64 (linux) determine page size at startup,
|
||||
hence m_vki is the logical place to store that info. */
|
||||
|
||||
#if defined(VGP_ppc32_linux) || defined(VGP_ppc64be_linux) \
|
||||
|| defined(VGP_ppc64le_linux) || defined(VGP_arm64_linux)
|
||||
|| defined(VGP_ppc64le_linux) || defined(VGP_arm64_linux) \
|
||||
|| defined(VGP_mips32_linux) || defined(VGP_mips64_linux)
|
||||
unsigned long VKI_PAGE_SHIFT = 12;
|
||||
unsigned long VKI_PAGE_SIZE = 1UL << 12;
|
||||
#endif
|
||||
|
||||
@ -71,12 +71,12 @@ typedef unsigned long long __vki_u64;
|
||||
// From linux-2.6.35.5/include/asm-mips/page.h
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
/* PAGE_SHIFT determines the page size */
|
||||
#define VKI_PAGE_SHIFT MIPS_PAGE_SHIFT
|
||||
#define VKI_PAGE_SIZE (1UL << VKI_PAGE_SHIFT)
|
||||
/* MIPS32 uses runtime pagesize detection */
|
||||
extern UWord VKI_PAGE_SHIFT;
|
||||
extern UWord VKI_PAGE_SIZE;
|
||||
#define VKI_PAGE_MASK (~(VKI_PAGE_SIZE-1))
|
||||
#define VKI_MAX_PAGE_SHIFT VKI_PAGE_SHIFT
|
||||
#define VKI_MAX_PAGE_SIZE VKI_PAGE_SIZE
|
||||
#define VKI_MAX_PAGE_SHIFT 16
|
||||
#define VKI_MAX_PAGE_SIZE (1UL << VKI_MAX_PAGE_SHIFT)
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// From linux-2.6.35.9/arch/mips/include/bits/shm.h
|
||||
|
||||
@ -80,12 +80,12 @@ typedef unsigned long long __vki_u64;
|
||||
// From linux-2.6.35.9/include/asm-mips/page.h
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
/* PAGE_SHIFT determines the page size */
|
||||
#define VKI_PAGE_SHIFT MIPS_PAGE_SHIFT
|
||||
#define VKI_PAGE_SIZE (1UL << VKI_PAGE_SHIFT)
|
||||
#define VKI_PAGE_MASK (~(VKI_PAGE_SIZE-1))
|
||||
#define VKI_MAX_PAGE_SHIFT VKI_PAGE_SHIFT
|
||||
#define VKI_MAX_PAGE_SIZE VKI_PAGE_SIZE
|
||||
/* MIPS64 uses runtime pagesize detection */
|
||||
extern UWord VKI_PAGE_SHIFT;
|
||||
extern UWord VKI_PAGE_SIZE;
|
||||
#define VKI_PAGE_MASK (~(VKI_PAGE_SIZE-1))
|
||||
#define VKI_MAX_PAGE_SHIFT 16
|
||||
#define VKI_MAX_PAGE_SIZE (1UL << VKI_MAX_PAGE_SHIFT)
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// From linux-2.6.35.9/arch/mips/include/bits/shm.h
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user