X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=assembler%2Fparser.y;h=4ace3307cd8af11e278f300dd13d91e923fcfdf8;hb=dbf48987ce62b43059612814ab8530a27707d245;hp=e75d9f4d371873ae1d0ab2e7d3f3c757e313ad5f;hpb=3bd4f014e1ae2af49b2cbdd94a86c07559aacbce;p=b43-tools.git diff --git a/assembler/parser.y b/assembler/parser.y index e75d9f4..4ace330 100644 --- a/assembler/parser.y +++ b/assembler/parser.y @@ -45,7 +45,7 @@ extern struct initvals_sect *cur_initvals_sect; %token OP_ADD OP_ADDSC OP_ADDC OP_ADDSCC OP_SUB OP_SUBSC OP_SUBC OP_SUBSCC OP_SRA OP_OR OP_AND OP_XOR OP_SR OP_SRX OP_SL OP_RL OP_RR OP_NAND OP_ORX OP_MOV OP_JMP OP_JAND OP_JNAND OP_JS OP_JNS OP_JE OP_JNE OP_JLS OP_JGES OP_JGS OP_JLES OP_JL OP_JGE OP_JG OP_JLE OP_JZX OP_JNZX OP_JEXT OP_JNEXT OP_CALL OP_RET OP_TKIPH OP_TKIPHS OP_TKIPL OP_TKIPLS OP_NAP RAW_CODE -%token IVAL_MMIO16 IVAL_MMIO32 IVAL_PHY IVAL_RADIO IVAL_SHM16 IVAL_SHM32 +%token IVAL_MMIO16 IVAL_MMIO32 IVAL_PHY IVAL_RADIO IVAL_SHM16 IVAL_SHM32 IVAL_TRAM %start line @@ -149,6 +149,13 @@ ivals_write : IVAL_MMIO16 imm_value COMMA imm_value { iop->args[2] = (unsigned int)(unsigned long)$6; $$ = iop; } + | IVAL_TRAM imm_value COMMA imm_value { + struct initval_op *iop = xmalloc(sizeof(struct initval_op)); + iop->type = IVAL_W_TRAM; + iop->args[0] = (unsigned int)(unsigned long)$2; + iop->args[1] = (unsigned int)(unsigned long)$4; + $$ = iop; + } ; statement : asmdir { @@ -516,7 +523,12 @@ asmdir : ASM_ARCH hexnum_decnum { ad->u.start = label; $$ = ad; } - | ASM_ASSERT assertion { + | asm_assert { + $$ = NULL; + } + ; + +asm_assert : ASM_ASSERT assertion { unsigned int ok = (unsigned int)(unsigned long)$2; if (!ok) assembler_assertion_failed(); @@ -1201,6 +1213,10 @@ complex_imm : PAREN_OPEN complex_imm_arg complex_imm_oper complex_imm_arg PAREN_ | PAREN_OPEN complex_imm PAREN_CLOSE { $$ = $2; } + | PAREN_OPEN asm_assert PAREN_CLOSE { + /* Inline assertion. Always return zero */ + $$ = (void *)(unsigned long)(unsigned int)0; + } | PAREN_OPEN BITW_NOT complex_imm PAREN_CLOSE { unsigned long n = (unsigned long)$3; n = ~n;