티스토리 뷰

tcr : translation control register
t0sz : tfanslation table 0 size
1:1 매핑 위해서 가상 메모리에서 쓰는 비트수 조정

 

ttbr 의 asid 와 페이지
- https://developer.arm.com/documentation/ddi0406/cb/System-Level-Architecture/System-Control-Registers-in-a-VMSA-implementation/VMSA-System-control-registers-descriptions--in-register-order/TTBR0--Translation-Table-Base-Register-0--VMSA?lang=en

 

extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
extern pgd_t idmap_pg_dir[PTRS_PER_PGD];

 

TTBR0: 일반적으로 사용자 모드와 커널 모드에서의 주소 변환에 사용됩니다.
TTBR1: 가상화 환경에서의 주소 변환이나, 커널 모드 내에서의 보조 페이지 테이블을 위한 주소 변환에 사용됩니다.

 

pgd_offset_raw : 해당 엔트리의 주소
pgd_index : 엔트리 리턴 (9bit 라면 512까지)

 

커널 메모리 가상 주소 vs 커널 이미지 가상 주소

 

pgtable 레벨에 따라 분기되는 코드가 있음 예를들면 pud 주소 fixmap_pud

 

3 레벨 pte

비트  명칭  설명
63 PXN  특권 모드에서 실행 금지
62 XN  사용자 모드에서 실행 금지
61 Contiguous  연속 페이지 플래그
60 DBM  더티 비트 관리
59 AF  접근 플래그
58:55 SH  공유 속성 (Shareability)
54:52 AttrIndx  메모리 속성 인덱스
51:12 Output address  물리 페이지 프레임 번호 (PFN), PAGE_SHIFT로 맞춰 조정
11 nG  글로벌 비트
10 Reserved  예약됨
9 Reserved  예약됨
8 Reserved  예약됨
7:6 AP  접근 권한 (Access Permissions)
5 NS  비-Secure
4:2 AttrIndx  메모리 속성 인덱스 (속성 선택)
1 Valid  유효 비트 (PTE가 유효한지 여부)
0 Table  이 엔트리가 테이블을 가리키는지 여부

 

댓글