Lines Matching refs:decoder

56 	struct cs_etm_decoder *decoder = (struct cs_etm_decoder *) context;  in cs_etm_decoder__mem_access()  local
58 return decoder->mem_access(decoder->data, in cs_etm_decoder__mem_access()
64 int cs_etm_decoder__add_mem_access_cb(struct cs_etm_decoder *decoder, in cs_etm_decoder__add_mem_access_cb() argument
68 decoder->mem_access = cb_func; in cs_etm_decoder__add_mem_access_cb()
70 if (ocsd_dt_add_callback_mem_acc(decoder->dcd_tree, start, end, in cs_etm_decoder__add_mem_access_cb()
72 cs_etm_decoder__mem_access, decoder)) in cs_etm_decoder__add_mem_access_cb()
78 int cs_etm_decoder__reset(struct cs_etm_decoder *decoder) in cs_etm_decoder__reset() argument
82 decoder->prev_return = OCSD_RESP_CONT; in cs_etm_decoder__reset()
84 dp_ret = ocsd_dt_process_data(decoder->dcd_tree, OCSD_OP_RESET, in cs_etm_decoder__reset()
92 int cs_etm_decoder__get_packet(struct cs_etm_decoder *decoder, in cs_etm_decoder__get_packet() argument
95 if (!decoder || !packet) in cs_etm_decoder__get_packet()
99 if (decoder->packet_count == 0) in cs_etm_decoder__get_packet()
110 decoder->head = (decoder->head + 1) & (MAX_BUFFER - 1); in cs_etm_decoder__get_packet()
112 *packet = decoder->packet_buffer[decoder->head]; in cs_etm_decoder__get_packet()
114 decoder->packet_count--; in cs_etm_decoder__get_packet()
147 struct cs_etm_decoder *decoder) in cs_etm_decoder__init_def_logger_printing() argument
154 decoder->packet_printer = d_params->packet_printer; in cs_etm_decoder__init_def_logger_printing()
173 ret = ocsd_def_errlog_set_strprint_cb(decoder->dcd_tree, in cs_etm_decoder__init_def_logger_printing()
174 (void *)decoder, in cs_etm_decoder__init_def_logger_printing()
185 struct cs_etm_decoder *decoder) in cs_etm_decoder__init_raw_frame_logging() argument
200 ocsd_def_errlog_set_strprint_cb(decoder->dcd_tree, in cs_etm_decoder__init_raw_frame_logging()
201 (void *)decoder, in cs_etm_decoder__init_raw_frame_logging()
205 ocsd_dt_set_raw_frame_printer(decoder->dcd_tree, in cs_etm_decoder__init_raw_frame_logging()
213 struct cs_etm_decoder *decoder __maybe_unused) in cs_etm_decoder__init_raw_frame_logging()
218 static int cs_etm_decoder__create_packet_printer(struct cs_etm_decoder *decoder, in cs_etm_decoder__create_packet_printer() argument
224 if (ocsd_dt_create_decoder(decoder->dcd_tree, decoder_name, in cs_etm_decoder__create_packet_printer()
229 if (ocsd_dt_set_pkt_protocol_printer(decoder->dcd_tree, csid, 0)) in cs_etm_decoder__create_packet_printer()
237 struct cs_etm_decoder *decoder) in cs_etm_decoder__create_etm_packet_printer() argument
253 return cs_etm_decoder__create_packet_printer(decoder, in cs_etm_decoder__create_etm_packet_printer()
258 static void cs_etm_decoder__clear_buffer(struct cs_etm_decoder *decoder) in cs_etm_decoder__clear_buffer() argument
262 decoder->head = 0; in cs_etm_decoder__clear_buffer()
263 decoder->tail = 0; in cs_etm_decoder__clear_buffer()
264 decoder->packet_count = 0; in cs_etm_decoder__clear_buffer()
266 decoder->packet_buffer[i].start_addr = CS_ETM_INVAL_ADDR; in cs_etm_decoder__clear_buffer()
267 decoder->packet_buffer[i].end_addr = CS_ETM_INVAL_ADDR; in cs_etm_decoder__clear_buffer()
268 decoder->packet_buffer[i].last_instr_taken_branch = false; in cs_etm_decoder__clear_buffer()
269 decoder->packet_buffer[i].exc = false; in cs_etm_decoder__clear_buffer()
270 decoder->packet_buffer[i].exc_ret = false; in cs_etm_decoder__clear_buffer()
271 decoder->packet_buffer[i].cpu = INT_MIN; in cs_etm_decoder__clear_buffer()
276 cs_etm_decoder__buffer_packet(struct cs_etm_decoder *decoder, in cs_etm_decoder__buffer_packet() argument
283 if (decoder->packet_count >= MAX_BUFFER - 1) in cs_etm_decoder__buffer_packet()
291 et = decoder->tail; in cs_etm_decoder__buffer_packet()
293 decoder->tail = et; in cs_etm_decoder__buffer_packet()
294 decoder->packet_count++; in cs_etm_decoder__buffer_packet()
296 decoder->packet_buffer[et].sample_type = sample_type; in cs_etm_decoder__buffer_packet()
297 decoder->packet_buffer[et].exc = false; in cs_etm_decoder__buffer_packet()
298 decoder->packet_buffer[et].exc_ret = false; in cs_etm_decoder__buffer_packet()
299 decoder->packet_buffer[et].cpu = *((int *)inode->priv); in cs_etm_decoder__buffer_packet()
300 decoder->packet_buffer[et].start_addr = CS_ETM_INVAL_ADDR; in cs_etm_decoder__buffer_packet()
301 decoder->packet_buffer[et].end_addr = CS_ETM_INVAL_ADDR; in cs_etm_decoder__buffer_packet()
303 if (decoder->packet_count == MAX_BUFFER - 1) in cs_etm_decoder__buffer_packet()
310 cs_etm_decoder__buffer_range(struct cs_etm_decoder *decoder, in cs_etm_decoder__buffer_range() argument
317 ret = cs_etm_decoder__buffer_packet(decoder, trace_chan_id, in cs_etm_decoder__buffer_range()
322 packet = &decoder->packet_buffer[decoder->tail]; in cs_etm_decoder__buffer_range()
343 cs_etm_decoder__buffer_trace_on(struct cs_etm_decoder *decoder, in cs_etm_decoder__buffer_trace_on() argument
346 return cs_etm_decoder__buffer_packet(decoder, trace_chan_id, in cs_etm_decoder__buffer_trace_on()
357 struct cs_etm_decoder *decoder = (struct cs_etm_decoder *) context; in cs_etm_decoder__gen_trace_elem_printer() local
363 decoder->trace_on = false; in cs_etm_decoder__gen_trace_elem_printer()
366 resp = cs_etm_decoder__buffer_trace_on(decoder, in cs_etm_decoder__gen_trace_elem_printer()
368 decoder->trace_on = true; in cs_etm_decoder__gen_trace_elem_printer()
371 resp = cs_etm_decoder__buffer_range(decoder, elem, in cs_etm_decoder__gen_trace_elem_printer()
375 decoder->packet_buffer[decoder->tail].exc = true; in cs_etm_decoder__gen_trace_elem_printer()
378 decoder->packet_buffer[decoder->tail].exc_ret = true; in cs_etm_decoder__gen_trace_elem_printer()
398 struct cs_etm_decoder *decoder) in cs_etm_decoder__create_etm_packet_decoder() argument
415 if (ocsd_dt_create_decoder(decoder->dcd_tree, in cs_etm_decoder__create_etm_packet_decoder()
421 if (ocsd_dt_set_gen_elem_outfn(decoder->dcd_tree, in cs_etm_decoder__create_etm_packet_decoder()
423 decoder)) in cs_etm_decoder__create_etm_packet_decoder()
432 struct cs_etm_decoder *decoder) in cs_etm_decoder__create_etm_decoder() argument
436 decoder); in cs_etm_decoder__create_etm_decoder()
439 decoder); in cs_etm_decoder__create_etm_decoder()
448 struct cs_etm_decoder *decoder; in cs_etm_decoder__new() local
456 decoder = zalloc(sizeof(*decoder)); in cs_etm_decoder__new()
458 if (!decoder) in cs_etm_decoder__new()
461 decoder->data = d_params->data; in cs_etm_decoder__new()
462 decoder->prev_return = OCSD_RESP_CONT; in cs_etm_decoder__new()
463 cs_etm_decoder__clear_buffer(decoder); in cs_etm_decoder__new()
478 decoder->dcd_tree = ocsd_create_dcd_tree(format, flags); in cs_etm_decoder__new()
480 if (decoder->dcd_tree == 0) in cs_etm_decoder__new()
484 ret = cs_etm_decoder__init_def_logger_printing(d_params, decoder); in cs_etm_decoder__new()
489 cs_etm_decoder__init_raw_frame_logging(d_params, decoder); in cs_etm_decoder__new()
494 decoder); in cs_etm_decoder__new()
499 return decoder; in cs_etm_decoder__new()
502 ocsd_destroy_dcd_tree(decoder->dcd_tree); in cs_etm_decoder__new()
504 free(decoder); in cs_etm_decoder__new()
508 int cs_etm_decoder__process_data_block(struct cs_etm_decoder *decoder, in cs_etm_decoder__process_data_block() argument
514 ocsd_datapath_resp_t prev_return = decoder->prev_return; in cs_etm_decoder__process_data_block()
520 cur = ocsd_dt_process_data(decoder->dcd_tree, in cs_etm_decoder__process_data_block()
527 cur = ocsd_dt_process_data(decoder->dcd_tree, in cs_etm_decoder__process_data_block()
550 decoder->prev_return = cur; in cs_etm_decoder__process_data_block()
556 void cs_etm_decoder__free(struct cs_etm_decoder *decoder) in cs_etm_decoder__free() argument
558 if (!decoder) in cs_etm_decoder__free()
561 ocsd_destroy_dcd_tree(decoder->dcd_tree); in cs_etm_decoder__free()
562 decoder->dcd_tree = NULL; in cs_etm_decoder__free()
563 free(decoder); in cs_etm_decoder__free()