新聞中心

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

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 仪陇县| 西盟| 扶绥县| 囊谦县| 凌云县| 常熟市| 沙洋县| 商丘市| 岳阳县| 南昌市| 上林县| 台东县| 蒙自县| 纳雍县| 商城县| 阳山县| 鞍山市| 开鲁县| 阿勒泰市| 沅江市| 扎鲁特旗| 广南县| 东乌珠穆沁旗| 庆元县| 陇川县| 凌源市| 四川省| 轮台县| 西充县| 尉犁县| 北京市| 驻马店市| 内丘县| 虹口区| 封丘县| 衡山县| 德兴市| 邹平县| 宝应县| 五台县| 城市|