projects
/
b43-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add script for brcm80211 firmware conversion
[b43-tools.git]
/
assembler
/
parser.y
diff --git
a/assembler/parser.y
b/assembler/parser.y
index e75d9f4d371873ae1d0ab2e7d3f3c757e313ad5f..4ace3307cd8af11e278f300dd13d91e923fcfdf8 100644
(file)
--- 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 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
%start line
@@
-149,6
+149,13
@@
ivals_write : IVAL_MMIO16 imm_value COMMA imm_value {
iop->args[2] = (unsigned int)(unsigned long)$6;
$$ = iop;
}
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 {
;
statement : asmdir {
@@
-516,7
+523,12
@@
asmdir : ASM_ARCH hexnum_decnum {
ad->u.start = label;
$$ = ad;
}
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();
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 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;
| PAREN_OPEN BITW_NOT complex_imm PAREN_CLOSE {
unsigned long n = (unsigned long)$3;
n = ~n;