fwcutter/make: Avoid _DEFAULT_SOURCE warning
[b43-tools.git] / assembler / main.c
index 8abe03c8fbbe51ac3371b0c9990ce313f6aa6dd3..a62a15eca52028a6dc2e0efcfde6ffc659ae9fe2 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *   Copyright (C) 2006-2010  Michael Buesch <mb@bu3sch.de>
+ *   Copyright (C) 2006-2010  Michael Buesch <m@bues.ch>
  *
  *   This program is free software; you can redistribute it and/or modify
  *   it under the terms of the GNU General Public License version 2
@@ -429,7 +429,7 @@ static struct code_output * do_assemble_insn(struct assembler_context *ctx,
                                             struct instruction *insn,
                                             unsigned int opcode)
 {
-       int i;
+       unsigned int i;
        struct operlist *ol;
        int nr_oper = 0;
        uint64_t code = 0;
@@ -737,6 +737,9 @@ static void assemble_instruction(struct assembler_context *ctx,
        unsigned int opcode;
 
        switch (insn->op) {
+       case OP_MUL:
+               do_assemble_insn(ctx, insn, 0x101);
+               break;
        case OP_ADD:
                do_assemble_insn(ctx, insn, 0x1C0);
                break;
@@ -855,6 +858,22 @@ static void assemble_instruction(struct assembler_context *ctx,
                out = do_assemble_insn(ctx, insn, 0x0DC | 0x1);
                out->is_jump_insn = 1;
                break;
+       case OP_JDN:
+               out = do_assemble_insn(ctx, insn, 0x0D6);
+               out->is_jump_insn = 1;
+               break;
+       case OP_JDPZ:
+               out = do_assemble_insn(ctx, insn, 0x0D6 | 0x1);
+               out->is_jump_insn = 1;
+               break;
+       case OP_JDP:
+               out = do_assemble_insn(ctx, insn, 0x0D8);
+               out->is_jump_insn = 1;
+               break;
+       case OP_JDNZ:
+               out = do_assemble_insn(ctx, insn, 0x0D8 | 0x1);
+               out->is_jump_insn = 1;
+               break;
        case OP_JZX:
                opcode = merge_ext_into_opcode(ctx, 0x400, insn);
                out = do_assemble_insn(ctx, insn, opcode);
@@ -1017,7 +1036,7 @@ static void resolve_labels(struct assembler_context *ctx)
 {
        struct code_output *c;
        int addr;
-       int i;
+       unsigned int i;
        unsigned int current_address;
 
        /* Calculate the absolute addresses for each instruction. */
@@ -1241,7 +1260,7 @@ static void initialize(void)
 {
        INIT_LIST_HEAD(&infile.sl);
        INIT_LIST_HEAD(&infile.ivals);
-#ifdef YYDEBUG
+#if YYDEBUG
        if (IS_INSANE_DEBUG)
                yydebug = 1;
        else