b43-asm: Pass external conditions as immediates
[b43-tools.git] / assembler / parser.y
index 753be084c1d98925335a3fc4cbec1cfe30750beb..e55c2b7734617c88d26d2c6e92bc44972d42f1f1 100644 (file)
@@ -487,8 +487,11 @@ statement  : asmdir {
                ;
 
 /* ASM directives */
-asmdir         : asmarch {
-                       $$ = $1;
+asmdir         : ASM_ARCH hexnum_decnum {
+                       struct asmdir *ad = xmalloc(sizeof(struct asmdir));
+                       ad->type = ADIR_ARCH;
+                       ad->u.arch = (unsigned int)(unsigned long)$2;
+                       $$ = ad;
                  }
                | ASM_START identifier {
                        struct asmdir *ad = xmalloc(sizeof(struct asmdir));
@@ -501,20 +504,6 @@ asmdir             : asmarch {
                  }
                ;
 
-asmarch                : ASM_ARCH ARCH_NEWWORLD {
-                       struct asmdir *ad = xmalloc(sizeof(struct asmdir));
-                       ad->type = ADIR_ARCH;
-                       ad->u.arch = NEWWORLD;
-                       $$ = ad;
-                 }
-               | ASM_ARCH ARCH_OLDWORLD {
-                       struct asmdir *ad = xmalloc(sizeof(struct asmdir));
-                       ad->type = ADIR_ARCH;
-                       ad->u.arch = OLDWORLD;
-                       $$ = ad;
-                 }
-               ;
-
 label          : LABEL {
                        struct label *label = xmalloc(sizeof(struct label));
                        char *l;
@@ -1008,11 +997,11 @@ extended_operlist : decnum COMMA decnum COMMA operand COMMA operand COMMA operan
                  }
                ;
 
-external_jump_operands : hexnum COMMA operand COMMA operand COMMA labelref {
+external_jump_operands : imm COMMA operand COMMA operand COMMA labelref {
                        struct operlist *ol = xmalloc(sizeof(struct operlist));
                        struct operand *cond = xmalloc(sizeof(struct operand));
-                       cond->type = OPER_RAW;
-                       cond->u.raw = (unsigned long)$1;
+                       cond->type = OPER_IMM;
+                       cond->u.imm = $1;
                        ol->oper[0] = cond;
                        ol->oper[1] = $3;
                        ol->oper[2] = $5;