ARM10C 22주차 후기
일시 : 2013.09.21 (22주차)
모임명 : NAVER개발자커뮤니티지원_IAMROOT.ORG_10차ARM-C
장소 :
장소지원:
참여인원:
커널 분석
- boot/compressed/head.S
- kernel/head.S
1) make menuconfig 말고, 소스코드로만 version확인이 가능한가요?
- Makefile을 열어보면, 처음에 version내역이 존재합니다.
VERSION = 3
PATCHLEVEL = 11
SUBLEVEL = 1
EXTRAVERSION =
NAME = Linux for Workgroups
2) cache를 off하면 TLB도 같이 off되나요? 그리고 TLB와 cache를 전체 off하는 global register가 존재하나요?
cache는 off가 가능하지만, TLB는 off명령 자체가 없어 보입니다. ![cp15_c8.png]
cache 와 TLB는 무관하다. TLB는 MMU의 일부이다. TLB는 disable의 대상이 아니라 TLB는 invalidate의 대상이다. 굳이 disable한다고 표현한다면 MMU disable이 TLB disable을 결정한다.
MMU의 기능이 VA<->PA 전환이며 MMU disable는 address translation off임을 상기하자. (Physical Address = Virtual Address) 참고로 MMU disable시 data access는 non-cacheable로 insturction access는 cacheable로 처리된다. 또한 CA15의 Hypervisor용 MMU와 같이 2차 MMU가 있는 경우 manual 참조 필요 또한 MMU disable해도 TLB의 내용은 유지되므로 MMU on 전에 필요한 경우 TLB flush가 필요하다.
3) code를 확인하다 보니, cache_on 전에 overwrite 체크 구문이 3.11에서 생겼습니다. 참고하세요.
/* Set up a page table only if it won't overwrite ourself.
* That means r4 < pc && r4 - 16k page directory > &_end.
* Given that r4 > &_end is most unfrequent, we add a rough
* additional 1MB of room for a possible appended DTB.
*/
mov r0, pc
cmp r0, r4
ldrcc r0, LC0+32
addcc r0, r0, pc
cmpcc r4, r0
orrcc r4, r4, #1 @ remember we skipped cache_on
blcs cache_on
댓글 없음:
댓글 쓰기