新聞中心

        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 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 陆川县| 江达县| 蒙阴县| 旌德县| 辽阳县| 平远县| 广宗县| 松原市| 聂拉木县| 张家港市| 公主岭市| 班戈县| 金昌市| 宣武区| 陇南市| 那曲县| 广河县| 盐池县| 海晏县| 松潘县| 巢湖市| 南和县| 盐亭县| 凌源市| 略阳县| 湖南省| 黑山县| 凤庆县| 宝兴县| 巴彦淖尔市| 扶绥县| 婺源县| 治多县| 集贤县| 石首市| 丹寨县| 永仁县| 台南市| 乐亭县| 屯留县| 抚州市|