diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/macro.inc | 61 |
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 |
