ARMV8 MMU内存管理中的Memory attributes和Cache policies

文摘   2024-09-19 07:05   安徽  


1、MMU页表中的内存属性介绍

Memory attributes

在MMU translation tables中为每一个region(entry)定义了memory和cache属性

在该属性中的BIT[4:2]做为index指向指向了系统寄存器MAIR_ELn (Cache policies), 系统寄存器MAIR_ELn分成8*8bytes
TLB做为一种特殊的cache,在它的entry中包含了memory type,所有修改MAIR_ELn寄存器后,在使用ISB指令或TLB invalidate操作之前,不会对TLB生效

MAIR_EL1

MAIR_EL1, Memory Attribute Indirection Register (EL1):

Cache policies

Attrx的定义(Cache policies):

各个bit位的具体含义

例如optee中的内存属性配置如下:

#define ATTR_DEVICE_INDEX		0x0
#define ATTR_IWBWA_OWBWA_NTR_INDEX 0x1
#define ATTR_INDEX_MASK 0x7

#define ATTR_DEVICE (0x4)
#define ATTR_IWBWA_OWBWA_NTR (0xff)

mair = MAIR_ATTR_SET(ATTR_DEVICE, ATTR_DEVICE_INDEX);
mair |= MAIR_ATTR_SET(ATTR_IWBWA_OWBWA_NTR, ATTR_IWBWA_OWBWA_NTR_INDEX);
write_mair_el1(mair);



ARM研习社
嵌入式软件、C语言、ARM、Linux、内核、驱动、操作系统
 最新文章