OSDN Git Service

perf arm-spe: Refactor operation packet handling
[uclinux-h8/linux.git] / tools / perf / util / arm-spe-decoder / arm-spe-pkt-decoder.c
index d6c060f..1d1354a 100644 (file)
@@ -144,7 +144,7 @@ static int arm_spe_get_op_type(const unsigned char *buf, size_t len,
                               struct arm_spe_pkt *packet)
 {
        packet->type = ARM_SPE_OP_TYPE;
-       packet->index = buf[0] & 0x3;
+       packet->index = SPE_OP_PKT_HDR_CLASS(buf[0]);
        return arm_spe_get_payload(buf, len, 0, packet);
 }
 
@@ -328,31 +328,33 @@ static int arm_spe_pkt_desc_op_type(const struct arm_spe_pkt *packet,
        int err = 0;
 
        switch (packet->index) {
-       case 0:
+       case SPE_OP_PKT_HDR_CLASS_OTHER:
                arm_spe_pkt_out_string(&err, &buf, &buf_len,
-                               payload & 0x1 ? "COND-SELECT" : "INSN-OTHER");
+                       payload & SPE_OP_PKT_COND ? "COND-SELECT" : "INSN-OTHER");
                break;
-       case 1:
+       case SPE_OP_PKT_HDR_CLASS_LD_ST_ATOMIC:
                arm_spe_pkt_out_string(&err, &buf, &buf_len,
                                       payload & 0x1 ? "ST" : "LD");
 
-               if (payload & 0x2) {
-                       if (payload & 0x4)
+               if (SPE_OP_PKT_IS_LDST_ATOMIC(payload)) {
+                       if (payload & SPE_OP_PKT_AT)
                                arm_spe_pkt_out_string(&err, &buf, &buf_len, " AT");
-                       if (payload & 0x8)
+                       if (payload & SPE_OP_PKT_EXCL)
                                arm_spe_pkt_out_string(&err, &buf, &buf_len, " EXCL");
-                       if (payload & 0x10)
+                       if (payload & SPE_OP_PKT_AR)
                                arm_spe_pkt_out_string(&err, &buf, &buf_len, " AR");
-               } else if (payload & 0x4) {
+               } else if (SPE_OP_PKT_LDST_SUBCLASS_GET(payload) ==
+                                       SPE_OP_PKT_LDST_SUBCLASS_SIMD_FP) {
                        arm_spe_pkt_out_string(&err, &buf, &buf_len, " SIMD-FP");
                }
                break;
-       case 2:
+       case SPE_OP_PKT_HDR_CLASS_BR_ERET:
                arm_spe_pkt_out_string(&err, &buf, &buf_len, "B");
 
-               if (payload & 0x1)
+               if (payload & SPE_OP_PKT_COND)
                        arm_spe_pkt_out_string(&err, &buf, &buf_len, " COND");
-               if (payload & 0x2)
+
+               if (SPE_OP_PKT_IS_INDIRECT_BRANCH(payload))
                        arm_spe_pkt_out_string(&err, &buf, &buf_len, " IND");
 
                break;