diff options
Diffstat (limited to 'restore.s')
| -rw-r--r-- | restore.s | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/restore.s b/restore.s new file mode 100644 index 0000000..da1ec03 --- /dev/null +++ b/restore.s @@ -0,0 +1,32 @@ +.ifndef __RESTORE__ +.set __RESTORE__, 1 + +.macro __restore_next n, args:vararg +.ifnb \args + __restore\n \args +.endif +.endm + +.macro __restore4 arg:req, args:vararg +.ifnb \args +.error "restore: too many arguments" +.endif + popq \arg +.endm + +.macro __restore3 arg:req, args:vararg + __restore_next 4, \args + popq \arg +.endm + +.macro __restore2 arg:req, args:vararg + __restore_next 3, \args + popq \arg +.endm + +.macro restore arg:req, args:vararg + __restore_next 2, \args + popq \arg +.endm + +.endif |
