i965: Reduce cross-pollination between the DRI driver and compiler
[mesa.git] / src / intel / tools / disasm.c
index 89c711b1d3fbeb43e7dbd1be5b7cd1efdcee4872..96c6ce290a0b822c408adc007c520ba59569821c 100644 (file)
@@ -23,7 +23,6 @@
 
 #include <stdlib.h>
 
-#include "brw_context.h"
 #include "brw_inst.h"
 #include "brw_eu.h"
 
@@ -45,13 +44,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);
@@ -99,7 +100,11 @@ gen_disasm_create(int pciid)
    if (gd == NULL)
       return NULL;
 
-   gd->devinfo = *gen_get_device_info(pciid);
+   if (!gen_get_device_info(pciid, &gd->devinfo)) {
+      free(gd);
+      return NULL;
+   }
+
    brw_init_compaction_tables(&gd->devinfo);
 
    return gd;