I'm teaching myself Linux assembly language and I've come across an interesting difference between BSD and Linux. In Unix, you push your syscall parameters onto the stack before calling an 80h interrupt; by contrast, in Linux, you pass your parameters in registers.

Does anyone know what the rationale was for the Linux developers to go with registers instead of the stack?

Note: Here's a good page detailing this difference: [FreeBSD Developer's Handbook:System Calls](http://www.freebsd.org/doc/en/books/developers-handbook/x86-system-calls.html) without explaining the rationale.