
[Training] Arm v8 Linux kernel head.S 찍어먹기 (5)
Remind 지난 시간에는 임시 페이지 테이블을 만들기 위해 필요한 페이지 수를 계산해서 링커 스크립터를 통해 예약해둔 것을 확인할 수 있었는데요. 이번 시간에는 그 공간을 사용해서 임시 페이지 테이블을 만드는 과정을 살펴볼 것이에요. 이제 코드를 살펴보도록 할까요? 해당 글의 타겟 아키텍처는 aarch64이고, kernel code는 5.1버전을 다룹니다. 유의하세요! __create_page_tables 이전 시간에 이어서 다시 __create_page_tables 함수를 보도록 할게요. 이전에 init_pg 영역의 캐시 라인을 invalidate 했었고 그 뒤에는 identity mapping 테이블을 만드는 과정이 나와요. 실제 코드는 아래와 정확히 일치하지는 않는데요, 중간 중간에 minor한 일을 해주기 때문이에요. 하지만 핵심적인 부분 변환 테이블을 만드는 과정은 아래와 같이 진행되어요. 위 코드에서 보이듯이, map_memory 매크