-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy patha10c_22.txt
68 lines (61 loc) · 2.51 KB
/
a10c_22.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
==== 22주차(2013.09.21) ====
<box center round blue 95% | <typo fs:18px;> ** remind [boot/compressed/head.S, kernel/head.S] ** </typo>>
\\
<WRAP center round box 95%>
<typo fs:16px;>
** 1) make menuconfig 말고, 소스코드로만 version확인이 가능한가요? ** </typo>
----
> Makefile을 열어보면, 처음에 version내역이 존재합니다.
> <code c>
VERSION = 3
PATCHLEVEL = 11
SUBLEVEL = 1
EXTRAVERSION =
NAME = Linux for Workgroups
</code>
</WRAP>
<WRAP center round box 95%>
<typo fs:16px;>
** 2) cache를 off하면 TLB도 같이 off되나요? 그리고 TLB와 cache를 전체 off하는 global register가 존재하나요? ** </typo>
----
> cache는 off가 가능하지만, TLB는 off명령 자체가 없어 보입니다.
> {{ :스터디:cp15_c8.png?direct |}}
>
> 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가 필요하다.
</WRAP>
<WRAP center round box 95%>
<typo fs:16px;>
** 3) code를 확인하다 보니, cache_on 전에 overwrite 체크 구문이 3.11에서 생겼습니다. 참고하세요. ** </typo>
<code c>
/* 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
</code>
</WRAP>
<WRAP center round box 95%>
<typo fs:16px;>
** 4) Kernel image의 각 section 및 역할의 이해에 대해 부족함을 느꼈습니다. 향후 정리가 필요할 것 같습니다. ** </typo>
</WRAP>
<WRAP center round box 95%>
<typo fs:16px;>
** 5) wont_overwrite의 경우 큰 그림만 이해하고, 코드를 다시보니 혼란을 겪었습니다. 향후 재 복습이 필요합니다. ** </typo>
</WRAP>
</box>
\\
\\
\\