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