2021-01-16 15:45:10 +00:00
|
|
|
/* SPDX-License-Identifier: MIT */
|
|
|
|
|
|
|
|
#ifndef MEMORY_H
|
|
|
|
#define MEMORY_H
|
|
|
|
|
2021-09-15 14:18:17 +00:00
|
|
|
#include "cpu_regs.h"
|
2021-01-16 15:45:10 +00:00
|
|
|
#include "types.h"
|
|
|
|
|
2021-05-13 08:36:02 +00:00
|
|
|
#define REGION_RWX_EL0 0x8000000000
|
|
|
|
#define REGION_RW_EL0 0x9000000000
|
|
|
|
#define REGION_RX_EL1 0xa000000000
|
|
|
|
|
|
|
|
#ifndef __ASSEMBLER__
|
|
|
|
|
2021-09-15 14:18:17 +00:00
|
|
|
#include "utils.h"
|
|
|
|
|
2021-01-16 15:45:10 +00:00
|
|
|
void ic_ivau_range(void *addr, size_t length);
|
|
|
|
void dc_ivac_range(void *addr, size_t length);
|
|
|
|
void dc_zva_range(void *addr, size_t length);
|
|
|
|
void dc_cvac_range(void *addr, size_t length);
|
|
|
|
void dc_cvau_range(void *addr, size_t length);
|
|
|
|
void dc_civac_range(void *addr, size_t length);
|
|
|
|
|
2021-01-23 19:51:16 +00:00
|
|
|
#define DCSW_OP_DCISW 0x0
|
|
|
|
#define DCSW_OP_DCCISW 0x1
|
|
|
|
#define DCSW_OP_DCCSW 0x2
|
|
|
|
void dcsw_op_all(u64 op_type);
|
|
|
|
|
2021-01-23 14:15:02 +00:00
|
|
|
void mmu_init(void);
|
2021-09-15 13:11:48 +00:00
|
|
|
void mmu_init_secondary(int cpu);
|
2021-01-23 14:15:02 +00:00
|
|
|
void mmu_shutdown(void);
|
2021-05-08 12:54:07 +00:00
|
|
|
|
|
|
|
u64 mmu_disable(void);
|
|
|
|
void mmu_restore(u64 state);
|
|
|
|
|
2021-09-15 14:18:17 +00:00
|
|
|
static inline bool mmu_active(void)
|
|
|
|
{
|
|
|
|
return mrs(SCTLR_EL1) & SCTLR_M;
|
|
|
|
}
|
|
|
|
|
2021-01-16 15:45:10 +00:00
|
|
|
#endif
|
2021-05-13 08:36:02 +00:00
|
|
|
|
|
|
|
#endif
|