Lines Matching refs:buf
85 static int arm_spe_get_payload(const unsigned char *buf, size_t len, in arm_spe_get_payload() argument
88 size_t payload_len = payloadlen(buf[0]); in arm_spe_get_payload()
93 buf++; in arm_spe_get_payload()
96 case 1: packet->payload = *(uint8_t *)buf; break; in arm_spe_get_payload()
97 case 2: packet->payload = le16_to_cpu(*(uint16_t *)buf); break; in arm_spe_get_payload()
98 case 4: packet->payload = le32_to_cpu(*(uint32_t *)buf); break; in arm_spe_get_payload()
99 case 8: packet->payload = le64_to_cpu(*(uint64_t *)buf); break; in arm_spe_get_payload()
112 static int arm_spe_get_alignment(const unsigned char *buf, size_t len, in arm_spe_get_alignment() argument
115 unsigned int alignment = 1 << ((buf[0] & 0xf) + 1); in arm_spe_get_alignment()
121 return alignment - (((uintptr_t)buf) & (alignment - 1)); in arm_spe_get_alignment()
130 static int arm_spe_get_timestamp(const unsigned char *buf, size_t len, in arm_spe_get_timestamp() argument
134 return arm_spe_get_payload(buf, len, packet); in arm_spe_get_timestamp()
137 static int arm_spe_get_events(const unsigned char *buf, size_t len, in arm_spe_get_events() argument
140 int ret = arm_spe_get_payload(buf, len, packet); in arm_spe_get_events()
154 static int arm_spe_get_data_source(const unsigned char *buf, size_t len, in arm_spe_get_data_source() argument
158 return arm_spe_get_payload(buf, len, packet); in arm_spe_get_data_source()
161 static int arm_spe_get_context(const unsigned char *buf, size_t len, in arm_spe_get_context() argument
165 packet->index = buf[0] & 0x3; in arm_spe_get_context()
167 return arm_spe_get_payload(buf, len, packet); in arm_spe_get_context()
170 static int arm_spe_get_op_type(const unsigned char *buf, size_t len, in arm_spe_get_op_type() argument
174 packet->index = buf[0] & 0x3; in arm_spe_get_op_type()
175 return arm_spe_get_payload(buf, len, packet); in arm_spe_get_op_type()
178 static int arm_spe_get_counter(const unsigned char *buf, size_t len, in arm_spe_get_counter() argument
186 packet->index = ((buf[0] & 0x3) << 3) | (buf[1] & 0x7); in arm_spe_get_counter()
188 packet->index = buf[0] & 0x7; in arm_spe_get_counter()
190 packet->payload = le16_to_cpu(*(uint16_t *)(buf + 1)); in arm_spe_get_counter()
195 static int arm_spe_get_addr(const unsigned char *buf, size_t len, in arm_spe_get_addr() argument
203 packet->index = ((buf[0] & 0x3) << 3) | (buf[1] & 0x7); in arm_spe_get_addr()
205 packet->index = buf[0] & 0x7; in arm_spe_get_addr()
207 memcpy_le64(&packet->payload, buf + 1, 8); in arm_spe_get_addr()
212 static int arm_spe_do_get_packet(const unsigned char *buf, size_t len, in arm_spe_do_get_packet() argument
222 byte = buf[0]; in arm_spe_do_get_packet()
230 return arm_spe_get_addr(buf, len, 0, packet); in arm_spe_do_get_packet()
232 return arm_spe_get_counter(buf, len, 0, packet); in arm_spe_do_get_packet()
235 return arm_spe_get_timestamp(buf, len, packet); in arm_spe_do_get_packet()
237 return arm_spe_get_events(buf, len, packet); in arm_spe_do_get_packet()
239 return arm_spe_get_data_source(buf, len, packet); in arm_spe_do_get_packet()
241 return arm_spe_get_context(buf, len, packet); in arm_spe_do_get_packet()
243 return arm_spe_get_op_type(buf, len, packet); in arm_spe_do_get_packet()
246 byte = buf[1]; in arm_spe_do_get_packet()
248 return arm_spe_get_alignment(buf, len, packet); in arm_spe_do_get_packet()
250 return arm_spe_get_addr(buf, len, 1, packet); in arm_spe_do_get_packet()
252 return arm_spe_get_counter(buf, len, 1, packet); in arm_spe_do_get_packet()
258 int arm_spe_get_packet(const unsigned char *buf, size_t len, in arm_spe_get_packet() argument
263 ret = arm_spe_do_get_packet(buf, len, packet); in arm_spe_get_packet()
268 while (ret < 16 && len > (size_t)ret && !buf[ret]) in arm_spe_get_packet()
274 int arm_spe_pkt_desc(const struct arm_spe_pkt *packet, char *buf, in arm_spe_pkt_desc() argument
285 return snprintf(buf, buf_len, "%s", name); in arm_spe_pkt_desc()
290 ret = snprintf(buf, buf_len, "EV"); in arm_spe_pkt_desc()
291 buf += ret; in arm_spe_pkt_desc()
294 ret = snprintf(buf, buf_len, " EXCEPTION-GEN"); in arm_spe_pkt_desc()
295 buf += ret; in arm_spe_pkt_desc()
299 ret = snprintf(buf, buf_len, " RETIRED"); in arm_spe_pkt_desc()
300 buf += ret; in arm_spe_pkt_desc()
304 ret = snprintf(buf, buf_len, " L1D-ACCESS"); in arm_spe_pkt_desc()
305 buf += ret; in arm_spe_pkt_desc()
309 ret = snprintf(buf, buf_len, " L1D-REFILL"); in arm_spe_pkt_desc()
310 buf += ret; in arm_spe_pkt_desc()
314 ret = snprintf(buf, buf_len, " TLB-ACCESS"); in arm_spe_pkt_desc()
315 buf += ret; in arm_spe_pkt_desc()
319 ret = snprintf(buf, buf_len, " TLB-REFILL"); in arm_spe_pkt_desc()
320 buf += ret; in arm_spe_pkt_desc()
324 ret = snprintf(buf, buf_len, " NOT-TAKEN"); in arm_spe_pkt_desc()
325 buf += ret; in arm_spe_pkt_desc()
329 ret = snprintf(buf, buf_len, " MISPRED"); in arm_spe_pkt_desc()
330 buf += ret; in arm_spe_pkt_desc()
335 ret = snprintf(buf, buf_len, " LLC-ACCESS"); in arm_spe_pkt_desc()
336 buf += ret; in arm_spe_pkt_desc()
340 ret = snprintf(buf, buf_len, " LLC-REFILL"); in arm_spe_pkt_desc()
341 buf += ret; in arm_spe_pkt_desc()
345 ret = snprintf(buf, buf_len, " REMOTE-ACCESS"); in arm_spe_pkt_desc()
346 buf += ret; in arm_spe_pkt_desc()
357 case 0: return snprintf(buf, buf_len, "%s", payload & 0x1 ? in arm_spe_pkt_desc()
363 ret = snprintf(buf, buf_len, "ST"); in arm_spe_pkt_desc()
365 ret = snprintf(buf, buf_len, "LD"); in arm_spe_pkt_desc()
366 buf += ret; in arm_spe_pkt_desc()
370 ret = snprintf(buf, buf_len, " AT"); in arm_spe_pkt_desc()
371 buf += ret; in arm_spe_pkt_desc()
375 ret = snprintf(buf, buf_len, " EXCL"); in arm_spe_pkt_desc()
376 buf += ret; in arm_spe_pkt_desc()
380 ret = snprintf(buf, buf_len, " AR"); in arm_spe_pkt_desc()
381 buf += ret; in arm_spe_pkt_desc()
385 ret = snprintf(buf, buf_len, " SIMD-FP"); in arm_spe_pkt_desc()
386 buf += ret; in arm_spe_pkt_desc()
397 ret = snprintf(buf, buf_len, "B"); in arm_spe_pkt_desc()
398 buf += ret; in arm_spe_pkt_desc()
401 ret = snprintf(buf, buf_len, " COND"); in arm_spe_pkt_desc()
402 buf += ret; in arm_spe_pkt_desc()
406 ret = snprintf(buf, buf_len, " IND"); in arm_spe_pkt_desc()
407 buf += ret; in arm_spe_pkt_desc()
419 return snprintf(buf, buf_len, "%s %lld", name, payload); in arm_spe_pkt_desc()
426 return snprintf(buf, buf_len, "%s 0x%llx el%d ns=%d", in arm_spe_pkt_desc()
428 case 2: return snprintf(buf, buf_len, "VA 0x%llx", payload); in arm_spe_pkt_desc()
431 return snprintf(buf, buf_len, "PA 0x%llx ns=%d", in arm_spe_pkt_desc()
436 return snprintf(buf, buf_len, "%s 0x%lx el%d", name, in arm_spe_pkt_desc()
441 ret = snprintf(buf, buf_len, "%s %d ", name, in arm_spe_pkt_desc()
443 buf += ret; in arm_spe_pkt_desc()
446 case 0: ret = snprintf(buf, buf_len, "TOT"); break; in arm_spe_pkt_desc()
447 case 1: ret = snprintf(buf, buf_len, "ISSUE"); break; in arm_spe_pkt_desc()
448 case 2: ret = snprintf(buf, buf_len, "XLAT"); break; in arm_spe_pkt_desc()
460 return snprintf(buf, buf_len, "%s 0x%llx (%d)", in arm_spe_pkt_desc()