From ecadf17a38af7fd195dd98bd641156d92da10ee3 Mon Sep 17 00:00:00 2001 From: Kenneth R Westerback Date: Sat, 12 Jun 2004 03:37:21 +0000 Subject: Sync with FreeBSD aicasm. No changes to the generated reg.h or seq.h files used by ahc or ahd result from these changes, so they are not being sync'ed at this time. ok deraadt@ --- sys/dev/microcode/aic7xxx/aicasm.c | 39 ++++++++++++++++----------- sys/dev/microcode/aic7xxx/aicasm_macro_scan.l | 16 ++++++----- sys/dev/microcode/aic7xxx/aicasm_scan.l | 21 +++++++++++---- 3 files changed, 49 insertions(+), 27 deletions(-) diff --git a/sys/dev/microcode/aic7xxx/aicasm.c b/sys/dev/microcode/aic7xxx/aicasm.c index 91f4314c61f..c6c01857a4c 100644 --- a/sys/dev/microcode/aic7xxx/aicasm.c +++ b/sys/dev/microcode/aic7xxx/aicasm.c @@ -1,6 +1,4 @@ -/* $OpenBSD: aicasm.c,v 1.11 2003/12/24 23:27:55 krw Exp $ */ -/* $NetBSD: aicasm.c,v 1.5 2003/07/14 15:42:39 lukem Exp $ */ - +/* $OpenBSD: aicasm.c,v 1.12 2004/06/12 03:37:19 krw Exp $ */ /* * Aic7xxx SCSI host adapter firmware asssembler * @@ -40,12 +38,11 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. * - * $FreeBSD: src/sys/dev/aic7xxx/aicasm/aicasm.c,v 1.35 2002/08/31 06:39:40 gibbs Exp $ + * $Id: aicasm.c,v 1.12 2004/06/12 03:37:19 krw Exp $ + * + * $FreeBSD: src/sys/dev/aic7xxx/aicasm/aicasm.c,v 1.37 2004/03/12 21:45:25 trhodes Exp $ */ - #include -/* __RCSID("$NetBSD: aicasm.c,v 1.5 2003/07/14 15:42:39 lukem Exp $"); */ - #include #include @@ -148,7 +145,7 @@ main(int argc, char *argv[]) yydebug = 0; mmdebug = 0; #endif - while ((ch = getopt(argc, argv, "d:i:l:n:o:p:r:I:")) != -1) { + while ((ch = getopt(argc, argv, "d:i:l:n:o:p:r:I:X")) != -1) { switch(ch) { case 'd': #if DEBUG @@ -249,6 +246,9 @@ main(int argc, char *argv[]) } break; } + case 'X': + /* icc version of -nostdinc */ + break; case '?': default: usage(); @@ -314,7 +314,7 @@ usage() { (void)fprintf(stderr, -"usage: %-16s [-nostdinc] [-I-] [-I directory] [-o output_file]\n" +"usage: %-16s [-nostdinc|-X] [-I-] [-I directory] [-o output_file]\n" " [-r register_output_file [-p register_diag_file -i includefile]]\n" " [-l program_list_file]\n" " input_file\n", appname); @@ -614,10 +614,10 @@ output_listing(char *ifilename) while (line < cur_instr->srcline) { fgets(buf, sizeof(buf), ifile); - fprintf(listfile, "\t\t%s", buf); + fprintf(listfile, " \t%s", buf); line++; } - fprintf(listfile, "%03x %02x%02x%02x%02x", instrptr, + fprintf(listfile, "%04x %02x%02x%02x%02x", instrptr, #if BYTE_ORDER == LITTLE_ENDIAN cur_instr->format.bytes[0], cur_instr->format.bytes[1], @@ -629,14 +629,23 @@ output_listing(char *ifilename) cur_instr->format.bytes[1], cur_instr->format.bytes[0]); #endif - fgets(buf, sizeof(buf), ifile); - fprintf(listfile, "\t%s", buf); - line++; + /* + * Macro expansions can cause several instructions + * to be output for a single source line. Only + * advance the line once in these cases. + */ + if (line == cur_instr->srcline) { + fgets(buf, sizeof(buf), ifile); + fprintf(listfile, "\t%s", buf); + line++; + } else { + fprintf(listfile, "\n"); + } instrptr++; } /* Dump the remainder of the file */ while(fgets(buf, sizeof(buf), ifile) != NULL) - fprintf(listfile, "\t\t%s", buf); + fprintf(listfile, " %s", buf); fclose(ifile); } diff --git a/sys/dev/microcode/aic7xxx/aicasm_macro_scan.l b/sys/dev/microcode/aic7xxx/aicasm_macro_scan.l index a38ba14c0f4..7932e696051 100644 --- a/sys/dev/microcode/aic7xxx/aicasm_macro_scan.l +++ b/sys/dev/microcode/aic7xxx/aicasm_macro_scan.l @@ -1,7 +1,6 @@ %{ -/* $OpenBSD: aicasm_macro_scan.l,v 1.2 2003/12/24 23:27:55 krw Exp $ */ -/* $NetBSD: aicasm_macro_scan.l,v 1.1 2003/04/19 19:26:11 fvdl Exp $ */ - +/* +/* $OpenBSD: aicasm_macro_scan.l,v 1.3 2004/06/12 03:37:20 krw Exp $ */ /* * Sub-Lexical Analyzer for macro invokation in * the Aic7xxx SCSI Host adapter sequencer assembler. @@ -41,7 +40,9 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. * - * $FreeBSD: src/sys/dev/aic7xxx/aicasm/aicasm_macro_scan.l,v 1.4 2002/09/27 03:23:02 gibbs Exp $ + * $Id: aicasm_macro_scan.l,v 1.3 2004/06/12 03:37:20 krw Exp $ + * + * $FreeBSD: src/sys/dev/aic7xxx/aicasm/aicasm_macro_scan.l,v 1.5 2003/12/16 23:54:07 gibbs Exp $ */ #include @@ -79,6 +80,7 @@ MCARG [^(), \t]+ \n { ++yylineno; } +\r ; {SPACE} ; \( { parren_count++; @@ -111,7 +113,7 @@ MCARG [^(), \t]+ {MCARG} { char *yptr; - yptr = yytext; + yptr = mmtext; while (*yptr) *string_buf_ptr++ = *yptr++; } @@ -132,7 +134,7 @@ MCARG [^(), \t]+ } {WORD}[(] { /* May be a symbol or a macro invocation. */ - mmlval.sym = symtable_get(yytext); + mmlval.sym = symtable_get(mmtext); if (mmlval.sym->type != MACRO) { stop("Expecting Macro Name", EX_DATAERR); @@ -144,7 +146,7 @@ MCARG [^(), \t]+ } . { snprintf(buf, sizeof(buf), "Invalid character " - "'%c'", yytext[0]); + "'%c'", mmtext[0]); stop(buf, EX_DATAERR); } %% diff --git a/sys/dev/microcode/aic7xxx/aicasm_scan.l b/sys/dev/microcode/aic7xxx/aicasm_scan.l index 0b84aceda95..b682cfda1a3 100644 --- a/sys/dev/microcode/aic7xxx/aicasm_scan.l +++ b/sys/dev/microcode/aic7xxx/aicasm_scan.l @@ -1,6 +1,5 @@ %{ -/* $OpenBSD: aicasm_scan.l,v 1.7 2003/12/24 23:27:55 krw Exp $ */ -/* $NetBSD: aicasm_scan.l,v 1.3 2003/04/19 19:26:11 fvdl Exp $ */ +/* $OpenBSD: aicasm_scan.l,v 1.8 2004/06/12 03:37:20 krw Exp $ */ /* * Lexical Analyzer for the Aic7xxx SCSI Host adapter sequencer assembler. * @@ -40,7 +39,9 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. * - * $FreeBSD: src/sys/dev/aic7xxx/aicasm/aicasm_scan.l,v 1.21 2002/09/27 03:23:02 gibbs Exp $ + * $Id: aicasm_scan.l,v 1.8 2004/06/12 03:37:20 krw Exp $ + * + * $FreeBSD: src/sys/dev/aic7xxx/aicasm/aicasm_scan.l,v 1.22 2003/12/16 23:54:07 gibbs Exp $ */ #include @@ -87,6 +88,7 @@ MBODY ((\\[^\n])*[^\n\\]*)+ %% \n { ++yylineno; } +\r ; "/*" { BEGIN COMMENT; /* Enter comment eating state */ } "/*" { fprintf(stderr, "Warning! Comment within comment."); } \n { ++yylineno; } @@ -114,6 +116,7 @@ if[ \t]*\( { } } \n { ++yylineno; } +\r ; [^()\n]+ { char *yptr; @@ -359,6 +362,7 @@ else { return T_ELSE; } /* Eat escaped newlines. */ ++yylineno; } +\r ; \n { /* Macros end on the first unescaped newline. */ BEGIN INITIAL; @@ -369,10 +373,17 @@ else { return T_ELSE; } } {MBODY} { char *yptr; + char c; yptr = yytext; - while (*yptr) - *string_buf_ptr++ = *yptr++; + while (c = *yptr++) { + /* + * Strip carriage returns. + */ + if (c == '\r') + continue; + *string_buf_ptr++ = c; + } } {WORD}\( { char *yptr; -- cgit v1.2.3