summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDuncan Smith2010-11-12 22:34:36 -0800
committerDuncan Smith2010-11-12 22:34:36 -0800
commitdd0e4224c93c1b94b7b9fd06e9ab08105e19845f (patch)
tree6912aebda42970c0e3130cc6d2f16c5353c79d57
parent2164cc7b99ab44b9efe03d5f4dc2392fc34791f3 (diff)
Added support for local labels in opcodes
I tried to use A68k's local label support, but I believe it was broken. Now I can use it, finally. :)
-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