]> Shamusworld >> Repos - rmac/blobdiff - mach.c
Fix for bug #170 - ELF output module exports global,defined symbols as undefined
[rmac] / mach.c
diff --git a/mach.c b/mach.c
index 42268dcde2bd706cbb4b00f691a25338b7273a7e..cca87e40ebed47244ce017d1cc9430d886115a65 100644 (file)
--- a/mach.c
+++ b/mach.c
@@ -796,7 +796,11 @@ int m_move(WORD inst, WORD size)
 int m_move30(WORD inst, WORD size)
 {
        int siz = (int)size;
-       inst |= siz_12[siz] | reg_9[a1reg & 7] | a0reg | extra_addressing[am0 - ABASE];
+
+       if (am0 > ABASE)
+               inst |= siz_12[siz] | reg_9[a1reg & 7] | a0reg | extra_addressing[am0 - ABASE];
+       else
+               inst |= siz_12[siz] | reg_9[a1reg & 7] | a0reg | extra_addressing[am1 - ABASE] << 3;
 
        D_word(inst);
 
@@ -2434,7 +2438,6 @@ int m_pload(WORD inst, WORD siz, WORD extension)
                        inst = 1;
                else
                        return error("illegal control register specified");
-
                break;
        case DREG:
                inst = (1 << 3) | a0reg;