summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--opcodes.asm.m44
-rw-r--r--opcodes.inc.m44
2 files changed, 6 insertions, 2 deletions
diff --git a/opcodes.asm.m4 b/opcodes.asm.m4
index 9f3a3fe..9e22715 100644
--- a/opcodes.asm.m4
+++ b/opcodes.asm.m4
@@ -332,14 +332,14 @@ OPCODE(10,`
HOLD_INTS
LOHI ebc
subq.b #1,ebc
- beq.s end_10 ; slooooow
+ beq.s local(end) ; slooooow
FETCHBI d1
move.l epc,a0
bsr underef
add.w d1,d0 ; ??? Can I avoid underef/deref cycle?
bsr deref
move.l a0,epc
-end_10:
+local(end):
HILO ebc
CONTINUE_INTS
') ;nok
diff --git a/opcodes.inc.m4 b/opcodes.inc.m4
index d7343e8..cbaafb9 100644
--- a/opcodes.inc.m4
+++ b/opcodes.inc.m4
@@ -2,6 +2,10 @@ dnl # change the comments to match the assembler. Prevents/reduces
dnl # confusion, since m4 likes to use ' as a quoting character.
changecom(;)dnl
define(`OPCODE',` START
+dnl # This little bit of trickery lets me define a local label.
+dnl # Calling local(end) inside of OPCODE(10, ...) will expand to
+dnl # end_10, and is undefined everywhere else.
+define(`local',$`'1_``$1'')dnl
`emu_op_'$1`:'
$2
TIME $3