162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci#include <sys/mman.h>
362306a36Sopenharmony_ci#include <mmap_test.h>
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci#include "../../kselftest_harness.h"
662306a36Sopenharmony_ci
762306a36Sopenharmony_ciTEST(infinite_rlimit)
862306a36Sopenharmony_ci{
962306a36Sopenharmony_ci// Only works on 64 bit
1062306a36Sopenharmony_ci#if __riscv_xlen == 64
1162306a36Sopenharmony_ci	struct addresses mmap_addresses;
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci	EXPECT_EQ(BOTTOM_UP, memory_layout());
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci	do_mmaps(&mmap_addresses);
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci	EXPECT_NE(MAP_FAILED, mmap_addresses.no_hint);
1862306a36Sopenharmony_ci	EXPECT_NE(MAP_FAILED, mmap_addresses.on_37_addr);
1962306a36Sopenharmony_ci	EXPECT_NE(MAP_FAILED, mmap_addresses.on_38_addr);
2062306a36Sopenharmony_ci	EXPECT_NE(MAP_FAILED, mmap_addresses.on_46_addr);
2162306a36Sopenharmony_ci	EXPECT_NE(MAP_FAILED, mmap_addresses.on_47_addr);
2262306a36Sopenharmony_ci	EXPECT_NE(MAP_FAILED, mmap_addresses.on_55_addr);
2362306a36Sopenharmony_ci	EXPECT_NE(MAP_FAILED, mmap_addresses.on_56_addr);
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci	EXPECT_GT(1UL << 47, (unsigned long)mmap_addresses.no_hint);
2662306a36Sopenharmony_ci	EXPECT_GT(1UL << 38, (unsigned long)mmap_addresses.on_37_addr);
2762306a36Sopenharmony_ci	EXPECT_GT(1UL << 38, (unsigned long)mmap_addresses.on_38_addr);
2862306a36Sopenharmony_ci	EXPECT_GT(1UL << 38, (unsigned long)mmap_addresses.on_46_addr);
2962306a36Sopenharmony_ci	EXPECT_GT(1UL << 47, (unsigned long)mmap_addresses.on_47_addr);
3062306a36Sopenharmony_ci	EXPECT_GT(1UL << 47, (unsigned long)mmap_addresses.on_55_addr);
3162306a36Sopenharmony_ci	EXPECT_GT(1UL << 56, (unsigned long)mmap_addresses.on_56_addr);
3262306a36Sopenharmony_ci#endif
3362306a36Sopenharmony_ci}
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ciTEST_HARNESS_MAIN
36