diff options
author | gibbs <gibbs@FreeBSD.org> | 2003-01-20 18:02:11 +0000 |
---|---|---|
committer | gibbs <gibbs@FreeBSD.org> | 2003-01-20 18:02:11 +0000 |
commit | 851c77f4f508d7f241eebb7bdc6605e85188aea7 (patch) | |
tree | e5dc26ba9bd54c29fb209e2690a462ab9fc9d228 /sys | |
parent | 6726f4815718de5d151ba97f66ec3fb4098cff75 (diff) | |
download | FreeBSD-src-851c77f4f508d7f241eebb7bdc6605e85188aea7.zip FreeBSD-src-851c77f4f508d7f241eebb7bdc6605e85188aea7.tar.gz |
Allow constants to be complex expressions so long as those
expressions can be fully evaluated during assembly.
Remove the numerical_value portion of the grammer which is
no longer referenced.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/aic7xxx/aicasm/aicasm_gram.y | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/sys/dev/aic7xxx/aicasm/aicasm_gram.y b/sys/dev/aic7xxx/aicasm/aicasm_gram.y index fb3aa14..67e046d 100644 --- a/sys/dev/aic7xxx/aicasm/aicasm_gram.y +++ b/sys/dev/aic7xxx/aicasm/aicasm_gram.y @@ -38,7 +38,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. * - * $Id: //depot/aic7xxx/aic7xxx/aicasm/aicasm_gram.y#26 $ + * $Id: //depot/aic7xxx/aic7xxx/aicasm/aicasm_gram.y#29 $ * * $FreeBSD$ */ @@ -209,7 +209,7 @@ static int is_download_const(expression_t *immed); %type <value> export ret f1_opcode f2_opcode jmp_jc_jnc_call jz_jnz je_jne -%type <value> numerical_value mode_value mode_list macro_arglist +%type <value> mode_value mode_list macro_arglist %left '|' %left '&' @@ -707,7 +707,7 @@ expression: ; constant: - T_CONST T_SYMBOL numerical_value + T_CONST T_SYMBOL expression { if ($2->type != UNINITIALIZED) { stop("Re-definition of symbol as a constant", @@ -716,7 +716,7 @@ constant: } $2->type = CONST; initialize_symbol($2); - $2->info.cinfo->value = $3; + $2->info.cinfo->value = $3.value; } | T_CONST T_SYMBOL T_DOWNLOAD { @@ -784,17 +784,6 @@ macro_arglist: } ; -numerical_value: - T_NUMBER - { - $$ = $1; - } -| '-' T_NUMBER - { - $$ = -$2; - } -; - scratch_ram: T_SRAM '{' { @@ -994,6 +983,7 @@ critical_section_start: cs->begin_addr = instruction_ptr; in_critical_section = TRUE; } +; critical_section_end: T_END_CS ';' @@ -1008,6 +998,7 @@ critical_section_end: cs->end_addr = instruction_ptr; in_critical_section = FALSE; } +; export: { $$ = 0; } |