162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci#include <linux/bug.h> 362306a36Sopenharmony_ci#include <linux/export.h> 462306a36Sopenharmony_ci#include <linux/types.h> 562306a36Sopenharmony_ci#include <linux/mmdebug.h> 662306a36Sopenharmony_ci#include <linux/mm.h> 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#include <asm/memory.h> 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ciphys_addr_t __virt_to_phys(unsigned long x) 1162306a36Sopenharmony_ci{ 1262306a36Sopenharmony_ci WARN(!__is_lm_address(__tag_reset(x)), 1362306a36Sopenharmony_ci "virt_to_phys used for non-linear address: %pK (%pS)\n", 1462306a36Sopenharmony_ci (void *)x, 1562306a36Sopenharmony_ci (void *)x); 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci return __virt_to_phys_nodebug(x); 1862306a36Sopenharmony_ci} 1962306a36Sopenharmony_ciEXPORT_SYMBOL(__virt_to_phys); 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ciphys_addr_t __phys_addr_symbol(unsigned long x) 2262306a36Sopenharmony_ci{ 2362306a36Sopenharmony_ci /* 2462306a36Sopenharmony_ci * This is bounds checking against the kernel image only. 2562306a36Sopenharmony_ci * __pa_symbol should only be used on kernel symbol addresses. 2662306a36Sopenharmony_ci */ 2762306a36Sopenharmony_ci VIRTUAL_BUG_ON(x < (unsigned long) KERNEL_START || 2862306a36Sopenharmony_ci x > (unsigned long) KERNEL_END); 2962306a36Sopenharmony_ci return __pa_symbol_nodebug(x); 3062306a36Sopenharmony_ci} 3162306a36Sopenharmony_ciEXPORT_SYMBOL(__phys_addr_symbol); 32