*参照元 [#q121ee50]
#backlinks

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

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


**引数 [#aec93045]
-
--

**返り値 [#f5191226]
-
--

**参考 [#n690a81c]


*実装 [#m893f637]
 	.macro	svc_entry, stack_hole=0
  UNWIND(.fnstart		)
-
--[[linux-2.6.33/UNWIND()]]

  UNWIND(.save {r0 - pc}		)
 	sub	sp, sp, #(S_FRAME_SIZE + \stack_hole - 4)
-
--[[linux-2.6.33/S_FRAME_SIZE]]

 #ifdef CONFIG_THUMB2_KERNEL
-
--[[linux-2.6.33/CONFIG_THUMB2_KERNEL]]

  SPFIX(	str	r0, [sp]	)	@ temporarily saved
  SPFIX(	mov	r0, sp		)
  SPFIX(	tst	r0, #4		)	@ test original stack alignment
  SPFIX(	ldr	r0, [sp]	)	@ restored
-
--[[linux-2.6.33/SPFIX()]]

 #else
  SPFIX(	tst	sp, #4		)
 #endif
  SPFIX(	subeq	sp, sp, #4	)
 	stmia	sp, {r1 - r12}
 
 	ldmia	r0, {r1 - r3}
 	add	r5, sp, #S_SP - 4	@ here for interlock avoidance
 	mov	r4, #-1			@  ""  ""      ""       ""
 	add	r0, sp, #(S_FRAME_SIZE + \stack_hole - 4)
  SPFIX(	addeq	r0, r0, #4	)
 	str	r1, [sp, #-4]!		@ save the "real" r0 copied
 					@ from the exception stack
 
 	mov	r1, lr
 
 	@
 	@ We are now ready to fill in the remaining blanks on the stack:
 	@
 	@  r0 - sp_svc
 	@  r1 - lr_svc
 	@  r2 - lr_<exception>, already fixed up for correct return/restart
 	@  r3 - spsr_<exception>
 	@  r4 - orig_r0 (see pt_regs definition in ptrace.h)
 	@
 	stmia	r5, {r0 - r4}
 
 	asm_trace_hardirqs_off
-
--[[linux-2.6.33/asm_trace_hardirqs_off()]]

 	.endm


*コメント [#tf09d646]

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