亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区
Chinaunix
標(biāo)題:
svc_entry 如何保存org r0的?
[打印本頁(yè)]
作者:
blake326
時(shí)間:
2013-07-23 13:00
標(biāo)題:
svc_entry 如何保存org r0的?
表紅的3行:
r6 應(yīng)該是-1,怎么變成org r0了。
149 .macro svc_entry, stack_hole=0
150 UNWIND(.fnstart )
151 UNWIND(.save {r0 - pc} )
152 sub sp, sp, #(S_FRAME_SIZE + \stack_hole - 4)
153#ifdef CONFIG_THUMB2_KERNEL
154 SPFIX( str r0, [sp] ) @ temporarily saved
155 SPFIX( mov r0, sp )
156 SPFIX( tst r0, #4 ) @ test original stack alignment
157 SPFIX( ldr r0, [sp] ) @ restored
158#else
159 SPFIX( tst sp, #4 )
160#endif
161 SPFIX( subeq sp, sp, #4 )
162 stmia sp, {r1 - r12}
163
164 ldmia r0, {r3 - r5}
165 add r7, sp, #S_SP - 4 @ here for interlock avoidance
166 mov r6, #-1 @ "" "" "" ""
167 add r2, sp, #(S_FRAME_SIZE + \stack_hole - 4)
168 SPFIX( addeq r2, r2, #4 )
169 str r3, [sp, #-4]! @ save the "real" r0 copied
170 @ from the exception stack
171
172 mov r3, lr
173
174 @
175 @ We are now ready to fill in the remaining blanks on the stack:
176 @
177 @ r2 - sp_svc
178 @ r3 - lr_svc
179 @ r4 - lr_<exception>, already fixed up for correct return/restart
180 @ r5 - spsr_<exception>
181 @ r6 - orig_r0 (see pt_regs definition in ptrace.h)
182 @
183 stmia r7, {r2 - r6}
184
185#ifdef CONFIG_TRACE_IRQFLAGS
186 bl trace_hardirqs_off
187#endif
188 .endm
作者:
blake326
時(shí)間:
2013-07-23 16:50
我頂
作者:
blake326
時(shí)間:
2013-07-24 09:52
blake326 發(fā)表于 2013-07-23 16:50
我頂
wo ye ding
作者:
blake326
時(shí)間:
2013-07-24 14:03
回復(fù)
3#
blake326
代碼的注釋真是蛋疼。
實(shí)際上pt_regs, 一共18個(gè)regs,r0-r15, cpsr, orig_r0
r0-r15 保存的異常時(shí)的寄存器。這個(gè)r0保存異常時(shí)的r0,被后面的orig_r0名字給忽悠了。
其中sp,lr是svc模式的sp,lr
pc是correct之后的異常lr.
cpsr 是異常保存的spsr。
orig_r0 是-1,這個(gè)值比較特殊,不知到什么作用。比較容易看把。
歡迎光臨 Chinaunix (http://www.72891.cn/)
Powered by Discuz! X3.2