lkml.org 
[lkml]   [2013]   [Jan]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: What is asmlinkage ?
From
On Fri, Jan 4, 2013 at 3:41 PM, Rajat Sharma <fs.rajat@gmail.com> wrote:
>> Is this correct for all architectures?
>
> I guess not, asmlinkage is undefined for arm, so I assume this mechanism is
> not there for arm.
then how do they do it?
>
>
>
> On Fri, Jan 4, 2013 at 2:24 PM, 卜弋天 <buyit@live.cn> wrote:
>>
>>
>>
>> 在 2013-1-4,15:38,"Rajat Sharma" <fs.rajat@gmail.com> 写道:
>>
>> > So with asmlinkage we request compiler to put args on stack. What is
>> > advantage of this to start_kernel or in general to other functions ?
>>
>> See its about implementation ease and little of performance too. Assuming
>> the default model of keeping arguments in registers is used. lets say
>> arguments are assumed to be in registers R1, R2, R3, R4, R5, R6 and beyond
>> that in stack. Since system call number is a transparent argument which is
>> chopped off when calling the actual kernel handler and if R1 had the system
>> call number, then you have to shift all register values and stack arguments
>> too.
>>
>> Is this correct for all architectures?
>>
>> As I remembered, ARM uses SWI instruction to implement the system call,
>> it will pass system call number by register R7, and use normal register
>> R0~R3 to pass parameters.
>>
>>
>>
>> Now consider that all arguments are pushed on stack (as enforced by
>> asmlinkage), you have all function argument in the beginning of the stack
>> and the system call number on top of the stack. you just need to pop out
>> stack top to remove system call number from function argument.
>>
>> You might argue that why not always keep system call number on stack top
>> and use registers for function arguments? But thats part of the compiler ABI
>> and if you had fewer arguments lets say 2 only and used up R1 and R2 only,
>> you may not jump to stack top directly for storing system call as its turn
>> for R3 as argument.
>>
>> So, isn't it simpler implementation with everything on stack?
>>
>> -Rajat
>>
>>
>> On Fri, Jan 4, 2013 at 12:13 PM, Rahul Bedarkar <rpal143@gmail.com> wrote:
>>>
>>> Thanks. So with asmlinkage we request compiler to put args on stack. What
>>> is advantage of this to start_kernel or in general to other functions ?
>>>
>>> Regards,
>>> Rahul
>>>
>>>
>>> On Thu, Jan 3, 2013 at 9:34 PM, Mulyadi Santosa
>>> <mulyadi.santosa@gmail.com> wrote:
>>>>
>>>> On Thu, Jan 3, 2013 at 7:40 PM, Rahul Bedarkar <rpal143@gmail.com>
>>>> wrote:
>>>> > Hi,
>>>> >
>>>> > I was searching for asmlinkage and found that it is already explained
>>>> > at
>>>> > http://kernelnewbies.org/FAQ/asmlinkage
>>>> >
>>>> > But I didn't get this. Can someone tell me about it in brief ?
>>>>
>>>> the point is, parameters which is usually passed via stack, is passed
>>>> using different way.
>>>>
>>>> A good example is system call.... they are passed using registers IIRC
>>>>
>>>>
>>>> --
>>>> regards,
>>>>
>>>> Mulyadi Santosa
>>>> Freelance Linux trainer and consultant
>>>>
>>>> blog: the-hydra.blogspot.com
>>>> training: mulyaditraining.blogspot.com
>>>
>>>
>>>
>>> _______________________________________________
>>> Kernelnewbies mailing list
>>> Kernelnewbies@kernelnewbies.org
>>> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>>>
>>
>> _______________________________________________
>> Kernelnewbies mailing list
>> Kernelnewbies@kernelnewbies.org
>> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>
>
>
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies@kernelnewbies.org
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2013-01-04 12:21    [W:0.045 / U:0.212 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site