When passing structures by value and compiling the code for SPARC V9, if the structure is small enough, it is passed in registers rather than as a pointer to a copy. This can cause problems when passing structures between C code and hand-written assembly code.
Floating point parameters work in a similar fashion; some floating point values passed by value are passed in floating point registers.