date and time created 88/10/21 13:47:49 by bostic
[unix-history] / usr / src / old / as.vax / asjxxx.c
index 6bf05fd..b3d6157 100644 (file)
@@ -1,8 +1,11 @@
 /*
 /*
- *     Copyright (c) 1982 Regents of the University of California
+ * Copyright (c) 1982 Regents of the University of California.
+ * All rights reserved.  The Berkeley software License Agreement
+ * specifies the terms and conditions for redistribution.
  */
  */
+
 #ifndef lint
 #ifndef lint
-static char sccsid[] = "@(#)asjxxx.c 4.9 %G%";
+static char sccsid[] = "@(#)asjxxx.c   5.4 (Berkeley) %G%";
 #endif not lint
 
 #include       <stdio.h>
 #endif not lint
 
 #include       <stdio.h>
@@ -154,7 +157,8 @@ jalign(xp, sp)
         *
         *      Currently, the loader guarantees full word alignment.
         *      So, ridiculous aligns are caught here and converted
         *
         *      Currently, the loader guarantees full word alignment.
         *      So, ridiculous aligns are caught here and converted
-        *      to a .align 2, if possible.
+        *      to a .align (maxalign), if possible, where maxalign
+        *      is set in the command line, and defaults to 2.
         */
        if (   ( (xp->e_xtype & XTYPE) != XABS)
            || (xp->e_xvalue < 0)
         */
        if (   ( (xp->e_xtype & XTYPE) != XABS)
            || (xp->e_xvalue < 0)
@@ -163,16 +167,16 @@ jalign(xp, sp)
                yyerror("Illegal `align' argument");
                return;
        }
                yyerror("Illegal `align' argument");
                return;
        }
-       if (xp->e_xvalue > 2){
+       if (xp->e_xvalue > maxalign){
                if (passno == 1){
                        yywarning(".align %d is NOT preserved by the loader",
                                xp->e_xvalue);
                if (passno == 1){
                        yywarning(".align %d is NOT preserved by the loader",
                                xp->e_xvalue);
-                       yywarning(".align %d converted to .align 2",
-                               xp->e_xvalue);
+                       yywarning(".align %d converted to .align %d",
+                               xp->e_xvalue, maxalign);
                }
                }
-               xp->e_xvalue = 2;
+               xp->e_xvalue = maxalign;
        }
        }
-       flushfield(NBPW/4);
+       flushfield(NBWD/4);
        if (passno == 1) {
                sp->s_tag = JXALIGN;
                sp->s_jxfear = (1 << xp->e_xvalue) - 1;
        if (passno == 1) {
                sp->s_tag = JXALIGN;
                sp->s_jxfear = (1 << xp->e_xvalue) - 1;
@@ -335,7 +339,7 @@ jxxxfix()
                        if (displ >= 0) {
                                SEGITERATE(segno, cojumpfrom + 1,0,cointdest,
                                                intdest, ubintdest, ++){
                        if (displ >= 0) {
                                SEGITERATE(segno, cojumpfrom + 1,0,cointdest,
                                                intdest, ubintdest, ++){
-                                       if (intdest->s_value > dest->s_value) 
+                                       if (intdest == dest)
                                                break; /* beyond destination */
                                        if (intdest->s_tag <= JXQUESTIONABLE)
                                                continue;       /*frozen solid*/
                                                break; /* beyond destination */
                                        if (intdest->s_tag <= JXQUESTIONABLE)
                                                continue;       /*frozen solid*/
@@ -365,7 +369,7 @@ jxxxfix()
                         */
                                SEGITERATE(segno, cojumpfrom - 1,1,cointdest,
                                  intdest, ubintdest, --){
                         */
                                SEGITERATE(segno, cojumpfrom - 1,1,cointdest,
                                  intdest, ubintdest, --){
-                                       if (intdest->s_value <= dest->s_value) 
+                                       if (intdest == dest)
                                                break; /* beyond destination */
                                        if (intdest->s_tag <= JXQUESTIONABLE)
                                                continue;       /*frozen solid*/
                                                break; /* beyond destination */
                                        if (intdest->s_tag <= JXQUESTIONABLE)
                                                continue;       /*frozen solid*/