#include "pub_tool_vki.h"
#include "m_libcbase.c"
+/* On PPC, MIPS and ARM64 Linux VKI_PAGE_SIZE is a variable, not a macro. */
+#if defined(VGP_ppc32_linux) || defined(VGP_ppc64be_linux) \
+ || defined(VGP_ppc64le_linux)
+unsigned long VKI_PAGE_SIZE = 1UL << 12;
+#elif defined(VGP_arm64_linux)
+unsigned long VKI_PAGE_SIZE = 1UL << 16;
+#elif defined(VGP_mips32_linux) || defined(VGP_mips64_linux)
+#include <unistd.h>
+unsigned long VKI_PAGE_SIZE;
+#endif
+
/* Provide a stub to not have to pull in m_debuglog.c */
void VG_(debugLog) ( Int level, const HChar* modulename,
const HChar* format, ... )
CHECK( VG_STREQN(3, "abcd", "abce"));
}
-// On PPC/Linux VKI_PAGE_SIZE is a variable, not a macro.
-#if defined(VGP_ppc32_linux) || defined(VGP_ppc64be_linux) \
- || defined(VGP_ppc64le_linux)
-unsigned long VKI_PAGE_SIZE = 1UL << 12;
-#elif defined(VGP_arm64_linux)
-unsigned long VKI_PAGE_SIZE = 1UL << 16;
-#endif
-
void test_VG_IS_XYZ_ALIGNED(void)
{
CHECK( VG_IS_2_ALIGNED(0x0) );
int main(void)
{
+#if defined(VGP_mips32_linux) || defined(VGP_mips64_linux)
+ VKI_PAGE_SIZE = sysconf(_SC_PAGESIZE);
+#endif
// Nb: the order of the tests is based on the order of the code in
// m_libcbase.c, except that macros defined in pub_tool_libcbase.h are
// tested first.