*参照元 [#t7daa8ba]
#backlinks

*説明 [#s432fffc]
-パス: [[linux-2.6.33/arch/arm/kernel/entry-armv.S]]

-FIXME: これは何?
--説明


**引数 [#e5f9a80e]
-なし


**返り値 [#qbaf8ae9]
-なし


**参考 [#v4ce2bbe]


*実装 [#n9f93845]

 .align	5
 	.align	5
-2^5 = 32バイト境界に配置する

 __dabt_svc:
 	svc_entry
 
-
--[[linux-2.6.33/svc_entry()]]

 	@
 	@ get ready to re-enable interrupts if appropriate
 	@
 	mrs	r9, cpsr
 	tst	r3, #PSR_I_BIT
 	biceq	r9, r9, #PSR_I_BIT
 
-
--[[linux-2.6.33/PSR_I_BIT]]

 	@
 	@ Call the processor-specific abort handler:
 	@
 	@  r2 - aborted context pc
 	@  r3 - aborted context cpsr
 	@
 	@ The abort handler must return the aborted address in r0, and
 	@ the fault status register in r1.  r9 must be preserved.
 	@
 #ifdef MULTI_DABORT
-
--[[linux-2.6.33/MULTI_DABORT
--[[linux-2.6.33/MULTI_DABORT]]

 	ldr	r4, .LCprocfns
-
--[[linux-2.6.33/.LCprocfns()]]

 	mov	lr, pc
 	ldr	pc, [r4, #PROCESSOR_DABT_FUNC]
-
--[[linux-2.6.33/]]
--[[linux-2.6.33/PROCESSOR_DABT_FUNC]]

 #else
 	bl	CPU_DABORT_HANDLER
-
--[[linux-2.6.33/CPU_DABORT_HANDLER()]]

 #endif
 
 	@
 	@ set desired IRQ state, then call main handler
 	@
 	msr	cpsr_c, r9
 	mov	r2, sp
 	bl	do_DataAbort
 
-
--[[linux-2.6.33/do_DataAbort()]]

 	@
 	@ IRQs off again before pulling preserved data off the stack
 	@
 	disable_irq
 
-
--[[linux-2.6.33/disable_irq()]]

 	@
 	@ restore SPSR and restart the instruction
 	@
 	ldr	r2, [sp, #S_PSR]
 	svc_exit r2				@ return from exception
-
--[[linux-2.6.33/svc_exit()]]

  UNWIND(.fnend		)
-
--[[linux-2.6.33/UNWIND()]]

 ENDPROC(__dabt_svc)
-
--[[linux-2.6.33/ENDPROC()]]


*コメント [#f04b0dc3]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS