arm assembly doubt
subin gangadharan
subingangadharan at gmail.com
Thu Feb 16 21:35:17 EST 2012
Thanks for the answer. Actually this is what I am trying to understand.
ENTRY(vector_swi)
345 sub sp, sp, #S_FRAME_SIZE
346 stmia sp, {r0 - r12} @ Calling r0 - r12
347 ARM( add r8, sp, #S_PC )
348 ARM( stmdb r8, {sp, lr}^ ) @ Calling sp, lr
349 THUMB( mov r8, sp )
350 THUMB( store_user_sp_lr r8, r10, S_SP ) @ calling sp, lr
351 mrs r8, spsr @ called from
non-FIQ mode, so ok.
352 str lr, [sp, #S_PC] @ Save calling PC
353 str r8, [sp, #S_PSR] @ Save CPSR
354 str r0, [sp, #S_OLD_R0]
In this case after the line number 348(if its in arm mode),will the
kernel stack have the contents
r0-r12,sp,lr in this order or r0-r12,lr,sp this one. Beccause I
believe stmdb r8, {sp, lr}^ will push the sp first then lr. In that
case sp and lr will be interchanged in struct pt_regs.
Please correct me if I am wrong.
On Wed, Feb 15, 2012 at 9:34 PM, Surenkumar Nihalani <suren at gatech.edu> wrote:
> Hi,
> On Feb 15, 2012, at 11:30 PM, subin gangadharan wrote:
>
>> Hi ,
>>
>> I am trying to understand how system call is implmented in linux for
>> arm.And I am not that familiar with arm assembly.
>>
>> Could any body please help me to understand what exactly this ^ does
>> in this instruction stmdb r8,{sp,lr}^
>>
>> --
>> With Regards
>> Subin Gangadharan
>>
>> I am not afraid and I am also not afraid of being afraid.
>>
>> _______________________________________________
>> Kernelnewbies mailing list
>> Kernelnewbies at kernelnewbies.org
>> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>
> Example:
> LDFMD sp!, {r0-r12, pc}^
> - The ^ qualifier specifies that the CPSR is restored from the SPSR.
> It must be used only from a privileged mode.
>
--
With Regards
Subin Gangadharan
I am not afraid and I am also not afraid of being afraid.
More information about the Kernelnewbies
mailing list