> Is this correct for all architectures? I guess not, asmlinkage is undefined for arm, so I assume this mechanism is not there for arm.
On Fri, Jan 4, 2013 at 2:24 PM, 卜弋天 <bu...@live.cn> wrote: > > > 在 2013-1-4,15:38,"Rajat Sharma" <fs.ra...@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 <rpal...@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.sant...@gmail.com> wrote: >> >>> On Thu, Jan 3, 2013 at 7:40 PM, Rahul Bedarkar <rpal...@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