mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-02 05:48:07 +02:00
aubinator: Remove bogus "end" parameter in gen_disasm_disassemble()
Earlier, the loop pretends to loop over instructions from "start" to "end", but the callers always pass 8192 for end, which is some huge bogus value. The real loop termination condition is send-with-EOT or 0. (Ken) Signed-off-by: Sirisha Gandikota <Sirisha.Gandikota@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
1ab92d80a8
commit
aa7b410592
3 changed files with 12 additions and 10 deletions
|
|
@ -303,7 +303,7 @@ handle_media_interface_descriptor_load(struct gen_spec *spec, uint32_t *p)
|
|||
}
|
||||
|
||||
insns = (struct brw_instruction *) (gtt + start);
|
||||
gen_disasm_disassemble(disasm, insns, 0, 8192, stdout);
|
||||
gen_disasm_disassemble(disasm, insns, 0, stdout);
|
||||
|
||||
dump_samplers(spec, descriptors[3] & ~0x1f);
|
||||
dump_binding_table(spec, descriptors[4] & ~0x1f);
|
||||
|
|
@ -401,7 +401,7 @@ handle_3dstate_vs(struct gen_spec *spec, uint32_t *p)
|
|||
instruction_base, start);
|
||||
|
||||
insns = (struct brw_instruction *) (gtt + instruction_base + start);
|
||||
gen_disasm_disassemble(disasm, insns, 0, 8192, stdout);
|
||||
gen_disasm_disassemble(disasm, insns, 0, stdout);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -425,7 +425,7 @@ handle_3dstate_hs(struct gen_spec *spec, uint32_t *p)
|
|||
instruction_base, start);
|
||||
|
||||
insns = (struct brw_instruction *) (gtt + instruction_base + start);
|
||||
gen_disasm_disassemble(disasm, insns, 0, 8192, stdout);
|
||||
gen_disasm_disassemble(disasm, insns, 0, stdout);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -519,21 +519,21 @@ handle_3dstate_ps(struct gen_spec *spec, uint32_t *p)
|
|||
printf(" Kernel[0] %s\n", k0);
|
||||
if (k0 != unused) {
|
||||
insns = (struct brw_instruction *) (gtt + start);
|
||||
gen_disasm_disassemble(disasm, insns, 0, 8192, stdout);
|
||||
gen_disasm_disassemble(disasm, insns, 0, stdout);
|
||||
}
|
||||
|
||||
start = instruction_base + (p[k1_offset] & mask);
|
||||
printf(" Kernel[1] %s\n", k1);
|
||||
if (k1 != unused) {
|
||||
insns = (struct brw_instruction *) (gtt + start);
|
||||
gen_disasm_disassemble(disasm, insns, 0, 8192, stdout);
|
||||
gen_disasm_disassemble(disasm, insns, 0, stdout);
|
||||
}
|
||||
|
||||
start = instruction_base + (p[k2_offset] & mask);
|
||||
printf(" Kernel[2] %s\n", k2);
|
||||
if (k2 != unused) {
|
||||
insns = (struct brw_instruction *) (gtt + start);
|
||||
gen_disasm_disassemble(disasm, insns, 0, 8192, stdout);
|
||||
gen_disasm_disassemble(disasm, insns, 0, stdout);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -45,13 +45,15 @@ is_send(uint32_t opcode)
|
|||
}
|
||||
|
||||
void
|
||||
gen_disasm_disassemble(struct gen_disasm *disasm, void *assembly, int start,
|
||||
int end, FILE *out)
|
||||
gen_disasm_disassemble(struct gen_disasm *disasm, void *assembly,
|
||||
int start, FILE *out)
|
||||
{
|
||||
struct gen_device_info *devinfo = &disasm->devinfo;
|
||||
bool dump_hex = false;
|
||||
int offset = start;
|
||||
|
||||
for (int offset = start; offset < end;) {
|
||||
/* This loop exits when send-with-EOT or when opcode is 0 */
|
||||
while (true) {
|
||||
brw_inst *insn = assembly + offset;
|
||||
brw_inst uncompacted;
|
||||
bool compacted = brw_inst_cmpt_control(devinfo, insn);
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ struct gen_disasm;
|
|||
|
||||
struct gen_disasm *gen_disasm_create(int pciid);
|
||||
void gen_disasm_disassemble(struct gen_disasm *disasm,
|
||||
void *assembly, int start, int end, FILE *out);
|
||||
void *assembly, int start, FILE *out);
|
||||
|
||||
void gen_disasm_destroy(struct gen_disasm *disasm);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue