新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > linux-2.6.26内核中ARM中断实现详解(2)

linux-2.6.26内核中ARM中断实现详解(2)

作者:时间:2012-08-21来源:网络收藏

#define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0)))

表示函数的参数传递是通过堆栈完成的。

3.7 描述3.3节中的ret_to_user 返回过程,/arch/arm/kernel/entry-common.S

ENTRY(ret_to_user)

ret_slow_syscall:

disable_irq @ disable interrupts

ldr r1, [tsk, #TI_FLAGS]

tst r1, #_TIF_WORK_MASK

bne work_pending

no_work_pending:

/* perform. architecture specific actions before user return */

arch_ret_to_user r1, lr

@ slow_restore_user_regs

ldr r1, [sp, #S_PSR] @ get calling cpsr

ldr lr, [sp, #S_PC]! @ get pc

msr spsr_cxsf, r1 @ save in spsr_svc

ldmdb sp, {r0 - lr}^ @ get calling r0 - lr

mov r0, r0

add sp, sp, #S_FRAME_SIZE - S_PC

movs pc, lr @ return move spsr_svc into cpsr

第三章主要跟踪了从发生到调用到对应号的desc->handle_irq(irq, desc)中断函数的过程。后面的章节还会继续讲解后面的内容。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭