summaryrefslogtreecommitdiff
path: root/backup.s
diff options
context:
space:
mode:
Diffstat (limited to 'backup.s')
-rw-r--r--backup.s32
1 files changed, 32 insertions, 0 deletions
diff --git a/backup.s b/backup.s
new file mode 100644
index 0000000..10f9fb5
--- /dev/null
+++ b/backup.s
@@ -0,0 +1,32 @@
+.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