summaryrefslogtreecommitdiff
path: root/tools/asm-processor/prelude.inc
diff options
context:
space:
mode:
Diffstat (limited to 'tools/asm-processor/prelude.inc')
-rw-r--r--tools/asm-processor/prelude.inc38
1 files changed, 34 insertions, 4 deletions
diff --git a/tools/asm-processor/prelude.inc b/tools/asm-processor/prelude.inc
index 9bc8939..fc08ac6 100644
--- a/tools/asm-processor/prelude.inc
+++ b/tools/asm-processor/prelude.inc
@@ -2,21 +2,51 @@
.set noreorder
.set gp=64
-.macro glabel label
- .global \label
+# A function symbol (but some projects use it for everything).
+.macro glabel label, visibility=global
+ .\visibility \label
\label:
.endm
-.macro dlabel label
- .global \label
+# The end of a function symbol.
+.macro endlabel label
+ .size \label, . - \label
+.endm
+
+# An alternative entry to a function.
+.macro alabel label, visibility=global
+ .\visibility \label
+ .type \label, @function
+ \label:
+.endm
+
+
+# A data symbol.
+.macro dlabel label, visibility=global
+ .\visibility \label
\label:
.endm
+# End of a data symbol.
+.macro enddlabel label
+ .size \label, . - \label
+.endm
+
+
+# A label referenced by a jumptable.
.macro jlabel 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
+
# Float register aliases (o32 ABI, odd ones are rarely used)
.set $fv0, $f0