设为首页 加入收藏

TOP

对entry-common.S和call.S的部分理解1 - 摩斯电码(六)
2015-02-13 18:24:18 来源: 作者: 【 】 浏览:134
Tags:entry-common.S call.S 部分 理解 电码
LL(sys_fallocate)
? 365:? ? ? ? CALL(sys_timerfd_settime)
? 366:? ? ? ? CALL(sys_timerfd_gettime)
? 367: /* 355 */? ? CALL(sys_signalfd4)
? 368:? ? ? ? CALL(sys_eventfd2)
? 369:? ? ? ? CALL(sys_epoll_create1)
? 370:? ? ? ? CALL(sys_dup3)
? 371:? ? ? ? CALL(sys_pipe2)
? 372: /* 360 */? ? CALL(sys_inotify_init1)
? 373:? ? ? ? CALL(sys_preadv)
? 374:? ? ? ? CALL(sys_pwritev)
? 375: #ifndef syscalls_counted
? 376: .equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls
? 377: #define syscalls_counted
? 378: #endif
? 379: .rept syscalls_padding
? 380:? ? ? ? CALL(sys_ni_syscall)
? 381: .endr


entry-common.S



? 1: /*
? ? 2:? *? linux/arch/arm/kernel/entry-common.S
? ? 3:? *
? ? 4:? *? Copyright (C) 2000 Russell King
? ? 5:? *
? ? 6:? * This program is free software; you can redistribute it and/or modify
? ? 7:? * it under the terms of the GNU General Public License version 2 as
? ? 8:? * published by the Free Software Foundation.
? ? 9:? */
? 10:?
? 11: #include
? 12: #include
? 13: #include
? 14: #include
? 15:?
? 16: #include "entry-header.S"
? 17:?
? 18:?
? 19:? ? .align? ? 5
? 20: /*
? 21:? * This is the fast syscall return path.? We do as little as
? 22:? * possible here, and this includes saving r0 back into the SVC
? 23:? * stack.
? 24:? */
? 25: ret_fast_syscall:
? 26:? UNWIND(.fnstart? ? )
? 27:? UNWIND(.cantunwind? ? )
? 28:? ? disable_irq? ? ? ? ? ? ? ? @ disable interrupts
? 29:? ? ldr? ? r1, [tsk, #TI_FLAGS]
? 30:? ? tst? ? r1, #_TIF_WORK_MASK
? 31:? ? bne? ? fast_work_pending
? 32:?
? 33:? ? /* perform architecture specific actions before user return */
? 34:? ? arch_ret_to_user r1, lr
? 35:?
? 36:? ? @ fast_restore_user_regs
? 37:? ? ldr? ? r1, [sp, #S_OFF + S_PSR]? ? @ get calling cpsr
? 38:? ? ldr? ? lr, [sp, #S_OFF + S_PC]!? ? @ get pc
? 39:? ? msr? ? spsr_cxsf, r1? ? ? ? ? ? @ save in spsr_svc
? 40:? ? ldmdb? ? sp, {r1 - lr}^? ? ? ? ? ? @ get calling r1 - lr
? 41:? ? mov? ? r0, r0
? 42:? ? add? ? sp, sp, #S_FRAME_SIZE - S_PC
? 43:? ? movs? ? pc, lr? ? ? ? ? ? ? ? @ return & move spsr_svc into cpsr
? 44:? UNWIND(.fnend? ? ? ? )
? 45:?
? 46: /*
? 47:? * Ok, we need to do extra processing, enter the slow path.
? 48:? */
? 49: fast_work_pending:
? 50:? ? str? ? r0, [sp, #S_R0+S_OFF]!? ? ? ? @ returned r0
? 51: work_pending:
? 52:? ? tst? ? r1, #_TIF_NEED_RESCHED
? 53:? ? bne? ? work_resched
? 54:? ? tst? ? r1, #_TIF_SIGPENDING
? 55:? ? beq? ? no_work_pending
? 56:? ? mov? ? r0, sp? ? ? ? ? ? ? ? @ 'regs'
? 57:? ? mov? ? r2, why? ? ? ? ? ? ? ? @ 'syscall'
? 58:? ? bl? ? do_notify_resume
? 59:? ? b? ? ret_slow_syscall? ? ? ? @ Check work again
? 60:?
? 61: work_resched:
? 62:? ? bl? ? schedule
? 63: /*
? 64:? * "slow" syscall return path.? "why" tells us if this was a real syscall.
? 65:? */
? 66: ENTRY(ret_to_user)
? 67: ret_slow_syscall:
? 68:? ? disable_irq? ? ? ? ? ? ? ? @ disable interrupts
? 69:? ? ldr? ? r1, [tsk, #TI_FLAGS]
? 70:? ? tst? ? r1, #_TIF_WORK_MASK
? 71:? ? bne? ? work_pending
? 72: no_work_pending:
? 73:? ? /* perform architecture specific actions before user return */
? 74:? ? arch_ret_to_user r1, lr
? 75:?
? 76:? ? @ slow_restore_user_regs
? 77:? ? ldr? ? r1, [sp, #S_PSR]? ? ? ? @ get calling cpsr
? 78:? ? ldr? ? lr, [sp, #S_PC]!? ? ? ? @ get pc
? 79:? ? msr? ? spsr_cxsf, r1? ? ? ? ? ? @ save in spsr_svc
? 80:? ? ldmdb? ? sp, {r0 - lr}^? ? ? ? ? ? @ get calling r0 - lr
? 81:? ? mov? ? r0, r0
? 82:? ? add? ? sp, sp, #S_FRAME_SIZE - S_PC
? 83:? ? movs? ? pc, lr? ? ? ? ? ? ? ? @ return & move spsr_svc into cpsr
? 84: ENDPROC(ret_to_user)
? 85:?
? 86: /*
? 87:? * This is how we return from a fork.
? 88:? */
? 89: ENTRY(ret_from_fork)
? 90:? ? bl? ? schedule_tail
? 91:? ? get_thread_info tsk
? 92:? ? ldr? ? r1, [tsk, #TI_FLAGS]? ? ? ? @ check for syscall tracing
? 93:? ? mov? ? why, #1
? 94:? ? tst? ? r1, #_TIF_SYSC

首页 上一页 3 4 5 6 7 8 9 下一页 尾页 6/10/10
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇关于Linux系统如何实现fork的研究 下一篇Linux-2.6.21 pi futex关键数据结..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: