1 /* 2 * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #ifndef __XLAT_TABLES_ARCH_H__ 8 #define __XLAT_TABLES_ARCH_H__ 9 10 #ifdef AARCH32 11 #include "aarch32/xlat_tables_aarch32.h" 12 #else 13 #include "aarch64/xlat_tables_aarch64.h" 14 #endif 15 16 /* 17 * Evaluates to 1 if the given virtual address space size is valid, or 0 if it's 18 * not. 19 * 20 * A valid size is one that is a power of 2 and is within the architectural 21 * limits. Not that these limits are different for AArch32 and AArch64. 22 */ 23 #define CHECK_VIRT_ADDR_SPACE_SIZE(size) \ 24 (((size) >= MIN_VIRT_ADDR_SPACE_SIZE) && \ 25 ((size) <= MAX_VIRT_ADDR_SPACE_SIZE) && \ 26 IS_POWER_OF_TWO(size)) 27 28 /* 29 * Evaluates to 1 if the given physical address space size is a power of 2, 30 * or 0 if it's not. 31 */ 32 #define CHECK_PHY_ADDR_SPACE_SIZE(size) \ 33 (IS_POWER_OF_TWO(size)) 34 35 /* 36 * Compute the number of entries required at the initial lookup level to address 37 * the whole virtual address space. 38 */ 39 #define GET_NUM_BASE_LEVEL_ENTRIES(addr_space_size) \ 40 ((addr_space_size) >> \ 41 XLAT_ADDR_SHIFT(GET_XLAT_TABLE_LEVEL_BASE(addr_space_size))) 42 43 #endif /* __XLAT_TABLES_ARCH_H__ */ 44