Sun Studio 12: C User's Guide

7.4.5 Calling Convention Changes

When you pass structures by value and compile the code for a 64-bit environment, the structure is passed in registers rather than as a pointer to a copy if it is small enough. This can cause problems if you try to pass structures between C code and handwritten assembly code.

Floating point parameters work in a similar fashion; some floating point values passed by value are passed in floating point registers.