.. | .. |
---|
14 | 14 | #include <stdio.h> |
---|
15 | 15 | |
---|
16 | 16 | struct cs_etm_decoder; |
---|
17 | | - |
---|
18 | | -struct cs_etm_buffer { |
---|
19 | | - const unsigned char *buf; |
---|
20 | | - size_t len; |
---|
21 | | - u64 offset; |
---|
22 | | - u64 ref_timestamp; |
---|
23 | | -}; |
---|
24 | | - |
---|
25 | | -enum cs_etm_sample_type { |
---|
26 | | - CS_ETM_EMPTY = 0, |
---|
27 | | - CS_ETM_RANGE = 1 << 0, |
---|
28 | | - CS_ETM_TRACE_ON = 1 << 1, |
---|
29 | | -}; |
---|
30 | | - |
---|
31 | | -struct cs_etm_packet { |
---|
32 | | - enum cs_etm_sample_type sample_type; |
---|
33 | | - u64 start_addr; |
---|
34 | | - u64 end_addr; |
---|
35 | | - u8 last_instr_taken_branch; |
---|
36 | | - u8 exc; |
---|
37 | | - u8 exc_ret; |
---|
38 | | - int cpu; |
---|
39 | | -}; |
---|
| 17 | +struct cs_etm_packet; |
---|
| 18 | +struct cs_etm_packet_queue; |
---|
40 | 19 | |
---|
41 | 20 | struct cs_etm_queue; |
---|
42 | 21 | |
---|
43 | | -typedef u32 (*cs_etm_mem_cb_type)(struct cs_etm_queue *, u64, |
---|
44 | | - size_t, u8 *); |
---|
| 22 | +typedef u32 (*cs_etm_mem_cb_type)(struct cs_etm_queue *, u8, u64, size_t, u8 *); |
---|
| 23 | + |
---|
| 24 | +struct cs_etmv3_trace_params { |
---|
| 25 | + u32 reg_ctrl; |
---|
| 26 | + u32 reg_trc_id; |
---|
| 27 | + u32 reg_ccer; |
---|
| 28 | + u32 reg_idr; |
---|
| 29 | +}; |
---|
45 | 30 | |
---|
46 | 31 | struct cs_etmv4_trace_params { |
---|
47 | 32 | u32 reg_idr0; |
---|
.. | .. |
---|
55 | 40 | struct cs_etm_trace_params { |
---|
56 | 41 | int protocol; |
---|
57 | 42 | union { |
---|
| 43 | + struct cs_etmv3_trace_params etmv3; |
---|
58 | 44 | struct cs_etmv4_trace_params etmv4; |
---|
59 | 45 | }; |
---|
60 | 46 | }; |
---|
.. | .. |
---|
78 | 64 | CS_ETM_PROTO_ETMV3 = 1, |
---|
79 | 65 | CS_ETM_PROTO_ETMV4i, |
---|
80 | 66 | CS_ETM_PROTO_ETMV4d, |
---|
| 67 | + CS_ETM_PROTO_PTM, |
---|
81 | 68 | }; |
---|
82 | 69 | |
---|
83 | | -enum { |
---|
| 70 | +enum cs_etm_decoder_operation { |
---|
84 | 71 | CS_ETM_OPERATION_PRINT = 1, |
---|
85 | 72 | CS_ETM_OPERATION_DECODE, |
---|
| 73 | + CS_ETM_OPERATION_MAX, |
---|
86 | 74 | }; |
---|
87 | 75 | |
---|
88 | 76 | int cs_etm_decoder__process_data_block(struct cs_etm_decoder *decoder, |
---|
.. | .. |
---|
100 | 88 | u64 start, u64 end, |
---|
101 | 89 | cs_etm_mem_cb_type cb_func); |
---|
102 | 90 | |
---|
103 | | -int cs_etm_decoder__get_packet(struct cs_etm_decoder *decoder, |
---|
| 91 | +int cs_etm_decoder__get_packet(struct cs_etm_packet_queue *packet_queue, |
---|
104 | 92 | struct cs_etm_packet *packet); |
---|
105 | 93 | |
---|
106 | 94 | int cs_etm_decoder__reset(struct cs_etm_decoder *decoder); |
---|