[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
#----------------------------------------------------------------------------
// 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));
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)
;
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
// 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
// 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