summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHomer Hsing <homer.xing@intel.com>2012-09-24 16:39:36 +0800
committerXiang, Haihao <haihao.xiang@intel.com>2012-09-28 04:06:00 -0400
commitf6fbfc762dfdde347afd382fcc372ba447351f21 (patch)
tree8688df81ea910452d1f92ba347d5e5cb74d12d7e
parent679e7a31fb3b14cbeb7636d63055af76397156f3 (diff)
Fix reloc_target_offset computing logic
-rw-r--r--src/main.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/main.c b/src/main.c
index 4dee1b3..3236e75 100644
--- a/src/main.c
+++ b/src/main.c
@@ -402,18 +402,18 @@ int main(int argc, char **argv)
struct brw_instruction *inst = & entry->instruction;
if (inst->first_reloc_target)
- inst->first_reloc_offset = label_to_addr(inst->first_reloc_target, entry->inst_offset);
+ inst->first_reloc_offset = label_to_addr(inst->first_reloc_target, entry->inst_offset) - entry->inst_offset;
if (inst->second_reloc_target)
- inst->second_reloc_offset = label_to_addr(inst->second_reloc_target, entry->inst_offset);
+ inst->second_reloc_offset = label_to_addr(inst->second_reloc_target, entry->inst_offset) - entry->inst_offset;
if (inst->second_reloc_offset) {
// this is a branch instruction with two offset arguments
- entry->instruction.bits3.branch_2_offset.JIP = jump_distance(inst->first_reloc_offset - entry->inst_offset);
- entry->instruction.bits3.branch_2_offset.UIP = jump_distance(inst->second_reloc_offset - entry->inst_offset);
+ entry->instruction.bits3.branch_2_offset.JIP = jump_distance(inst->first_reloc_offset);
+ entry->instruction.bits3.branch_2_offset.UIP = jump_distance(inst->second_reloc_offset);
} else if (inst->first_reloc_offset) {
// this is a branch instruction with one offset argument
- int offset = inst->first_reloc_offset - entry->inst_offset;
+ int offset = inst->first_reloc_offset;
/* bspec: Unlike other flow control instructions, the offset used by JMPI is relative to the incremented instruction pointer rather than the IP value for the instruction itself. */
if(entry->instruction.header.opcode == BRW_OPCODE_JMPI)
offset --;