- boot/compressed/head.S
- kernel/head.S
- Makefile을 열어보면, 처음에 version내역이 존재합니다.
VERSION = 3
PATCHLEVEL = 11
SUBLEVEL = 1
EXTRAVERSION =
NAME = Linux for Workgroups
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가 필요하다.
/* 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