====== AVR GCC calling conventions ====== Thanks Paulo Soares ====== Register Usage ====== ^ Parameters ^ Param 1 ^ Param 2 ^ Param 3 ^ Param 4 ^ | f(p8,p8) | R25 | R24 | ~~ | ~~ | | f(p8,p8,p8,p8) | R25 | R24 | R23 | R22 | | f(p16,p16) | R25:24# | R23:22 | ~~ | ~~ | | f(p16,p16,p16) | R25:24 | R23:22 | R21:20 | ~~ | | f(p32,p32) | R25:24:23:22# | R21:20:19:18 | ~~ | ~~ | | f(p32,p32,p32) | R25:24:23:22 | R21:20:19:18 | R17:16:15:14 | ~~ | | f(p8,p16,p32) | R25 | R24:23 | R22:21:20:19 | ~~ | # MSB left, LSB right ====== Return Value ====== ^ Size ^ Registers ^ | p8 | R25:24## | | p16 | R25:24 | | p32 | R25:24:23:22 | ## R25 is cleared ----