- 追加された行はこの色です。
- 削除された行はこの色です。
*参照元 [#r03944e9]
#backlinks
*説明 [#fbcea3b6]
-パス: [[linux-2.6.33/arch/arm/mm/proc-v7.S]]
-FIXME: これは何?
--説明
-指定されたページテーブルに切り替える。
--MMU が無効ならば何もしない。
-processor 構造体の ARM 版ページにて、プロセッサごとの switch_mm の定義を補足しています。
--[[linux-2.6.33/processor]]
**引数 [#xa0e13d0]
-
--
-pgd_phys
--おそらく unsigned long
--スイッチ先のページテーブルの物理アドレス
-struct mm_struct *tsk
--スイッチ先のコンテキスト
--[[linux-2.6.33/mm_struct]]
**返り値 [#oe714b2d]
-
--
-なし
**参考 [#v601976d]
*実装 [#s99e4faa]
/*
* cpu_v7_switch_mm(pgd_phys, tsk)
*
* Set the translation table base pointer to be pgd_phys
*
* - pgd_phys - physical address of new TTB
*
* It is assumed that:
* - we are not using split page tables
*/
ENTRY(cpu_v7_switch_mm)
#ifdef CONFIG_MMU
mov r2, #0
ldr r1, [r1, #MM_CONTEXT_ID] @ get mm->context.id
orr r0, r0, #TTB_FLAGS
#ifdef CONFIG_ARM_ERRATA_430973
mcr p15, 0, r2, c7, c5, 6 @ flush BTAC/BTB
#endif
mcr p15, 0, r2, c13, c0, 1 @ set reserved context ID
isb
1: mcr p15, 0, r0, c2, c0, 0 @ set TTB 0
isb
mcr p15, 0, r1, c13, c0, 1 @ set context ID
isb
#endif
mov pc, lr
ENDPROC(cpu_v7_switch_mm)
*コメント [#r83f158c]