]> Shamusworld >> Repos - rmac/blobdiff - sect.c
Extended switch -s to also warn about automatically applied 68000 optimisations....
[rmac] / sect.c
diff --git a/sect.c b/sect.c
index 80acece60ac221107589a104713916b87119baef..5690b1bd52c7ed8688617b4282ceb2989055d9df 100644 (file)
--- a/sect.c
+++ b/sect.c
@@ -3,7 +3,7 @@
 // SECT.C - Code Generation, Fixups and Section Management
 // Copyright (C) 199x Landon Dyer, 2011 Reboot and Friends
 // RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986
-// Source Utilised with the Kind Permission of Landon Dyer
+// Source utilised with the kind permission of Landon Dyer
 //
 
 #include "sect.h"
@@ -274,7 +274,7 @@ int AddFixup(WORD attr, LONG loc, TOKEN * fexpr)
        SECT * p;
        // Shamus: Expression lengths are voodoo ATM (variable "i"). Need to fix
        //         this.
-#warning "!!! AddFixup() is filled with VOODOO !!!"
+WARNING(!!! AddFixup() is filled with VOODOO !!!)
        DEBUG printf("FIXUP@$%X: $%X\n", loc, attr);
 
        // Compute length of expression (could be faster); determine if it's the
@@ -380,27 +380,6 @@ int AddFixup(WORD attr, LONG loc, TOKEN * fexpr)
 }
 
 
-//
-// Resolve all fixups
-//
-int ResolveAllFixups(void)
-{
-       unsigned i;
-       char buf[EBUFSIZ];
-
-       // Make undefined symbols GLOBL
-       if (glob_flag)
-               ForceUndefinedSymbolsGlobal();
-
-       DEBUG printf("Resolving TEXT sections...\n");
-       ResolveFixups(TEXT);
-       DEBUG printf("Resolving DATA sections...\n");
-       ResolveFixups(DATA);
-
-       return 0;
-}
-
-
 //
 // Resolve fixups in a section
 //
@@ -422,8 +401,8 @@ int ResolveFixups(int sno)
        WORD flags;
        unsigned page_jump = 0;
        unsigned address = 0;
-       unsigned j;
-       char buf[EBUFSIZ];
+       //unsigned j;
+       //char buf[EBUFSIZ];
        
        SECT * sc = &sect[sno];
        CHUNK * ch = sc->sffix;
@@ -506,7 +485,6 @@ DEBUG { printf("ResolveFixups: cfileno=%u\n", cfileno); }
 
                                if ((eattr & (GLOBAL | DEFINED)) == GLOBAL)
                                        esym = sy;
-printf("DoFixups: found symbol (%s) [%08X]\n", sy->sname, sy->sattr);
                        }
 
                        tdb = (WORD)(eattr & TDB);
@@ -631,45 +609,6 @@ printf("DoFixups: found symbol (%s) [%08X]\n", sy->sname, sy->sattr);
                                        else
                                                reg2 = (signed)((eval - (loc + 2)) / 2);// & 0x1F;
 
-#if 0
-                                       if ((w & 0x0F00) == FU_MJR)
-                                       {
-                                               // Main code destination alignment checking here for
-                                               // forward declared labels
-                                               address = (oaddr) ? oaddr : loc;
-
-                                               if (((address >= 0xF03000) && (address < 0xF04000)
-                                                       && (eval < 0xF03000)) || ((eval >= 0xF03000)
-                                                       && (eval < 0xF04000) && (address < 0xF03000)))
-                                               {
-                                                       warni("* \'jr\' at $%08X - cannot jump relative between "
-                                                               "main memory and local gpu ram", address);
-                                               }
-                                               else
-                                               {
-                                                       page_jump = (address & 0xFFFFFF00) - (eval & 0xFFFFFF00);
-
-                                                       if (page_jump)
-                                                       {
-                                                               // This jump is to a page outside of the
-                                                               // current 256 byte page
-                                                               if (eval % 4)
-                                                               {
-                                                                       warni("* \'jr\' at $%08X - destination address not aligned for long page jump, insert a \'nop\' before the destination address", address);
-                                                               }
-                                                       }
-                                                       else
-                                                       {
-                                                               // This jump is in the current 256 byte page
-                                                               if ((eval - 2) % 4)
-                                                               {
-                                                                       warni("* \'jr\' at $%08X - destination address not aligned for short page jump, insert a \'nop\' before the destination address", address);
-                                                               }
-                                                       }
-                                               }
-                                       }
-#endif
-
                                        if ((reg2 < -16) || (reg2 > 15))
                                        {
                                                error("relative jump out of range");
@@ -796,58 +735,6 @@ printf("DoFixups: found symbol (%s) [%08X]\n", sy->sname, sy->sattr);
                        case FU_LONG:
                                if ((w & FUMASKRISC) == FU_MOVEI)
                                {
-#if 0
-                                       address = loc + 4;
-
-                                       if (eattr & DEFINED)
-                                       {
-                                               for(j=0; j<fwindex; j++)
-                                               {
-                                                       if (fwdjump[j] == address)
-                                                       {
-                                                               page_jump = (address & 0xFFFFFF00) - (eval & 0xFFFFFF00);
-
-                                                               if (page_jump)
-                                                               {
-                                                                       if (eval % 4)
-                                                                       {
-                                                                               err_setup();
-                                                                               sprintf(buf, "* \'jump\' at $%08X - destination address not aligned for long page jump, insert a \'nop\' before the destination address", address);
-
-                                                                               if (listing > 0)
-                                                                                       ship_ln(buf);
-
-                                                                               if (err_flag)
-                                                                                       write(err_fd, buf, (LONG)strlen(buf));
-                                                                               else
-                                                                                       printf("%s\n", buf);
-                                                                       }          
-                                                               }
-                                                               else
-                                                               {
-                                                                       if (!(eval & 0x0000000F) || ((eval - 2) % 4))
-                                                                       {
-                                                                               err_setup();
-                                                                               sprintf(buf, "* \'jump\' at $%08X - destination address not aligned for short page jump, insert a \'nop\' before the destination address", address);
-
-                                                                               if (listing > 0)
-                                                                                       ship_ln(buf);
-
-                                                                               if (err_flag)
-                                                                                       write(err_fd, buf, (LONG)strlen(buf));
-                                                                               else
-                                                                                       printf("%s\n", buf);
-                                                                       }          
-                                                               }
-
-                                                               // Clear this jump as it has been checked
-                                                               fwdjump[j] = 0;
-                                                               j = fwindex;
-                                                       }
-                                               }
-                                       }
-#endif
-
                                        // Long constant in MOVEI # is word-swapped, so fix it here
                                        eval = ((eval >> 16) & 0x0000FFFF) | ((eval << 16) & 0xFFFF0000);
                                        flags = (MLONG | MMOVEI);
@@ -916,3 +803,24 @@ range:
        return 0;
 }
 
+//
+// Resolve all fixups
+//
+int ResolveAllFixups(void)
+{
+       //unsigned i;
+       //char buf[EBUFSIZ];
+
+       // Make undefined symbols GLOBL
+       if (glob_flag)
+               ForceUndefinedSymbolsGlobal();
+
+       DEBUG printf("Resolving TEXT sections...\n");
+       ResolveFixups(TEXT);
+       DEBUG printf("Resolving DATA sections...\n");
+       ResolveFixups(DATA);
+
+       return 0;
+}
+
+