On Fri, Jan 4, 2013 at 3:41 PM, Rajat Sharma <fs.rajat@xxxxxxxxx> 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@xxxxxxx> wrote: >> >> >> >> 在 2013-1-4,15:38,"Rajat Sharma" <fs.rajat@xxxxxxxxx> 写道: >> >> > 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@xxxxxxxxx> 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@xxxxxxxxx> wrote: >>>> >>>> On Thu, Jan 3, 2013 at 7:40 PM, Rahul Bedarkar <rpal143@xxxxxxxxx> >>>> 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@xxxxxxxxxxxxxxxxx >>> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies >>> >> >> _______________________________________________ >> Kernelnewbies mailing list >> Kernelnewbies@xxxxxxxxxxxxxxxxx >> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies > > > > _______________________________________________ > Kernelnewbies mailing list > Kernelnewbies@xxxxxxxxxxxxxxxxx > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies > _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies