#ifndef EXOSPHERE_MC_H #define EXOSPHERE_MC_H #include #include "memory_map.h" /* Exosphere driver for the Tegra X1 Memory Controller. */ #define MC_BASE (mmio_get_device_address(MMIO_DEVID_MC)) #define CARVEOUT_ID_MIN 1 #define CARVEOUT_ID_MAX 5 #define KERNEL_CARVEOUT_SIZE_MAX 0x1FFE0000 typedef struct { uint32_t allowed_clients; uint32_t paddr_low; uint32_t paddr_high; uint32_t size_big_pages; uint32_t flags_0; uint32_t flags_1; uint32_t flags_2; uint32_t flags_3; uint32_t flags_4; uint32_t flags_5; uint32_t flags_6; uint32_t flags_7; uint32_t flags_8; uint32_t flags_9; uint8_t padding[0x28]; } security_carveout_t; volatile security_carveout_t *get_carveout_by_id(unsigned int carveout); void configure_default_carveouts(void); void configure_kernel_carveout(unsigned int carveout_id, uint64_t address, uint64_t size); #endif