在 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
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies