.ifndef __BACKUP__ .set __BACKUP__, 1 .macro __backup_next n, args:vararg .ifnb \args __backup\n \args .endif .endm .macro __backup4 arg:req, args:vararg pushq \arg .ifnb \args .error "backup: too many arguments" .endif .endm .macro __backup3 arg:req, args:vararg pushq \arg __backup_next 4, \args .endm .macro __backup2 arg:req, args:vararg pushq \arg __backup_next 3, \args .endm .macro backup arg:req, args:vararg pushq \arg __backup_next 2, \args .endm .endif