1/* 2 * Copyright 2014, General Dynamics C4 Systems 3 * 4 * SPDX-License-Identifier: GPL-2.0-only 5 */ 6 7#pragma once 8 9#include <plat/machine.h> 10#include <machine/registerset.h> 11#include <hardware.h> 12 13/* When translating a physical address into an address accessible to the 14 * kernel via virtual addressing we always use the mapping of the memory 15 * into the physical memory window, even if the mapping originally 16 * referred to a kernel virtual address. */ 17static inline void *CONST ptrFromPAddr(paddr_t paddr) 18{ 19 return (void *)(paddr + PPTR_BASE_OFFSET); 20} 21 22/* When obtaining a physical address from a reference to any object in 23 * the physical mapping window, this function must be used. */ 24static inline paddr_t CONST addrFromPPtr(void *pptr) 25{ 26 return (paddr_t)pptr - PPTR_BASE_OFFSET; 27} 28 29static inline region_t CONST paddr_to_pptr_reg(p_region_t p_reg) 30{ 31 return (region_t) { 32 p_reg.start + PPTR_BASE_OFFSET, p_reg.end + PPTR_BASE_OFFSET 33 }; 34} 35 36static inline p_region_t CONST pptr_to_paddr_reg(region_t reg) 37{ 38 return (p_region_t) { 39 reg.start - PPTR_BASE_OFFSET, reg.end - PPTR_BASE_OFFSET 40 }; 41} 42 43#define paddr_to_pptr ptrFromPAddr 44#define pptr_to_paddr(x) addrFromPPtr(x) 45 46#include <mode/machine.h> 47