设为首页 加入收藏

TOP

对entry-common.S和call.S的部分理解1 - 摩斯电码(七)
2015-02-13 18:24:18 来源: 作者: 【 】 浏览:136
Tags:entry-common.S call.S 部分 理解 电码
ALL_TRACE? ? ? ? @ are we tracing syscalls?
? 95:? ? beq? ? ret_slow_syscall
? 96:? ? mov? ? r1, sp
? 97:? ? mov? ? r0, #1? ? ? ? ? ? ? ? @ trace exit [IP = 1]
? 98:? ? bl? ? syscall_trace
? 99:? ? b? ? ret_slow_syscall
? 100: ENDPROC(ret_from_fork)
? 101:?
? 102:? ? .equ NR_syscalls,0
? 103: #define CALL(x) .equ NR_syscalls,NR_syscalls+1
? 104: #include "calls.S"
? 105: #undef CALL
? 106: #define CALL(x) .long x
? 107:?
? 108: #ifdef CONFIG_FUNCTION_TRACER
? 109: #ifdef CONFIG_DYNAMIC_FTRACE
? 110: ENTRY(mcount)
? 111:? ? stmdb sp!, {r0-r3, lr}
? 112:? ? mov r0, lr
? 113:? ? sub r0, r0, #MCOUNT_INSN_SIZE
? 114:?
? 115:? ? .globl mcount_call
? 116: mcount_call:
? 117:? ? bl ftrace_stub
? 118:? ? ldr lr, [fp, #-4]? ? ? ? ? ? @ restore lr
? 119:? ? ldmia sp!, {r0-r3, pc}
? 120:?
? 121: ENTRY(ftrace_caller)
? 122:? ? stmdb sp!, {r0-r3, lr}
? 123:? ? ldr r1, [fp, #-4]
? 124:? ? mov r0, lr
? 125:? ? sub r0, r0, #MCOUNT_INSN_SIZE
? 126:?
? 127:? ? .globl ftrace_call
? 128: ftrace_call:
? 129:? ? bl ftrace_stub
? 130:? ? ldr lr, [fp, #-4]? ? ? ? ? ? @ restore lr
? 131:? ? ldmia sp!, {r0-r3, pc}
? 132:?
? 133: #else
? 134:?
? 135: ENTRY(mcount)
? 136:? ? stmdb sp!, {r0-r3, lr}
? 137:? ? ldr r0, =ftrace_trace_function
? 138:? ? ldr r2, [r0]
? 139:? ? adr r0, ftrace_stub
? 140:? ? cmp r0, r2
? 141:? ? bne trace
? 142:? ? ldr lr, [fp, #-4]? ? ? ? ? ? @ restore lr
? 143:? ? ldmia sp!, {r0-r3, pc}
? 144:?
? 145: trace:
? 146:? ? ldr r1, [fp, #-4]? ? ? ? ? ? @ lr of instrumented routine
? 147:? ? mov r0, lr
? 148:? ? sub r0, r0, #MCOUNT_INSN_SIZE
? 149:? ? mov lr, pc
? 150:? ? mov pc, r2
? 151:? ? mov lr, r1? ? ? ? ? ? ? ? @ restore lr
? 152:? ? ldmia sp!, {r0-r3, pc}
? 153:?
? 154: #endif /* CONFIG_DYNAMIC_FTRACE */
? 155:?
? 156:? ? .globl ftrace_stub
? 157: ftrace_stub:
? 158:? ? mov pc, lr
? 159:?
? 160: #endif /* CONFIG_FUNCTION_TRACER */
? 161:?
? 162: /*=============================================================================
? 163:? * SWI handler
? 164:? *-----------------------------------------------------------------------------
? 165:? */
? 166:?
? 167:? ? /* If we're optimising for StrongARM the resulting code won't
? 168:? ? ? ? run on an ARM7 and we can save a couple of instructions.?
? 169:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? --pb */
? 170: #ifdef CONFIG_CPU_ARM710
? 171: #define A710(code...) code
? 172: .Larm710bug:
? 173:? ? ldmia? ? sp, {r0 - lr}^? ? ? ? ? ? @ Get calling r0 - lr
? 174:? ? mov? ? r0, r0
? 175:? ? add? ? sp, sp, #S_FRAME_SIZE
? 176:? ? subs? ? pc, lr, #4
? 177: #else
? 178: #define A710(code...)
? 179: #endif
? 180:?
? 181:? ? .align? ? 5
? 182: ENTRY(vector_swi)
? 183:? ? sub? ? sp, sp, #S_FRAME_SIZE
? 184:? ? stmia? ? sp, {r0 - r12}? ? ? ? ? ? @ Calling r0 - r12
? 185:? ? add? ? r8, sp, #S_PC
? 186:? ? stmdb? ? r8, {sp, lr}^? ? ? ? ? ? @ Calling sp, lr
? 187:? ? mrs? ? r8, spsr? ? ? ? ? ? @ called from non-FIQ mode, so ok.
? 188:? ? str? ? lr, [sp, #S_PC]? ? ? ? ? ? @ Save calling PC
? 189:? ? str? ? r8, [sp, #S_PSR]? ? ? ? @ Save CPSR
? 190:? ? str? ? r0, [sp, #S_OLD_R0]? ? ? ? @ Save OLD_R0
? 191:? ? zero_fp
? 192:?
? 193:? ? /*
? 194:? ? ? * Get the system call number.
? 195:? ? ? */
? 196:?
? 197: #if defined(CONFIG_OABI_COMPAT)
? 198:?
? 199:? ? /*
? 200:? ? ? * If we have CONFIG_OABI_COMPAT then we need to look at the swi
? 201:? ? ? * value to determine if it is an EABI or an old ABI call.
? 202:? ? ? */
? 203: #ifdef CONFIG_ARM_THUMB
? 204:? ? tst? ? r8, #PSR_T_BIT
? 205:? ? movne? ? r10, #0? ? ? ? ? ? ? ? @ no thumb OABI emulation
? 206:? ? ldreq? ? r10, [lr, #-4]? ? ? ? ? ? @ get SWI instruction
? 207: #else
? 208:? ? ldr? ? r10, [lr, #-4]? ? ? ? ? ? @ get SWI instruction
? 209:? A710(? ? and? ? ip, r10, #0x0f000000? ? ? ? @ check for SWI? ? ? ? )
? 210:? A710(? ? teq? ? ip, #0x0f000000? ? ? ? ? ? ? ? ? ? ? ? )
? 211:? A710(? ? bne? ? .Lar
首页 上一页 4 5 6 7 8 9 10 下一页 尾页 7/10/10
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇关于Linux系统如何实现fork的研究 下一篇Linux-2.6.21 pi futex关键数据结..

评论

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