summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/macro.inc61
1 files changed, 54 insertions, 7 deletions
diff --git a/include/macro.inc b/include/macro.inc
index 1ee4aa4..e55380f 100644
--- a/include/macro.inc
+++ b/include/macro.inc
@@ -1,18 +1,63 @@
-.macro glabel label
- .global \label
+# Evaluate this file only once in case it's included more than once
+.ifndef _MACRO_INC_GUARD
+.internal _MACRO_INC_GUARD
+.set _MACRO_INC_GUARD, 1
+
+# A function symbol.
+.macro glabel label, visibility=global
+ .\visibility \label
.type \label, @function
\label:
+ .ent \label
.endm
-.macro dlabel label
- .global \label
- \label:
+# The end of a function symbol.
+.macro endlabel label
+ .size \label, . - \label
+ .end \label
.endm
-.macro jlabel label
- .global \label
+# An alternative entry to a function.
+.macro alabel label, visibility=global
+ .\visibility \label
.type \label, @function
\label:
+ .aent \label
+.endm
+
+# A label referenced by an error handler table.
+.macro ehlabel label, visibility=global
+ .\visibility \label
+ \label:
+.endm
+
+
+# A label referenced by a jumptable.
+.macro jlabel label, visibility=global
+ .\visibility \label
+ \label:
+.endm
+
+
+# A data symbol.
+.macro dlabel label, visibility=global
+ .\visibility \label
+ .type \label, @object
+ \label:
+.endm
+
+# End of a data symbol.
+.macro enddlabel label
+ .size \label, . - \label
+.endm
+
+
+# Label to signal the symbol haven't been matched yet.
+.macro nonmatching label, size=1
+ .global \label\().NON_MATCHING
+ .type \label\().NON_MATCHING, @object
+ .size \label\().NON_MATCHING, \size
+ \label\().NON_MATCHING:
.endm
# COP0 register aliases
@@ -85,3 +130,5 @@
.set $fs4f, $f29
.set $fs5, $f30
.set $fs5f, $f31
+
+.endif