Index: third_party/yasm/patched-yasm/modules/arch/lc3b/lc3bbc.c |
=================================================================== |
--- third_party/yasm/patched-yasm/modules/arch/lc3b/lc3bbc.c (revision 165590) |
+++ third_party/yasm/patched-yasm/modules/arch/lc3b/lc3bbc.c (working copy) |
@@ -25,7 +25,6 @@ |
* POSSIBILITY OF SUCH DAMAGE. |
*/ |
#include <util.h> |
-/*@unused@*/ RCSID("$Id: lc3bbc.c 2130 2008-10-07 05:38:11Z peter $"); |
#include <libyasm.h> |
@@ -44,6 +43,7 @@ |
long new_val, /*@out@*/ long *neg_thres, |
/*@out@*/ long *pos_thres); |
static int lc3b_bc_insn_tobytes(yasm_bytecode *bc, unsigned char **bufp, |
+ unsigned char *bufstart, |
void *d, yasm_output_value_func output_value, |
/*@null@*/ yasm_output_reloc_func output_reloc); |
@@ -165,12 +165,14 @@ |
} |
static int |
-lc3b_bc_insn_tobytes(yasm_bytecode *bc, unsigned char **bufp, void *d, |
+lc3b_bc_insn_tobytes(yasm_bytecode *bc, unsigned char **bufp, |
+ unsigned char *bufstart, void *d, |
yasm_output_value_func output_value, |
/*@unused@*/ yasm_output_reloc_func output_reloc) |
{ |
lc3b_insn *insn = (lc3b_insn *)bc->contents; |
/*@only@*/ yasm_intnum *delta; |
+ unsigned long buf_off = (unsigned long)(*bufp - bufstart); |
/* Output opcode */ |
YASM_SAVE_16_L(*bufp, insn->opcode); |
@@ -181,29 +183,29 @@ |
break; |
case LC3B_IMM_4: |
insn->imm.size = 4; |
- if (output_value(&insn->imm, *bufp, 2, 0, bc, 1, d)) |
+ if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d)) |
return 1; |
break; |
case LC3B_IMM_5: |
insn->imm.size = 5; |
insn->imm.sign = 1; |
- if (output_value(&insn->imm, *bufp, 2, 0, bc, 1, d)) |
+ if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d)) |
return 1; |
break; |
case LC3B_IMM_6_WORD: |
insn->imm.size = 6; |
- if (output_value(&insn->imm, *bufp, 2, 0, bc, 1, d)) |
+ if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d)) |
return 1; |
break; |
case LC3B_IMM_6_BYTE: |
insn->imm.size = 6; |
insn->imm.sign = 1; |
- if (output_value(&insn->imm, *bufp, 2, 0, bc, 1, d)) |
+ if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d)) |
return 1; |
break; |
case LC3B_IMM_8: |
insn->imm.size = 8; |
- if (output_value(&insn->imm, *bufp, 2, 0, bc, 1, d)) |
+ if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d)) |
return 1; |
break; |
case LC3B_IMM_9_PC: |
@@ -220,12 +222,12 @@ |
insn->imm.size = 9; |
insn->imm.sign = 1; |
- if (output_value(&insn->imm, *bufp, 2, 0, bc, 1, d)) |
+ if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d)) |
return 1; |
break; |
case LC3B_IMM_9: |
insn->imm.size = 9; |
- if (output_value(&insn->imm, *bufp, 2, 0, bc, 1, d)) |
+ if (output_value(&insn->imm, *bufp, 2, buf_off, bc, 1, d)) |
return 1; |
break; |
default: |