/*
 * Copyright 2014, NICTA
 *
 * This software may be distributed and modified according to the terms of
 * the BSD 2-Clause license. Note that NO WARRANTY is provided.
 * See "LICENSE_BSD2.txt" for details.
 *
 * @TAG(NICTA_BSD)
 */

#ifndef _VSPACE_PAGE_H_
#define _VSPACE_PAGE_H_

#include <stdbool.h>
#include <stdint.h>
#include <utils/arith.h>

#include <vspace/arch/page.h>

#define SEL4_NUM_PAGE_SIZES ((int) ARRAY_SIZE(sel4_page_sizes))

static inline bool
sel4_valid_size_bits(size_t size_bits)
{
    for (int i = 0; i < SEL4_NUM_PAGE_SIZES && size_bits >= sel4_page_sizes[i]; i++) {
        /* sanity check, sel4_page_sizes should be ordered */
        if (i > 0) {
            assert(sel4_page_sizes[i - 1] < sel4_page_sizes[i]);
        }
        if (size_bits == sel4_page_sizes[i]) {
            return true;
        }
    }

    return false;
}

#endif /* _VSPACE_PAGE_H_ */
