Ledger Nano X - The secure hardware wallet
SHARE
TWEET

Untitled

a guest Mar 26th, 2020 35 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #if defined(__clang__)
  2.         #pragma clang loop vectorize(assume_safety)
  3. #elif defined(__GNUC__)
  4.         #pragma unroll BUF_PER_LOOP
  5. #else
  6. #endif        
  7. for (i = 0; i < nb_objs; i++) {
  8.                 rte_prefetch0(pkts[i + 1]);
  9.  
  10.                 mbuf = pkts[i];
  11.                 priv.x = rte_node_mbuf_priv1(mbuf)->u;
  12.                 priv.u32[1] += rte_cpu_to_be_16(0x0100);
  13.                 d = rte_pktmbuf_mtod(mbuf, void *);
  14.                 ip = (struct rte_ipv4_hdr *)((uint8_t *)d +
  15.                                 sizeof(struct rte_ether_hdr));
  16.                 ip->time_to_live = priv.u16[1] - 1;
  17.                 ip->hdr_checksum = priv.u16[2] + priv.u16[3];
  18.                 rte_memcpy(d, nh[priv.u16[0]].rewrite_data,
  19.                            nh[priv.u16[0]].rewrite_len);
  20.                 next = nh[priv.u16[0]].tx_node;
  21.  
  22.                 if (next_index != next) {
  23.                         /* Copy things successfully speculated till now */
  24.                         rte_memcpy(to_next, from, last_spec * sizeof(from[0]));
  25.                         from += last_spec;
  26.                         to_next += last_spec;
  27.                         held += last_spec;
  28.                         last_spec = 0;
  29.  
  30.                         rte_node_enqueue_x1(graph, node, next, from[0]);
  31.                         from += 1;
  32.                 } else {
  33.                         last_spec += 1;
  34.                 }
  35.         }
  36.  
  37. 000000000065ee5c <ip4_rewrite_node_process>:
  38. {
  39.   65ee5c:   d102c3ff    sub sp, sp, #0xb0
  40.   65ee60:   a9056ffc    stp x28, x27, [sp, #80]
  41.   65ee64:   a90667fa    stp x26, x25, [sp, #96]
  42.   65ee68:   a9075ff8    stp x24, x23, [sp, #112]
  43.   65ee6c:   a90857f6    stp x22, x21, [sp, #128]
  44.   65ee70:   a9094ff4    stp x20, x19, [sp, #144]
  45.   65ee74:   a90a7bfd    stp x29, x30, [sp, #160]
  46.   65ee78:   910283fd    add x29, sp, #0xa0
  47.     next_index = *(uint16_t *)node->ctx;
  48.   65ee7c:   79420039    ldrh    w25, [x1, #256]
  49.     struct ip4_rewrite_nh_header *nh = ip4_rewrite_nm->nh;
  50.   65ee80:   f0001ba8    adrp    x8, 9d5000 <sdev+0x810>
  51.   65ee84:   f9455d1a    ldr x26, [x8, #2744]
  52.   65ee88:   f90023e1    str x1, [sp, #64]
  53.     node = node->nodes[next];
  54.   65ee8c:   8b190c29    add x9, x1, x25, lsl #3
  55.   65ee90:   f9800340    prfm    pldl1keep, [x26]
  56.   65ee94:   f940a136    ldr x22, [x9, #320]
  57.   65ee98:   2a0303f5    mov w21, w3
  58.   65ee9c:   aa0203f8    mov x24, x2
  59.   65eea0:   f90017e0    str x0, [sp, #40]
  60.     const uint16_t idx = node->idx;
  61.   65eea4:   794226d3    ldrh    w19, [x22, #274]
  62.     uint16_t free_space = node->size - idx;
  63.   65eea8:   794222c8    ldrh    w8, [x22, #272]
  64.   65eeac:   b9001fe3    str w3, [sp, #28]
  65.   65eeb0:   f9000be9    str x9, [sp, #16]
  66.   65eeb4:   4b130108    sub w8, w8, w19
  67.   65eeb8:   12003d08    and w8, w8, #0xffff
  68.     if (unlikely(free_space < nb_objs))
  69.   65eebc:   6b23211f    cmp w8, w3, uxth
  70.   65eec0:   54003143    b.cc    65f4e8 <ip4_rewrite_node_process+0x68c>  // b.lo, b.ul, b.last
  71.     return &node->objs[idx];
  72.   65eec4:   f9409ac8    ldr x8, [x22, #304]
  73.     for (i = 0; i < nb_objs; i++) {
  74.   65eec8:   72003ebf    tst w21, #0xffff
  75.   65eecc:   8b130d16    add x22, x8, x19, lsl #3
  76.   65eed0:   54000180    b.eq    65ef00 <ip4_rewrite_node_process+0xa4>  // b.none
  77.   65eed4:   12003ea8    and w8, w21, #0xffff
  78.   65eed8:   51000509    sub w9, w8, #0x1
  79.   65eedc:   71000d3f    cmp w9, #0x3
  80.   65eee0:   120006b4    and w20, w21, #0x3
  81.   65eee4:   a90367fa    stp x26, x25, [sp, #48]
  82.   65eee8:   f90007f8    str x24, [sp, #8]
  83.   65eeec:   54000102    b.cs    65ef0c <ip4_rewrite_node_process+0xb0>  // b.hs, b.nlast
  84.   65eef0:   2a1f03f3    mov w19, wzr
  85.   65eef4:   2a1f03fb    mov w27, wzr
  86.   65eef8:   f90027ff    str xzr, [sp, #72]
  87.   65eefc:   1400010b    b   65f328 <ip4_rewrite_node_process+0x4cc>
  88.   65ef00:   2a1f03fb    mov w27, wzr
  89.   65ef04:   2a1f03f3    mov w19, wzr
  90.   65ef08:   14000152    b   65f450 <ip4_rewrite_node_process+0x5f4>
  91.   65ef0c:   2a1f03f3    mov w19, wzr
  92.   65ef10:   2a1f03fb    mov w27, wzr
  93.   65ef14:   4b140108    sub w8, w8, w20
  94.   65ef18:   91004315    add x21, x24, #0x10
  95.   65ef1c:   f90027ff    str xzr, [sp, #72]
  96.   65ef20:   f90013e8    str x8, [sp, #32]
  97.   65ef24:   14000007    b   65ef40 <ip4_rewrite_node_process+0xe4>
  98.             last_spec += 1;
  99.   65ef28:   1100077b    add w27, w27, #0x1
  100.   65ef2c:   f94027e8    ldr x8, [sp, #72]
  101.   65ef30:   f94013e9    ldr x9, [sp, #32]
  102.     for (i = 0; i < nb_objs; i++) {
  103.   65ef34:   910082b5    add x21, x21, #0x20
  104.   65ef38:   6b08013f    cmp w9, w8
  105.   65ef3c:   54001f60    b.eq    65f328 <ip4_rewrite_node_process+0x4cc>  // b.none
  106.         rte_prefetch0(pkts[i + 1]);
  107.   65ef40:   f85f82a8    ldur    x8, [x21, #-8]
  108.   65ef44:   f9800100    prfm    pldl1keep, [x8]
  109.         mbuf = pkts[i];
  110.   65ef48:   f85f02a8    ldur    x8, [x21, #-16]
  111.         priv.x = rte_node_mbuf_priv1(mbuf)->u;
  112.   65ef4c:   f9402109    ldr x9, [x8, #64]
  113.         d = rte_pktmbuf_mtod(mbuf, void *);
  114.   65ef50:   f940010a    ldr x10, [x8]
  115.   65ef54:   79402108    ldrh    w8, [x8, #16]
  116.         priv.x = rte_node_mbuf_priv1(mbuf)->u;
  117.   65ef58:   d360fd2c    lsr x12, x9, #32
  118.   65ef5c:   d3507d2b    ubfx    x11, x9, #16, #16
  119.         d = rte_pktmbuf_mtod(mbuf, void *);
  120.   65ef60:   8b080140    add x0, x10, x8
  121.         rte_memcpy(d, nh[priv.u16[0]].rewrite_data,
  122.   65ef64:   92403d28    and x8, x9, #0xffff
  123.         priv.u32[1] += rte_cpu_to_be_16(0x0100);
  124.   65ef68:   11000589    add w9, w12, #0x1
  125.         ip->time_to_live = priv.u16[1] - 1;
  126.   65ef6c:   5100056a    sub w10, w11, #0x1
  127.         ip->hdr_checksum = priv.u16[2] + priv.u16[3];
  128.   65ef70:   0b494129    add w9, w9, w9, lsr #16
  129.         ip->time_to_live = priv.u16[1] - 1;
  130.   65ef74:   3900580a    strb    w10, [x0, #22]
  131.         ip->hdr_checksum = priv.u16[2] + priv.u16[3];
  132.   65ef78:   79003009    strh    w9, [x0, #24]
  133.         rte_memcpy(d, nh[priv.u16[0]].rewrite_data,
  134.   65ef7c:   8b081b57    add x23, x26, x8, lsl #6
  135.   65ef80:   794002e2    ldrh    w2, [x23]
  136.   65ef84:   910022e1    add x1, x23, #0x8
  137.   65ef88:   97e7975e    bl  44d00 <memcpy@plt>
  138.         next = nh[priv.u16[0]].tx_node;
  139.   65ef8c:   794006f7    ldrh    w23, [x23, #2]
  140.         if (next_index != next) {
  141.   65ef90:   6b17033f    cmp w25, w23
  142.   65ef94:   54000061    b.ne    65efa0 <ip4_rewrite_node_process+0x144>  // b.any
  143.             last_spec += 1;
  144.   65ef98:   1100077b    add w27, w27, #0x1
  145.   65ef9c:   14000023    b   65f028 <ip4_rewrite_node_process+0x1cc>
  146.             rte_memcpy(to_next, from, last_spec * sizeof(from[0]));
  147.   65efa0:   92403f68    and x8, x27, #0xffff
  148.   65efa4:   d37df11a    lsl x26, x8, #3
  149.   65efa8:   aa1603e0    mov x0, x22
  150.   65efac:   aa1803e1    mov x1, x24
  151.   65efb0:   aa1a03e2    mov x2, x26
  152.   65efb4:   97e79753    bl  44d00 <memcpy@plt>
  153.   65efb8:   f94023e8    ldr x8, [sp, #64]
  154.             from += last_spec;
  155.   65efbc:   8b1a0318    add x24, x24, x26
  156.             rte_node_enqueue_x1(graph, node, next, from[0]);
  157.   65efc0:   f940031c    ldr x28, [x24]
  158.     node = node->nodes[next];
  159.   65efc4:   8b170d08    add x8, x8, x23, lsl #3
  160.   65efc8:   f940a119    ldr x25, [x8, #320]
  161.     uint16_t idx = node->idx;
  162.   65efcc:   79422737    ldrh    w23, [x25, #274]
  163.     if (idx == 0)
  164.   65efd0:   b5000157    cbnz    x23, 65eff8 <ip4_rewrite_node_process+0x19c>
  165.   65efd4:   f94017eb    ldr x11, [sp, #40]
  166.         __rte_node_enqueue_tail_update(graph, node);
  167.   65efd8:   b9411728    ldr w8, [x25, #276]
  168.     tail = graph->tail;
  169.   65efdc:   b9400169    ldr w9, [x11]
  170.     graph->cir_start[tail++] = node->off;
  171.   65efe0:   f940096a    ldr x10, [x11, #16]
  172.   65efe4:   b8297948    str w8, [x10, x9, lsl #2]
  173.     graph->tail = tail & graph->cir_mask;
  174.   65efe8:   b9400968    ldr w8, [x11, #8]
  175.     graph->cir_start[tail++] = node->off;
  176.   65efec:   11000529    add w9, w9, #0x1
  177.     graph->tail = tail & graph->cir_mask;
  178.   65eff0:   0a090108    and w8, w8, w9
  179.   65eff4:   b9000168    str w8, [x11]
  180.     if (unlikely(node->size < (idx + space)))
  181.   65eff8:   79422328    ldrh    w8, [x25, #272]
  182.   65effc:   8b1a02d6    add x22, x22, x26
  183.   65f000:   0b1b0273    add w19, w19, w27
  184.   65f004:   6b0802ff    cmp w23, w8
  185.   65f008:   54001702    b.cs    65f2e8 <ip4_rewrite_node_process+0x48c>  // b.hs, b.nlast
  186.     node->objs[idx++] = obj;
  187.   65f00c:   f9409b28    ldr x8, [x25, #304]
  188.   65f010:   110006e9    add w9, w23, #0x1
  189.   65f014:   2a1f03fb    mov w27, wzr
  190.             from += 1;
  191.   65f018:   91002318    add x24, x24, #0x8
  192.   65f01c:   f837791c    str x28, [x8, x23, lsl #3]
  193.     node->idx = idx;
  194.   65f020:   79022729    strh    w9, [x25, #274]
  195.   65f024:   a94367fa    ldp x26, x25, [sp, #48]
  196.         rte_prefetch0(pkts[i + 1]);
  197.   65f028:   f94002a8    ldr x8, [x21]
  198.   65f02c:   f9800100    prfm    pldl1keep, [x8]
  199.         mbuf = pkts[i];
  200.   65f030:   f85f82a8    ldur    x8, [x21, #-8]
  201.         priv.x = rte_node_mbuf_priv1(mbuf)->u;
  202.   65f034:   f9402109    ldr x9, [x8, #64]
  203.         d = rte_pktmbuf_mtod(mbuf, void *);
  204.   65f038:   f940010a    ldr x10, [x8]
  205.   65f03c:   79402108    ldrh    w8, [x8, #16]
  206.         priv.x = rte_node_mbuf_priv1(mbuf)->u;
  207.   65f040:   d360fd2c    lsr x12, x9, #32
  208.   65f044:   d3507d2b    ubfx    x11, x9, #16, #16
  209.         d = rte_pktmbuf_mtod(mbuf, void *);
  210.   65f048:   8b080140    add x0, x10, x8
  211.         rte_memcpy(d, nh[priv.u16[0]].rewrite_data,
  212.   65f04c:   92403d28    and x8, x9, #0xffff
  213.         priv.u32[1] += rte_cpu_to_be_16(0x0100);
  214.   65f050:   11000589    add w9, w12, #0x1
  215.         ip->time_to_live = priv.u16[1] - 1;
  216.   65f054:   5100056a    sub w10, w11, #0x1
  217.         ip->hdr_checksum = priv.u16[2] + priv.u16[3];
  218.   65f058:   0b494129    add w9, w9, w9, lsr #16
  219.         ip->time_to_live = priv.u16[1] - 1;
  220.   65f05c:   3900580a    strb    w10, [x0, #22]
  221.         ip->hdr_checksum = priv.u16[2] + priv.u16[3];
  222.   65f060:   79003009    strh    w9, [x0, #24]
  223.         rte_memcpy(d, nh[priv.u16[0]].rewrite_data,
  224.   65f064:   8b081b57    add x23, x26, x8, lsl #6
  225.   65f068:   794002e2    ldrh    w2, [x23]
  226.   65f06c:   910022e1    add x1, x23, #0x8
  227.   65f070:   97e79724    bl  44d00 <memcpy@plt>
  228.         next = nh[priv.u16[0]].tx_node;
  229.   65f074:   794006f7    ldrh    w23, [x23, #2]
  230.         if (next_index != next) {
  231.   65f078:   6b17033f    cmp w25, w23
  232.   65f07c:   54000061    b.ne    65f088 <ip4_rewrite_node_process+0x22c>  // b.any
  233.             last_spec += 1;
  234.   65f080:   1100077b    add w27, w27, #0x1
  235.   65f084:   14000023    b   65f110 <ip4_rewrite_node_process+0x2b4>
  236.             rte_memcpy(to_next, from, last_spec * sizeof(from[0]));
  237.   65f088:   92403f68    and x8, x27, #0xffff
  238.   65f08c:   d37df11a    lsl x26, x8, #3
  239.   65f090:   aa1603e0    mov x0, x22
  240.   65f094:   aa1803e1    mov x1, x24
  241.   65f098:   aa1a03e2    mov x2, x26
  242.   65f09c:   97e79719    bl  44d00 <memcpy@plt>
  243.   65f0a0:   f94023e8    ldr x8, [sp, #64]
  244.             from += last_spec;
  245.   65f0a4:   8b1a0318    add x24, x24, x26
  246.             rte_node_enqueue_x1(graph, node, next, from[0]);
  247.   65f0a8:   f940031c    ldr x28, [x24]
  248.     node = node->nodes[next];
  249.   65f0ac:   8b170d08    add x8, x8, x23, lsl #3
  250.   65f0b0:   f940a119    ldr x25, [x8, #320]
  251.     uint16_t idx = node->idx;
  252.   65f0b4:   79422737    ldrh    w23, [x25, #274]
  253.   65f0b8:   b5000157    cbnz    x23, 65f0e0 <ip4_rewrite_node_process+0x284>
  254.   65f0bc:   f94017eb    ldr x11, [sp, #40]
  255.         __rte_node_enqueue_tail_update(graph, node);
  256.   65f0c0:   b9411728    ldr w8, [x25, #276]
  257.     tail = graph->tail;
  258.   65f0c4:   b9400169    ldr w9, [x11]
  259.     graph->cir_start[tail++] = node->off;
  260.   65f0c8:   f940096a    ldr x10, [x11, #16]
  261.   65f0cc:   b8297948    str w8, [x10, x9, lsl #2]
  262.     graph->tail = tail & graph->cir_mask;
  263.   65f0d0:   b9400968    ldr w8, [x11, #8]
  264.     graph->cir_start[tail++] = node->off;
  265.   65f0d4:   11000529    add w9, w9, #0x1
  266.     graph->tail = tail & graph->cir_mask;
  267.   65f0d8:   0a090108    and w8, w8, w9
  268.   65f0dc:   b9000168    str w8, [x11]
  269.     if (unlikely(node->size < (idx + space)))
  270.   65f0e0:   79422328    ldrh    w8, [x25, #272]
  271.   65f0e4:   8b1a02d6    add x22, x22, x26
  272.   65f0e8:   0b1b0273    add w19, w19, w27
  273.   65f0ec:   6b0802ff    cmp w23, w8
  274.   65f0f0:   54001042    b.cs    65f2f8 <ip4_rewrite_node_process+0x49c>  // b.hs, b.nlast
  275.     node->objs[idx++] = obj;
  276.   65f0f4:   f9409b28    ldr x8, [x25, #304]
  277.   65f0f8:   110006e9    add w9, w23, #0x1
  278.   65f0fc:   2a1f03fb    mov w27, wzr
  279.             from += 1;
  280.   65f100:   91002318    add x24, x24, #0x8
  281.   65f104:   f837791c    str x28, [x8, x23, lsl #3]
  282.     node->idx = idx;
  283.   65f108:   79022729    strh    w9, [x25, #274]
  284.   65f10c:   a94367fa    ldp x26, x25, [sp, #48]
  285.         rte_prefetch0(pkts[i + 1]);
  286.   65f110:   f94006a8    ldr x8, [x21, #8]
  287.   65f114:   f9800100    prfm    pldl1keep, [x8]
  288.         mbuf = pkts[i];
  289.   65f118:   f94002a8    ldr x8, [x21]
  290.         priv.x = rte_node_mbuf_priv1(mbuf)->u;
  291.   65f11c:   f9402109    ldr x9, [x8, #64]
  292.         d = rte_pktmbuf_mtod(mbuf, void *);
  293.   65f120:   f940010a    ldr x10, [x8]
  294.   65f124:   79402108    ldrh    w8, [x8, #16]
  295.         priv.x = rte_node_mbuf_priv1(mbuf)->u;
  296.   65f128:   d360fd2c    lsr x12, x9, #32
  297.   65f12c:   d3507d2b    ubfx    x11, x9, #16, #16
  298.         d = rte_pktmbuf_mtod(mbuf, void *);
  299.   65f130:   8b080140    add x0, x10, x8
  300.         rte_memcpy(d, nh[priv.u16[0]].rewrite_data,
  301.   65f134:   92403d28    and x8, x9, #0xffff
  302.         priv.u32[1] += rte_cpu_to_be_16(0x0100);
  303.   65f138:   11000589    add w9, w12, #0x1
  304.         ip->time_to_live = priv.u16[1] - 1;
  305.   65f13c:   5100056a    sub w10, w11, #0x1
  306.         ip->hdr_checksum = priv.u16[2] + priv.u16[3];
  307.   65f140:   0b494129    add w9, w9, w9, lsr #16
  308.         ip->time_to_live = priv.u16[1] - 1;
  309.   65f144:   3900580a    strb    w10, [x0, #22]
  310.         ip->hdr_checksum = priv.u16[2] + priv.u16[3];
  311.   65f148:   79003009    strh    w9, [x0, #24]
  312.         rte_memcpy(d, nh[priv.u16[0]].rewrite_data,
  313.   65f14c:   8b081b57    add x23, x26, x8, lsl #6
  314.   65f150:   794002e2    ldrh    w2, [x23]
  315.   65f154:   910022e1    add x1, x23, #0x8
  316.   65f158:   97e796ea    bl  44d00 <memcpy@plt>
  317.         next = nh[priv.u16[0]].tx_node;
  318.   65f15c:   794006f7    ldrh    w23, [x23, #2]
  319.         if (next_index != next) {
  320.   65f160:   6b17033f    cmp w25, w23
  321.   65f164:   54000061    b.ne    65f170 <ip4_rewrite_node_process+0x314>  // b.any
  322.             last_spec += 1;
  323.   65f168:   1100077b    add w27, w27, #0x1
  324.   65f16c:   14000023    b   65f1f8 <ip4_rewrite_node_process+0x39c>
  325.             rte_memcpy(to_next, from, last_spec * sizeof(from[0]));
  326.   65f170:   92403f68    and x8, x27, #0xffff
  327.   65f174:   d37df11a    lsl x26, x8, #3
  328.   65f178:   aa1603e0    mov x0, x22
  329.   65f17c:   aa1803e1    mov x1, x24
  330.   65f180:   aa1a03e2    mov x2, x26
  331.   65f184:   97e796df    bl  44d00 <memcpy@plt>
  332.   65f188:   f94023e8    ldr x8, [sp, #64]
  333.             from += last_spec;
  334.   65f18c:   8b1a0318    add x24, x24, x26
  335.             rte_node_enqueue_x1(graph, node, next, from[0]);
  336.   65f190:   f940031c    ldr x28, [x24]
  337.     node = node->nodes[next];
  338.   65f194:   8b170d08    add x8, x8, x23, lsl #3
  339.   65f198:   f940a119    ldr x25, [x8, #320]
  340.     uint16_t idx = node->idx;
  341.   65f19c:   79422737    ldrh    w23, [x25, #274]
  342.     if (idx == 0)
  343.   65f1a0:   b5000157    cbnz    x23, 65f1c8 <ip4_rewrite_node_process+0x36c>
  344.   65f1a4:   f94017eb    ldr x11, [sp, #40]
  345.         __rte_node_enqueue_tail_update(graph, node);
  346.   65f1a8:   b9411728    ldr w8, [x25, #276]
  347.     tail = graph->tail;
  348.   65f1ac:   b9400169    ldr w9, [x11]
  349.     graph->cir_start[tail++] = node->off;
  350.   65f1b0:   f940096a    ldr x10, [x11, #16]
  351.   65f1b4:   b8297948    str w8, [x10, x9, lsl #2]
  352.     graph->tail = tail & graph->cir_mask;
  353.   65f1b8:   b9400968    ldr w8, [x11, #8]
  354.     graph->cir_start[tail++] = node->off;
  355.   65f1bc:   11000529    add w9, w9, #0x1
  356.     graph->tail = tail & graph->cir_mask;
  357.   65f1c0:   0a090108    and w8, w8, w9
  358.   65f1c4:   b9000168    str w8, [x11]
  359.     if (unlikely(node->size < (idx + space)))
  360.   65f1c8:   79422328    ldrh    w8, [x25, #272]
  361.   65f1cc:   8b1a02d6    add x22, x22, x26
  362.   65f1d0:   0b1b0273    add w19, w19, w27
  363.   65f1d4:   6b0802ff    cmp w23, w8
  364.   65f1d8:   54000982    b.cs    65f308 <ip4_rewrite_node_process+0x4ac>  // b.hs, b.nlast
  365.     node->objs[idx++] = obj;
  366.   65f1dc:   f9409b28    ldr x8, [x25, #304]
  367.   65f1e0:   110006e9    add w9, w23, #0x1
  368.   65f1e4:   2a1f03fb    mov w27, wzr
  369.             from += 1;
  370.   65f1e8:   91002318    add x24, x24, #0x8
  371.   65f1ec:   f837791c    str x28, [x8, x23, lsl #3]
  372.     node->idx = idx;
  373.   65f1f0:   79022729    strh    w9, [x25, #274]
  374.   65f1f4:   a94367fa    ldp x26, x25, [sp, #48]
  375.         rte_prefetch0(pkts[i + 1]);
  376.   65f1f8:   f9400aa8    ldr x8, [x21, #16]
  377.   65f1fc:   f9800100    prfm    pldl1keep, [x8]
  378.         mbuf = pkts[i];
  379.   65f200:   f94006a8    ldr x8, [x21, #8]
  380.         priv.x = rte_node_mbuf_priv1(mbuf)->u;
  381.   65f204:   f9402109    ldr x9, [x8, #64]
  382.         d = rte_pktmbuf_mtod(mbuf, void *);
  383.   65f208:   f940010a    ldr x10, [x8]
  384.   65f20c:   79402108    ldrh    w8, [x8, #16]
  385.         priv.x = rte_node_mbuf_priv1(mbuf)->u;
  386.   65f210:   d360fd2c    lsr x12, x9, #32
  387.   65f214:   d3507d2b    ubfx    x11, x9, #16, #16
  388.         d = rte_pktmbuf_mtod(mbuf, void *);
  389.   65f218:   8b080140    add x0, x10, x8
  390.         rte_memcpy(d, nh[priv.u16[0]].rewrite_data,
  391.   65f21c:   92403d28    and x8, x9, #0xffff
  392.         priv.u32[1] += rte_cpu_to_be_16(0x0100);
  393.   65f220:   11000589    add w9, w12, #0x1
  394.         ip->time_to_live = priv.u16[1] - 1;
  395.   65f224:   5100056a    sub w10, w11, #0x1
  396.         ip->hdr_checksum = priv.u16[2] + priv.u16[3];
  397.   65f228:   0b494129    add w9, w9, w9, lsr #16
  398.         ip->time_to_live = priv.u16[1] - 1;
  399.   65f22c:   3900580a    strb    w10, [x0, #22]
  400.         ip->hdr_checksum = priv.u16[2] + priv.u16[3];
  401.   65f230:   79003009    strh    w9, [x0, #24]
  402.         rte_memcpy(d, nh[priv.u16[0]].rewrite_data,
  403.   65f234:   8b081b57    add x23, x26, x8, lsl #6
  404.   65f238:   f94027e8    ldr x8, [sp, #72]
  405.   65f23c:   794002e2    ldrh    w2, [x23]
  406.   65f240:   910022e1    add x1, x23, #0x8
  407.         rte_prefetch0(pkts[i + 1]);
  408.   65f244:   91001108    add x8, x8, #0x4
  409.   65f248:   f90027e8    str x8, [sp, #72]
  410.         rte_memcpy(d, nh[priv.u16[0]].rewrite_data,
  411.   65f24c:   97e796ad    bl  44d00 <memcpy@plt>
  412.         next = nh[priv.u16[0]].tx_node;
  413.   65f250:   794006f7    ldrh    w23, [x23, #2]
  414.         if (next_index != next) {
  415.   65f254:   6b17033f    cmp w25, w23
  416.   65f258:   54ffe680    b.eq    65ef28 <ip4_rewrite_node_process+0xcc>  // b.none
  417.             rte_memcpy(to_next, from, last_spec * sizeof(from[0]));
  418.   65f25c:   92403f68    and x8, x27, #0xffff
  419.   65f260:   d37df11a    lsl x26, x8, #3
  420.   65f264:   aa1603e0    mov x0, x22
  421.   65f268:   aa1803e1    mov x1, x24
  422.   65f26c:   aa1a03e2    mov x2, x26
  423.   65f270:   97e796a4    bl  44d00 <memcpy@plt>
  424.   65f274:   f94023e8    ldr x8, [sp, #64]
  425.             from += last_spec;
  426.   65f278:   8b1a0318    add x24, x24, x26
  427.             rte_node_enqueue_x1(graph, node, next, from[0]);
  428.   65f27c:   f940031c    ldr x28, [x24]
  429.     node = node->nodes[next];
  430.   65f280:   8b170d08    add x8, x8, x23, lsl #3
  431.   65f284:   f940a119    ldr x25, [x8, #320]
  432.     uint16_t idx = node->idx;
  433.   65f288:   79422737    ldrh    w23, [x25, #274]
  434.     if (idx == 0)
  435.   65f28c:   b5000157    cbnz    x23, 65f2b4 <ip4_rewrite_node_process+0x458>
  436.   65f290:   f94017eb    ldr x11, [sp, #40]
  437.         __rte_node_enqueue_tail_update(graph, node);
  438.   65f294:   b9411728    ldr w8, [x25, #276]
  439.     tail = graph->tail;
  440.   65f298:   b9400169    ldr w9, [x11]
  441.     graph->cir_start[tail++] = node->off;
  442.   65f29c:   f940096a    ldr x10, [x11, #16]
  443.   65f2a0:   b8297948    str w8, [x10, x9, lsl #2]
  444.     graph->tail = tail & graph->cir_mask;
  445.   65f2a4:   b9400968    ldr w8, [x11, #8]
  446.     graph->cir_start[tail++] = node->off;
  447.   65f2a8:   11000529    add w9, w9, #0x1
  448.     graph->tail = tail & graph->cir_mask;
  449.   65f2ac:   0a090108    and w8, w8, w9
  450.   65f2b0:   b9000168    str w8, [x11]
  451.     if (unlikely(node->size < (idx + space)))
  452.   65f2b4:   79422328    ldrh    w8, [x25, #272]
  453.   65f2b8:   8b1a02d6    add x22, x22, x26
  454.   65f2bc:   0b1b0273    add w19, w19, w27
  455.   65f2c0:   6b0802ff    cmp w23, w8
  456.   65f2c4:   540002a2    b.cs    65f318 <ip4_rewrite_node_process+0x4bc>  // b.hs, b.nlast
  457.     node->objs[idx++] = obj;
  458.   65f2c8:   f9409b28    ldr x8, [x25, #304]
  459.   65f2cc:   110006e9    add w9, w23, #0x1
  460.   65f2d0:   2a1f03fb    mov w27, wzr
  461.             from += 1;
  462.   65f2d4:   91002318    add x24, x24, #0x8
  463.   65f2d8:   f837791c    str x28, [x8, x23, lsl #3]
  464.     node->idx = idx;
  465.   65f2dc:   79022729    strh    w9, [x25, #274]
  466.   65f2e0:   a94367fa    ldp x26, x25, [sp, #48]
  467.   65f2e4:   17ffff12    b   65ef2c <ip4_rewrite_node_process+0xd0>
  468.   65f2e8:   f94017e0    ldr x0, [sp, #40]
  469.         __rte_node_stream_alloc(graph, node);
  470.   65f2ec:   aa1903e1    mov x1, x25
  471.   65f2f0:   9401294a    bl  6a9818 <__rte_node_stream_alloc>
  472.   65f2f4:   17ffff46    b   65f00c <ip4_rewrite_node_process+0x1b0>
  473.   65f2f8:   f94017e0    ldr x0, [sp, #40]
  474.   65f2fc:   aa1903e1    mov x1, x25
  475.   65f300:   94012946    bl  6a9818 <__rte_node_stream_alloc>
  476.   65f304:   17ffff7c    b   65f0f4 <ip4_rewrite_node_process+0x298>
  477.   65f308:   f94017e0    ldr x0, [sp, #40]
  478.   65f30c:   aa1903e1    mov x1, x25
  479.   65f310:   94012942    bl  6a9818 <__rte_node_stream_alloc>
  480.   65f314:   17ffffb2    b   65f1dc <ip4_rewrite_node_process+0x380>
  481.   65f318:   f94017e0    ldr x0, [sp, #40]
  482.   65f31c:   aa1903e1    mov x1, x25
  483.   65f320:   9401293e    bl  6a9818 <__rte_node_stream_alloc>
  484.   65f324:   17ffffe9    b   65f2c8 <ip4_rewrite_node_process+0x46c>
  485.   65f328:   34000954    cbz w20, 65f450 <ip4_rewrite_node_process+0x5f4>
  486.   65f32c:   f94007e8    ldr x8, [sp, #8]
  487.   65f330:   f94027e9    ldr x9, [sp, #72]
  488.         if (next_index != next) {
  489.   65f334:   8b090d08    add x8, x8, x9, lsl #3
  490.   65f338:   91002115    add x21, x8, #0x8
  491.   65f33c:   14000005    b   65f350 <ip4_rewrite_node_process+0x4f4>
  492.             last_spec += 1;
  493.   65f340:   1100077b    add w27, w27, #0x1
  494.     for (i = 0; i < nb_objs; i++) {
  495.   65f344:   71000694    subs    w20, w20, #0x1
  496.   65f348:   910022b5    add x21, x21, #0x8
  497.   65f34c:   54000820    b.eq    65f450 <ip4_rewrite_node_process+0x5f4>  // b.none
  498.         rte_prefetch0(pkts[i + 1]);
  499.   65f350:   f94002a8    ldr x8, [x21]
  500.   65f354:   f9800100    prfm    pldl1keep, [x8]
  501.         mbuf = pkts[i];
  502.   65f358:   f85f82a8    ldur    x8, [x21, #-8]
  503.         priv.x = rte_node_mbuf_priv1(mbuf)->u;
  504.   65f35c:   f9402109    ldr x9, [x8, #64]
  505.         d = rte_pktmbuf_mtod(mbuf, void *);
  506.   65f360:   f940010a    ldr x10, [x8]
  507.   65f364:   79402108    ldrh    w8, [x8, #16]
  508.         priv.x = rte_node_mbuf_priv1(mbuf)->u;
  509.   65f368:   d360fd2c    lsr x12, x9, #32
  510.   65f36c:   d3507d2b    ubfx    x11, x9, #16, #16
  511.         d = rte_pktmbuf_mtod(mbuf, void *);
  512.   65f370:   8b080140    add x0, x10, x8
  513.         rte_memcpy(d, nh[priv.u16[0]].rewrite_data,
  514.   65f374:   92403d28    and x8, x9, #0xffff
  515.         priv.u32[1] += rte_cpu_to_be_16(0x0100);
  516.   65f378:   11000589    add w9, w12, #0x1
  517.         ip->time_to_live = priv.u16[1] - 1;
  518.   65f37c:   5100056a    sub w10, w11, #0x1
  519.         ip->hdr_checksum = priv.u16[2] + priv.u16[3];
  520.   65f380:   0b494129    add w9, w9, w9, lsr #16
  521.         ip->time_to_live = priv.u16[1] - 1;
  522.   65f384:   3900580a    strb    w10, [x0, #22]
  523.         ip->hdr_checksum = priv.u16[2] + priv.u16[3];
  524.   65f388:   79003009    strh    w9, [x0, #24]
  525.         rte_memcpy(d, nh[priv.u16[0]].rewrite_data,
  526.   65f38c:   8b081b57    add x23, x26, x8, lsl #6
  527.   65f390:   794002e2    ldrh    w2, [x23]
  528.   65f394:   910022e1    add x1, x23, #0x8
  529.   65f398:   97e7965a    bl  44d00 <memcpy@plt>
  530.         next = nh[priv.u16[0]].tx_node;
  531.   65f39c:   794006f7    ldrh    w23, [x23, #2]
  532.         if (next_index != next) {
  533.   65f3a0:   6b17033f    cmp w25, w23
  534.   65f3a4:   54fffce0    b.eq    65f340 <ip4_rewrite_node_process+0x4e4>  // b.none
  535.             rte_memcpy(to_next, from, last_spec * sizeof(from[0]));
  536.   65f3a8:   92403f68    and x8, x27, #0xffff
  537.   65f3ac:   d37df119    lsl x25, x8, #3
  538.   65f3b0:   aa1603e0    mov x0, x22
  539.   65f3b4:   aa1803e1    mov x1, x24
  540.   65f3b8:   aa1903e2    mov x2, x25
  541.   65f3bc:   97e79651    bl  44d00 <memcpy@plt>
  542.   65f3c0:   f94023e8    ldr x8, [sp, #64]
  543.             from += last_spec;
  544.   65f3c4:   8b190318    add x24, x24, x25
  545.             rte_node_enqueue_x1(graph, node, next, from[0]);
  546.   65f3c8:   f940031c    ldr x28, [x24]
  547.     node = node->nodes[next];
  548.   65f3cc:   8b170d08    add x8, x8, x23, lsl #3
  549.   65f3d0:   f940a117    ldr x23, [x8, #320]
  550.     uint16_t idx = node->idx;
  551.   65f3d4:   794226fa    ldrh    w26, [x23, #274]
  552.   65f3d8:   b500015a    cbnz    x26, 65f400 <ip4_rewrite_node_process+0x5a4>
  553.   65f3dc:   f94017eb    ldr x11, [sp, #40]
  554.         __rte_node_enqueue_tail_update(graph, node);
  555.   65f3e0:   b94116e8    ldr w8, [x23, #276]
  556.     tail = graph->tail;
  557.   65f3e4:   b9400169    ldr w9, [x11]
  558.     graph->cir_start[tail++] = node->off;
  559.   65f3e8:   f940096a    ldr x10, [x11, #16]
  560.   65f3ec:   b8297948    str w8, [x10, x9, lsl #2]
  561.     graph->tail = tail & graph->cir_mask;
  562.   65f3f0:   b9400968    ldr w8, [x11, #8]
  563.     graph->cir_start[tail++] = node->off;
  564.   65f3f4:   11000529    add w9, w9, #0x1
  565.     graph->tail = tail & graph->cir_mask;
  566.   65f3f8:   0a090108    and w8, w8, w9
  567.   65f3fc:   b9000168    str w8, [x11]
  568.     if (unlikely(node->size < (idx + space)))
  569.   65f400:   794222e8    ldrh    w8, [x23, #272]
  570.   65f404:   8b1902d6    add x22, x22, x25
  571.   65f408:   0b1b0273    add w19, w19, w27
  572.   65f40c:   6b08035f    cmp w26, w8
  573.   65f410:   54000182    b.cs    65f440 <ip4_rewrite_node_process+0x5e4>  // b.hs, b.nlast
  574.     node->objs[idx++] = obj;
  575.   65f414:   f9409ae8    ldr x8, [x23, #304]
  576.   65f418:   11000749    add w9, w26, #0x1
  577.   65f41c:   2a1f03fb    mov w27, wzr
  578.             from += 1;
  579.   65f420:   91002318    add x24, x24, #0x8
  580.   65f424:   f83a791c    str x28, [x8, x26, lsl #3]
  581.     node->idx = idx;
  582.   65f428:   790226e9    strh    w9, [x23, #274]
  583.   65f42c:   a94367fa    ldp x26, x25, [sp, #48]
  584.     for (i = 0; i < nb_objs; i++) {
  585.   65f430:   71000694    subs    w20, w20, #0x1
  586.   65f434:   910022b5    add x21, x21, #0x8
  587.   65f438:   54fff8c1    b.ne    65f350 <ip4_rewrite_node_process+0x4f4>  // b.any
  588.   65f43c:   14000005    b   65f450 <ip4_rewrite_node_process+0x5f4>
  589.   65f440:   f94017e0    ldr x0, [sp, #40]
  590.         __rte_node_stream_alloc(graph, node);
  591.   65f444:   aa1703e1    mov x1, x23
  592.   65f448:   940128f4    bl  6a9818 <__rte_node_stream_alloc>
  593.   65f44c:   17fffff2    b   65f414 <ip4_rewrite_node_process+0x5b8>
  594.   65f450:   b9401ff7    ldr w23, [sp, #28]
  595.     if (likely(last_spec == nb_objs)) {
  596.   65f454:   12003f68    and w8, w27, #0xffff
  597.   65f458:   6b37211f    cmp w8, w23, uxth
  598.   65f45c:   f9400be8    ldr x8, [sp, #16]
  599.   65f460:   91050114    add x20, x8, #0x140
  600.   65f464:   54000501    b.ne    65f504 <ip4_rewrite_node_process+0x6a8>  // b.any
  601.     node = node->nodes[next];
  602.   65f468:   f9400296    ldr x22, [x20]
  603.     if (likely(dst->idx == 0)) {
  604.   65f46c:   794226d3    ldrh    w19, [x22, #274]
  605.   65f470:   350007d3    cbnz    w19, 65f568 <ip4_rewrite_node_process+0x70c>
  606.   65f474:   f94023eb    ldr x11, [sp, #64]
  607.         void **dobjs = dst->objs;
  608.   65f478:   f9409ac9    ldr x9, [x22, #304]
  609.         uint16_t dsz = dst->size;
  610.   65f47c:   794222ca    ldrh    w10, [x22, #272]
  611.         dst->objs = src->objs;
  612.   65f480:   f9409968    ldr x8, [x11, #304]
  613.   65f484:   f9009ac8    str x8, [x22, #304]
  614.         dst->size = src->size;
  615.   65f488:   79422168    ldrh    w8, [x11, #272]
  616.   65f48c:   790222c8    strh    w8, [x22, #272]
  617.         dst->idx = src->idx;
  618.   65f490:   79422568    ldrh    w8, [x11, #274]
  619.         src->objs = dobjs;
  620.   65f494:   f9009969    str x9, [x11, #304]
  621.         src->size = dsz;
  622.   65f498:   7902216a    strh    w10, [x11, #272]
  623.   65f49c:   f94017eb    ldr x11, [sp, #40]
  624.         dst->idx = src->idx;
  625.   65f4a0:   790226c8    strh    w8, [x22, #274]
  626.         __rte_node_enqueue_tail_update(graph, dst);
  627.   65f4a4:   b94116c9    ldr w9, [x22, #276]
  628.     tail = graph->tail;
  629.   65f4a8:   b9400168    ldr w8, [x11]
  630.     graph->cir_start[tail++] = node->off;
  631.   65f4ac:   f940096a    ldr x10, [x11, #16]
  632.   65f4b0:   b8287949    str w9, [x10, x8, lsl #2]
  633.     graph->tail = tail & graph->cir_mask;
  634.   65f4b4:   b9400969    ldr w9, [x11, #8]
  635.     graph->cir_start[tail++] = node->off;
  636.   65f4b8:   11000508    add w8, w8, #0x1
  637.     graph->tail = tail & graph->cir_mask;
  638.   65f4bc:   0a080128    and w8, w9, w8
  639.   65f4c0:   b9000168    str w8, [x11]
  640. }
  641.   65f4c4:   2a1703e0    mov w0, w23
  642.   65f4c8:   a94a7bfd    ldp x29, x30, [sp, #160]
  643.   65f4cc:   a9494ff4    ldp x20, x19, [sp, #144]
  644.   65f4d0:   a94857f6    ldp x22, x21, [sp, #128]
  645.   65f4d4:   a9475ff8    ldp x24, x23, [sp, #112]
  646.   65f4d8:   a94667fa    ldp x26, x25, [sp, #96]
  647.   65f4dc:   a9456ffc    ldp x28, x27, [sp, #80]
  648.   65f4e0:   9102c3ff    add sp, sp, #0xb0
  649.   65f4e4:   d65f03c0    ret
  650.   65f4e8:   f94017e0    ldr x0, [sp, #40]
  651.         __rte_node_stream_alloc_size(graph, node, nb_objs);
  652.   65f4ec:   aa1603e1    mov x1, x22
  653.   65f4f0:   2a1503e2    mov w2, w21
  654.   65f4f4:   940128fa    bl  6a98dc <__rte_node_stream_alloc_size>
  655.     return &node->objs[idx];
  656.   65f4f8:   f9409ac8    ldr x8, [x22, #304]
  657.   65f4fc:   8b130d16    add x22, x8, x19, lsl #3
  658.   65f500:   17fffe75    b   65eed4 <ip4_rewrite_node_process+0x78>
  659.     rte_memcpy(to_next, from, last_spec * sizeof(from[0]));
  660.   65f504:   92403f68    and x8, x27, #0xffff
  661.     held += last_spec;
  662.   65f508:   0b1b0273    add w19, w19, w27
  663.     rte_memcpy(to_next, from, last_spec * sizeof(from[0]));
  664.   65f50c:   d37df102    lsl x2, x8, #3
  665.   65f510:   aa1603e0    mov x0, x22
  666.   65f514:   aa1803e1    mov x1, x24
  667.     held += last_spec;
  668.   65f518:   12003e75    and w21, w19, #0xffff
  669.     rte_memcpy(to_next, from, last_spec * sizeof(from[0]));
  670.   65f51c:   97e795f9    bl  44d00 <memcpy@plt>
  671.     if (unlikely(!idx))
  672.   65f520:   340001f5    cbz w21, 65f55c <ip4_rewrite_node_process+0x700>
  673.     node = node->nodes[next];
  674.   65f524:   f9400288    ldr x8, [x20]
  675.     if (node->idx == 0)
  676.   65f528:   79422509    ldrh    w9, [x8, #274]
  677.   65f52c:   35000149    cbnz    w9, 65f554 <ip4_rewrite_node_process+0x6f8>
  678.   65f530:   f94017ed    ldr x13, [sp, #40]
  679.         __rte_node_enqueue_tail_update(graph, node);
  680.   65f534:   b941150a    ldr w10, [x8, #276]
  681.     tail = graph->tail;
  682.   65f538:   b94001ab    ldr w11, [x13]
  683.     graph->cir_start[tail++] = node->off;
  684.   65f53c:   f94009ac    ldr x12, [x13, #16]
  685.   65f540:   b82b798a    str w10, [x12, x11, lsl #2]
  686.     graph->tail = tail & graph->cir_mask;
  687.   65f544:   b94009aa    ldr w10, [x13, #8]
  688.     graph->cir_start[tail++] = node->off;
  689.   65f548:   1100056b    add w11, w11, #0x1
  690.     graph->tail = tail & graph->cir_mask;
  691.   65f54c:   0a0b014a    and w10, w10, w11
  692.   65f550:   b90001aa    str w10, [x13]
  693.     node->idx += idx;
  694.   65f554:   0b130129    add w9, w9, w19
  695.   65f558:   79022509    strh    w9, [x8, #274]
  696.   65f55c:   f94023e8    ldr x8, [sp, #64]
  697.     *(uint16_t *)node->ctx = next_index;
  698.   65f560:   79020119    strh    w25, [x8, #256]
  699.   65f564:   17ffffd8    b   65f4c4 <ip4_rewrite_node_process+0x668>
  700.   65f568:   f94023e9    ldr x9, [sp, #64]
  701.     if (unlikely(node->size < (idx + space)))
  702.   65f56c:   794222c8    ldrh    w8, [x22, #272]
  703.         rte_node_enqueue(graph, src, next, src->objs, src->idx);
  704.   65f570:   79422535    ldrh    w21, [x9, #274]
  705.   65f574:   f9409934    ldr x20, [x9, #304]
  706.     if (unlikely(node->size < (idx + space)))
  707.   65f578:   0b1302a9    add w9, w21, w19
  708.   65f57c:   6b08013f    cmp w9, w8
  709.   65f580:   54000128    b.hi    65f5a4 <ip4_rewrite_node_process+0x748>  // b.pmore
  710.     rte_memcpy(&node->objs[idx], objs, nb_objs * sizeof(void *));
  711.   65f584:   f9409ac8    ldr x8, [x22, #304]
  712.   65f588:   d37df2a2    lsl x2, x21, #3
  713.   65f58c:   aa1403e1    mov x1, x20
  714.   65f590:   8b130d00    add x0, x8, x19, lsl #3
  715.   65f594:   97e795db    bl  44d00 <memcpy@plt>
  716.     node->idx = idx + nb_objs;
  717.   65f598:   0b1302a8    add w8, w21, w19
  718.   65f59c:   790226c8    strh    w8, [x22, #274]
  719.   65f5a0:   17ffffc9    b   65f4c4 <ip4_rewrite_node_process+0x668>
  720.   65f5a4:   f94017e0    ldr x0, [sp, #40]
  721.         __rte_node_stream_alloc(graph, node);
  722.   65f5a8:   aa1603e1    mov x1, x22
  723.   65f5ac:   9401289b    bl  6a9818 <__rte_node_stream_alloc>
  724.   65f5b0:   17fffff5    b   65f584 <ip4_rewrite_node_process+0x728>
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top