diff options
Diffstat (limited to 'tools/perf/util/annotate.h')
| -rw-r--r-- | tools/perf/util/annotate.h | 23 | 
1 files changed, 12 insertions, 11 deletions
diff --git a/tools/perf/util/annotate.h b/tools/perf/util/annotate.h index 5bbcec173b82..87e4cadc5d27 100644 --- a/tools/perf/util/annotate.h +++ b/tools/perf/util/annotate.h @@ -11,7 +11,12 @@  #include <linux/rbtree.h>  #include <pthread.h> -struct ins; +struct ins_ops; + +struct ins { +	const char     *name; +	struct ins_ops *ops; +};  struct ins_operands {  	char	*raw; @@ -28,24 +33,21 @@ struct ins_operands {  			u64	addr;  		} source;  		struct { -			struct ins *ins; +			struct ins	    ins;  			struct ins_operands *ops;  		} locked;  	};  }; +struct arch; +  struct ins_ops {  	void (*free)(struct ins_operands *ops); -	int (*parse)(struct ins_operands *ops, struct map *map); +	int (*parse)(struct arch *arch, struct ins_operands *ops, struct map *map);  	int (*scnprintf)(struct ins *ins, char *bf, size_t size,  			 struct ins_operands *ops);  }; -struct ins { -	const char     *name; -	struct ins_ops *ops; -}; -  bool ins__is_jump(const struct ins *ins);  bool ins__is_call(const struct ins *ins);  bool ins__is_ret(const struct ins *ins); @@ -57,8 +59,7 @@ struct disasm_line {  	struct list_head    node;  	s64		    offset;  	char		    *line; -	char		    *name; -	struct ins	    *ins; +	struct ins	    ins;  	int		    line_nr;  	float		    ipc;  	u64		    cycles; @@ -156,7 +157,7 @@ int hist_entry__inc_addr_samples(struct hist_entry *he, int evidx, u64 addr);  int symbol__alloc_hist(struct symbol *sym);  void symbol__annotate_zero_histograms(struct symbol *sym); -int symbol__disassemble(struct symbol *sym, struct map *map, size_t privsize); +int symbol__disassemble(struct symbol *sym, struct map *map, const char *arch_name, size_t privsize);  enum symbol_disassemble_errno {  	SYMBOL_ANNOTATE_ERRNO__SUCCESS		= 0,  |