作者: gogojesse 時間: 2008-10-14 02:16 PM
得到pg table的開始位置之後,當然就是初始化囉。' O/ Y$ n7 f. X( O8 m
line 221, 將pg table的base addr放到r0. + v: _! g* i6 n3 s' _( qline 223, 將pg table的end addr放到r6.8 m( D/ O5 k' E) F
line 224~228, 反覆地將0x0寫到pg table的區段裡頭,每個loop寫16bytes. (4x4),直到碰到end,結果就是把它全部clear成0x0.
221 mov r0, r4 U3 W+ s5 z) c V a
222 mov r3, #0 - ^5 j' N- I: r( Z r9 O1 b
223 add r6, r0, #0x4000# a. I) l9 z8 v( f& C% p$ W# w& b
224 1: str r3, [r0], #4" o; c" P! @: p3 g2 J
225 str r3, [r0], #43 i' `! {* [) k% H( B) x# `! z
226 str r3, [r0], #4$ Y/ J2 V/ S4 z* o4 s
227 str r3, [r0], #4" Y- B0 p, t3 s9 X: ^- T
228 teq r0, r6 8 X* q5 q" {0 Y
229 bne 1b
複製代碼
line 231, 將位址等於 r10+PROCINFO_MM_MMUFLAGS 裡頭的值放到r7。r10是proc_info的位址。proc的info data structure被定義在『./include/asm-arm/procinfo.h』,offset取得的方式用compiler的功能,以便以後新增structure的欄位的時候不需要更動程式碼。這邊的動作合起來就是讀預設要設給mmu flags的值。