]> Shamusworld >> Repos - rmac/blobdiff - sect.c
Fix pack/unpack instructions
[rmac] / sect.c
diff --git a/sect.c b/sect.c
index f24c8c13312193eda4b81c4e9698322118d38099..b20542bbd172c554aa375c1bbb513724112ea3fe 100644 (file)
--- a/sect.c
+++ b/sect.c
@@ -18,7 +18,8 @@
 #include "riscasm.h"
 #include "symbol.h"
 #include "token.h"
-
+#define DEF_REGRISC
+#include "riscregs.h"
 
 // Function prototypes
 void MakeSection(int, uint16_t);
@@ -463,7 +464,7 @@ int ResolveFixups(int sno)
 
                        if ((CHECK_OPTS(OPT_PC_RELATIVE)) && (eattr & (DEFINED | REFERENCED | EQUATED)) == (DEFINED | REFERENCED))
                        {
-                               error("relocation not allowed when o10 is enabled");
+                               error("relocation not allowed when o30 is enabled");
                                continue;
                        }
                }
@@ -475,7 +476,7 @@ int ResolveFixups(int sno)
 
                        if ((CHECK_OPTS(OPT_PC_RELATIVE)) && (eattr & (DEFINED | REFERENCED | EQUATED)) == (DEFINED | REFERENCED))
                        {
-                               error("relocation not allowed when o10 is enabled");
+                               error("relocation not allowed when o30 is enabled");
                                continue;
                        }
 
@@ -589,7 +590,7 @@ int ResolveFixups(int sno)
                                        *locp = 0x71;
 
                                        if (optim_warn_flag)
-                                               warn("bra.s with zero offset converted to NOP");
+                                               warn("o6: bra.s with zero offset converted to NOP");
 
                                        continue;
                                }
@@ -720,6 +721,7 @@ int ResolveFixups(int sno)
                        }
                        else if ((dw & FUMASKRISC) == FU_REGONE)
                        {
+                               eval -= REGRISC_R0;
                                if (eval > 31)
                                {
                                        error("register one value out of range");
@@ -733,6 +735,7 @@ int ResolveFixups(int sno)
                        }
                        else if ((dw & FUMASKRISC) == FU_REGTWO)
                        {
+                               eval -= REGRISC_R0;
                                if (eval > 31)
                                {
                                        error("register two value out of range");