18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci#ifndef __VIRT_CONVERT__ 38c2ecf20Sopenharmony_ci#define __VIRT_CONVERT__ 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci/* 68c2ecf20Sopenharmony_ci * Macros used for converting between virtual and physical mappings. 78c2ecf20Sopenharmony_ci */ 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ci#ifdef __KERNEL__ 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#include <linux/compiler.h> 128c2ecf20Sopenharmony_ci#include <linux/mmzone.h> 138c2ecf20Sopenharmony_ci#include <asm/setup.h> 148c2ecf20Sopenharmony_ci#include <asm/page.h> 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ci/* 178c2ecf20Sopenharmony_ci * Change virtual addresses to physical addresses and vv. 188c2ecf20Sopenharmony_ci */ 198c2ecf20Sopenharmony_ci#define virt_to_phys virt_to_phys 208c2ecf20Sopenharmony_cistatic inline unsigned long virt_to_phys(void *address) 218c2ecf20Sopenharmony_ci{ 228c2ecf20Sopenharmony_ci return __pa(address); 238c2ecf20Sopenharmony_ci} 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_ci#define phys_to_virt phys_to_virt 268c2ecf20Sopenharmony_cistatic inline void *phys_to_virt(unsigned long address) 278c2ecf20Sopenharmony_ci{ 288c2ecf20Sopenharmony_ci return __va(address); 298c2ecf20Sopenharmony_ci} 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_ci/* Permanent address of a page. */ 328c2ecf20Sopenharmony_ci#if defined(CONFIG_MMU) && defined(CONFIG_SINGLE_MEMORY_CHUNK) 338c2ecf20Sopenharmony_ci#define page_to_phys(page) \ 348c2ecf20Sopenharmony_ci __pa(PAGE_OFFSET + (((page) - pg_data_map[0].node_mem_map) << PAGE_SHIFT)) 358c2ecf20Sopenharmony_ci#else 368c2ecf20Sopenharmony_ci#define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT) 378c2ecf20Sopenharmony_ci#endif 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ci/* 408c2ecf20Sopenharmony_ci * IO bus memory addresses are 1:1 with the physical address, 418c2ecf20Sopenharmony_ci */ 428c2ecf20Sopenharmony_ci#define virt_to_bus virt_to_phys 438c2ecf20Sopenharmony_ci#define bus_to_virt phys_to_virt 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_ci#endif 468c2ecf20Sopenharmony_ci#endif 47