> 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.
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.