*参照元 [#r03944e9]
#backlinks

*説明 [#fbcea3b6]
-パス: [[linux-2.6.33/arch/arm/mm/proc-v7.S]]

-指定されたページテーブルに切り替える。
--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]


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS