안녕하세요? 오랜만에 들어와서 질문드립니다.
원하는 내용은
exception vector table 영역이 cache내에 계속 존재하도록 하고 싶습니다.
----------------------------------------------------------------------
환경 - ARM926EJS, linux kernel 2.6.21
질문 1) arch/arm/mm/mmu.c에 있는 MT_HIGH_VECTORS의 memory type에 있는 L_PTE_YOUNG과 L_PTE_DIRTY의 의미는 무엇일까요? (googling해봐도 안나오네요 --;)
질문 2) MT_HIGH_VECTORS의 memory type으로 0xFFFF0000으로 mapping된 exception vector table은 cache내에 지속적으로 존재하나요?
질문 3) linux에서 arm core의 cache lock-down을 제공하는 함수가 있습니까?
이게 없다면 혹시 cache내의 내용을 지속적으로 유지하기 위한 방법은 뭐가 있을까요?
답변주시면 감사하겠습니다.
의 내용을 참조하시고요. 문맥상의 의미로는 파악하기 힘든 말이고요...^^
실제로는 paging out될 넘이 L_PTE_DIRTY로 표시가 될겁니다. 제 생각엔 swap을 쓰겠다는 얘기가 된다고 보여집니다(가능할 경우)
2. 정확하게는 자료를 찾아봐야겠지만요...아마 caching이 안되는 영역일겁니다.
[MT_HIGH_VECTORS] = {
219 .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY |
220 L_PTE_USER | L_PTE_EXEC,
221 .prot_l1 = PMD_TYPE_TABLE,
222 .domain = DOMAIN_USER,
223 },
소스를 보니깐.....uncached.일 듯 싶네요....prot_sect 영역이 없으니 아마도 0으로 세팅될겁니다. cache랑 write buffer가 아마도 0일 듯...^^
3. 잘 모르는 내용이라 pass요...^^, 제가 cache쪽은 꽝이라서요...ㅎㅎ
꺼야하는 경우랑 켜야하는 경우랑 외엔 그다지 신경을 안 써서요...^^