/** @file | |
Copyright (c) 2022, Arm Limited. All rights reserved. | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef CLOUDHV_VIRT_MEM_INFO_LIB_H_ | |
#define CLOUDHV_VIRT_MEM_INFO_LIB_H_ | |
// | |
// Cloud Hypervisor may have more than one memory nodes. Even there is no limit for that, | |
// I think 10 is enough in general. | |
// | |
#define CLOUDHV_MAX_MEM_NODE_NUM 10 | |
// Record memory node info (base address and size) | |
typedef struct { | |
UINT64 Base; | |
UINT64 Size; | |
} CLOUDHV_MEM_NODE_INFO; | |
// Number of Virtual Memory Map Descriptors | |
#define MAX_VIRTUAL_MEMORY_MAP_DESCRIPTORS (4 + CLOUDHV_MAX_MEM_NODE_NUM) | |
// | |
// Core peripherals such as the UART, the GIC and the RTC are | |
// all mapped in the 'miscellaneous device I/O' region, which we just map | |
// in its entirety rather than device by device. Note that it does not | |
// cover any of the NOR flash banks or PCI resource windows. | |
// | |
#define MACH_VIRT_PERIPH_BASE 0x00400000 | |
#define MACH_VIRT_PERIPH_SIZE 0x0FC00000 | |
// | |
// The top of the 64M memory region under 4GB reserved for device | |
// | |
#define TOP_32BIT_DEVICE_BASE 0xFC000000 | |
#define TOP_32BIT_DEVICE_SIZE 0x04000000 | |
#endif // CLOUDHV_VIRT_MEM_INFO_LIB_H_ |