Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #if defined(__clang__)
- #pragma clang loop vectorize(assume_safety)
- #elif defined(__GNUC__)
- #pragma unroll BUF_PER_LOOP
- #else
- #endif
- for (i = 0; i < nb_objs; i++) {
- rte_prefetch0(pkts[i + 1]);
- mbuf = pkts[i];
- priv.x = rte_node_mbuf_priv1(mbuf)->u;
- priv.u32[1] += rte_cpu_to_be_16(0x0100);
- d = rte_pktmbuf_mtod(mbuf, void *);
- ip = (struct rte_ipv4_hdr *)((uint8_t *)d +
- sizeof(struct rte_ether_hdr));
- ip->time_to_live = priv.u16[1] - 1;
- ip->hdr_checksum = priv.u16[2] + priv.u16[3];
- rte_memcpy(d, nh[priv.u16[0]].rewrite_data,
- nh[priv.u16[0]].rewrite_len);
- next = nh[priv.u16[0]].tx_node;
- if (next_index != next) {
- /* Copy things successfully speculated till now */
- rte_memcpy(to_next, from, last_spec * sizeof(from[0]));
- from += last_spec;
- to_next += last_spec;
- held += last_spec;
- last_spec = 0;
- rte_node_enqueue_x1(graph, node, next, from[0]);
- from += 1;
- } else {
- last_spec += 1;
- }
- }
- 000000000065ee5c <ip4_rewrite_node_process>:
- {
- 65ee5c: d102c3ff sub sp, sp, #0xb0
- 65ee60: a9056ffc stp x28, x27, [sp, #80]
- 65ee64: a90667fa stp x26, x25, [sp, #96]
- 65ee68: a9075ff8 stp x24, x23, [sp, #112]
- 65ee6c: a90857f6 stp x22, x21, [sp, #128]
- 65ee70: a9094ff4 stp x20, x19, [sp, #144]
- 65ee74: a90a7bfd stp x29, x30, [sp, #160]
- 65ee78: 910283fd add x29, sp, #0xa0
- next_index = *(uint16_t *)node->ctx;
- 65ee7c: 79420039 ldrh w25, [x1, #256]
- struct ip4_rewrite_nh_header *nh = ip4_rewrite_nm->nh;
- 65ee80: f0001ba8 adrp x8, 9d5000 <sdev+0x810>
- 65ee84: f9455d1a ldr x26, [x8, #2744]
- 65ee88: f90023e1 str x1, [sp, #64]
- node = node->nodes[next];
- 65ee8c: 8b190c29 add x9, x1, x25, lsl #3
- 65ee90: f9800340 prfm pldl1keep, [x26]
- 65ee94: f940a136 ldr x22, [x9, #320]
- 65ee98: 2a0303f5 mov w21, w3
- 65ee9c: aa0203f8 mov x24, x2
- 65eea0: f90017e0 str x0, [sp, #40]
- const uint16_t idx = node->idx;
- 65eea4: 794226d3 ldrh w19, [x22, #274]
- uint16_t free_space = node->size - idx;
- 65eea8: 794222c8 ldrh w8, [x22, #272]
- 65eeac: b9001fe3 str w3, [sp, #28]
- 65eeb0: f9000be9 str x9, [sp, #16]
- 65eeb4: 4b130108 sub w8, w8, w19
- 65eeb8: 12003d08 and w8, w8, #0xffff
- if (unlikely(free_space < nb_objs))
- 65eebc: 6b23211f cmp w8, w3, uxth
- 65eec0: 54003143 b.cc 65f4e8 <ip4_rewrite_node_process+0x68c> // b.lo, b.ul, b.last
- return &node->objs[idx];
- 65eec4: f9409ac8 ldr x8, [x22, #304]
- for (i = 0; i < nb_objs; i++) {
- 65eec8: 72003ebf tst w21, #0xffff
- 65eecc: 8b130d16 add x22, x8, x19, lsl #3
- 65eed0: 54000180 b.eq 65ef00 <ip4_rewrite_node_process+0xa4> // b.none
- 65eed4: 12003ea8 and w8, w21, #0xffff
- 65eed8: 51000509 sub w9, w8, #0x1
- 65eedc: 71000d3f cmp w9, #0x3
- 65eee0: 120006b4 and w20, w21, #0x3
- 65eee4: a90367fa stp x26, x25, [sp, #48]
- 65eee8: f90007f8 str x24, [sp, #8]
- 65eeec: 54000102 b.cs 65ef0c <ip4_rewrite_node_process+0xb0> // b.hs, b.nlast
- 65eef0: 2a1f03f3 mov w19, wzr
- 65eef4: 2a1f03fb mov w27, wzr
- 65eef8: f90027ff str xzr, [sp, #72]
- 65eefc: 1400010b b 65f328 <ip4_rewrite_node_process+0x4cc>
- 65ef00: 2a1f03fb mov w27, wzr
- 65ef04: 2a1f03f3 mov w19, wzr
- 65ef08: 14000152 b 65f450 <ip4_rewrite_node_process+0x5f4>
- 65ef0c: 2a1f03f3 mov w19, wzr
- 65ef10: 2a1f03fb mov w27, wzr
- 65ef14: 4b140108 sub w8, w8, w20
- 65ef18: 91004315 add x21, x24, #0x10
- 65ef1c: f90027ff str xzr, [sp, #72]
- 65ef20: f90013e8 str x8, [sp, #32]
- 65ef24: 14000007 b 65ef40 <ip4_rewrite_node_process+0xe4>
- last_spec += 1;
- 65ef28: 1100077b add w27, w27, #0x1
- 65ef2c: f94027e8 ldr x8, [sp, #72]
- 65ef30: f94013e9 ldr x9, [sp, #32]
- for (i = 0; i < nb_objs; i++) {
- 65ef34: 910082b5 add x21, x21, #0x20
- 65ef38: 6b08013f cmp w9, w8
- 65ef3c: 54001f60 b.eq 65f328 <ip4_rewrite_node_process+0x4cc> // b.none
- rte_prefetch0(pkts[i + 1]);
- 65ef40: f85f82a8 ldur x8, [x21, #-8]
- 65ef44: f9800100 prfm pldl1keep, [x8]
- mbuf = pkts[i];
- 65ef48: f85f02a8 ldur x8, [x21, #-16]
- priv.x = rte_node_mbuf_priv1(mbuf)->u;
- 65ef4c: f9402109 ldr x9, [x8, #64]
- d = rte_pktmbuf_mtod(mbuf, void *);
- 65ef50: f940010a ldr x10, [x8]
- 65ef54: 79402108 ldrh w8, [x8, #16]
- priv.x = rte_node_mbuf_priv1(mbuf)->u;
- 65ef58: d360fd2c lsr x12, x9, #32
- 65ef5c: d3507d2b ubfx x11, x9, #16, #16
- d = rte_pktmbuf_mtod(mbuf, void *);
- 65ef60: 8b080140 add x0, x10, x8
- rte_memcpy(d, nh[priv.u16[0]].rewrite_data,
- 65ef64: 92403d28 and x8, x9, #0xffff
- priv.u32[1] += rte_cpu_to_be_16(0x0100);
- 65ef68: 11000589 add w9, w12, #0x1
- ip->time_to_live = priv.u16[1] - 1;
- 65ef6c: 5100056a sub w10, w11, #0x1
- ip->hdr_checksum = priv.u16[2] + priv.u16[3];
- 65ef70: 0b494129 add w9, w9, w9, lsr #16
- ip->time_to_live = priv.u16[1] - 1;
- 65ef74: 3900580a strb w10, [x0, #22]
- ip->hdr_checksum = priv.u16[2] + priv.u16[3];
- 65ef78: 79003009 strh w9, [x0, #24]
- rte_memcpy(d, nh[priv.u16[0]].rewrite_data,
- 65ef7c: 8b081b57 add x23, x26, x8, lsl #6
- 65ef80: 794002e2 ldrh w2, [x23]
- 65ef84: 910022e1 add x1, x23, #0x8
- 65ef88: 97e7975e bl 44d00 <memcpy@plt>
- next = nh[priv.u16[0]].tx_node;
- 65ef8c: 794006f7 ldrh w23, [x23, #2]
- if (next_index != next) {
- 65ef90: 6b17033f cmp w25, w23
- 65ef94: 54000061 b.ne 65efa0 <ip4_rewrite_node_process+0x144> // b.any
- last_spec += 1;
- 65ef98: 1100077b add w27, w27, #0x1
- 65ef9c: 14000023 b 65f028 <ip4_rewrite_node_process+0x1cc>
- rte_memcpy(to_next, from, last_spec * sizeof(from[0]));
- 65efa0: 92403f68 and x8, x27, #0xffff
- 65efa4: d37df11a lsl x26, x8, #3
- 65efa8: aa1603e0 mov x0, x22
- 65efac: aa1803e1 mov x1, x24
- 65efb0: aa1a03e2 mov x2, x26
- 65efb4: 97e79753 bl 44d00 <memcpy@plt>
- 65efb8: f94023e8 ldr x8, [sp, #64]
- from += last_spec;
- 65efbc: 8b1a0318 add x24, x24, x26
- rte_node_enqueue_x1(graph, node, next, from[0]);
- 65efc0: f940031c ldr x28, [x24]
- node = node->nodes[next];
- 65efc4: 8b170d08 add x8, x8, x23, lsl #3
- 65efc8: f940a119 ldr x25, [x8, #320]
- uint16_t idx = node->idx;
- 65efcc: 79422737 ldrh w23, [x25, #274]
- if (idx == 0)
- 65efd0: b5000157 cbnz x23, 65eff8 <ip4_rewrite_node_process+0x19c>
- 65efd4: f94017eb ldr x11, [sp, #40]
- __rte_node_enqueue_tail_update(graph, node);
- 65efd8: b9411728 ldr w8, [x25, #276]
- tail = graph->tail;
- 65efdc: b9400169 ldr w9, [x11]
- graph->cir_start[tail++] = node->off;
- 65efe0: f940096a ldr x10, [x11, #16]
- 65efe4: b8297948 str w8, [x10, x9, lsl #2]
- graph->tail = tail & graph->cir_mask;
- 65efe8: b9400968 ldr w8, [x11, #8]
- graph->cir_start[tail++] = node->off;
- 65efec: 11000529 add w9, w9, #0x1
- graph->tail = tail & graph->cir_mask;
- 65eff0: 0a090108 and w8, w8, w9
- 65eff4: b9000168 str w8, [x11]
- if (unlikely(node->size < (idx + space)))
- 65eff8: 79422328 ldrh w8, [x25, #272]
- 65effc: 8b1a02d6 add x22, x22, x26
- 65f000: 0b1b0273 add w19, w19, w27
- 65f004: 6b0802ff cmp w23, w8
- 65f008: 54001702 b.cs 65f2e8 <ip4_rewrite_node_process+0x48c> // b.hs, b.nlast
- node->objs[idx++] = obj;
- 65f00c: f9409b28 ldr x8, [x25, #304]
- 65f010: 110006e9 add w9, w23, #0x1
- 65f014: 2a1f03fb mov w27, wzr
- from += 1;
- 65f018: 91002318 add x24, x24, #0x8
- 65f01c: f837791c str x28, [x8, x23, lsl #3]
- node->idx = idx;
- 65f020: 79022729 strh w9, [x25, #274]
- 65f024: a94367fa ldp x26, x25, [sp, #48]
- rte_prefetch0(pkts[i + 1]);
- 65f028: f94002a8 ldr x8, [x21]
- 65f02c: f9800100 prfm pldl1keep, [x8]
- mbuf = pkts[i];
- 65f030: f85f82a8 ldur x8, [x21, #-8]
- priv.x = rte_node_mbuf_priv1(mbuf)->u;
- 65f034: f9402109 ldr x9, [x8, #64]
- d = rte_pktmbuf_mtod(mbuf, void *);
- 65f038: f940010a ldr x10, [x8]
- 65f03c: 79402108 ldrh w8, [x8, #16]
- priv.x = rte_node_mbuf_priv1(mbuf)->u;
- 65f040: d360fd2c lsr x12, x9, #32
- 65f044: d3507d2b ubfx x11, x9, #16, #16
- d = rte_pktmbuf_mtod(mbuf, void *);
- 65f048: 8b080140 add x0, x10, x8
- rte_memcpy(d, nh[priv.u16[0]].rewrite_data,
- 65f04c: 92403d28 and x8, x9, #0xffff
- priv.u32[1] += rte_cpu_to_be_16(0x0100);
- 65f050: 11000589 add w9, w12, #0x1
- ip->time_to_live = priv.u16[1] - 1;
- 65f054: 5100056a sub w10, w11, #0x1
- ip->hdr_checksum = priv.u16[2] + priv.u16[3];
- 65f058: 0b494129 add w9, w9, w9, lsr #16
- ip->time_to_live = priv.u16[1] - 1;
- 65f05c: 3900580a strb w10, [x0, #22]
- ip->hdr_checksum = priv.u16[2] + priv.u16[3];
- 65f060: 79003009 strh w9, [x0, #24]
- rte_memcpy(d, nh[priv.u16[0]].rewrite_data,
- 65f064: 8b081b57 add x23, x26, x8, lsl #6
- 65f068: 794002e2 ldrh w2, [x23]
- 65f06c: 910022e1 add x1, x23, #0x8
- 65f070: 97e79724 bl 44d00 <memcpy@plt>
- next = nh[priv.u16[0]].tx_node;
- 65f074: 794006f7 ldrh w23, [x23, #2]
- if (next_index != next) {
- 65f078: 6b17033f cmp w25, w23
- 65f07c: 54000061 b.ne 65f088 <ip4_rewrite_node_process+0x22c> // b.any
- last_spec += 1;
- 65f080: 1100077b add w27, w27, #0x1
- 65f084: 14000023 b 65f110 <ip4_rewrite_node_process+0x2b4>
- rte_memcpy(to_next, from, last_spec * sizeof(from[0]));
- 65f088: 92403f68 and x8, x27, #0xffff
- 65f08c: d37df11a lsl x26, x8, #3
- 65f090: aa1603e0 mov x0, x22
- 65f094: aa1803e1 mov x1, x24
- 65f098: aa1a03e2 mov x2, x26
- 65f09c: 97e79719 bl 44d00 <memcpy@plt>
- 65f0a0: f94023e8 ldr x8, [sp, #64]
- from += last_spec;
- 65f0a4: 8b1a0318 add x24, x24, x26
- rte_node_enqueue_x1(graph, node, next, from[0]);
- 65f0a8: f940031c ldr x28, [x24]
- node = node->nodes[next];
- 65f0ac: 8b170d08 add x8, x8, x23, lsl #3
- 65f0b0: f940a119 ldr x25, [x8, #320]
- uint16_t idx = node->idx;
- 65f0b4: 79422737 ldrh w23, [x25, #274]
- 65f0b8: b5000157 cbnz x23, 65f0e0 <ip4_rewrite_node_process+0x284>
- 65f0bc: f94017eb ldr x11, [sp, #40]
- __rte_node_enqueue_tail_update(graph, node);
- 65f0c0: b9411728 ldr w8, [x25, #276]
- tail = graph->tail;
- 65f0c4: b9400169 ldr w9, [x11]
- graph->cir_start[tail++] = node->off;
- 65f0c8: f940096a ldr x10, [x11, #16]
- 65f0cc: b8297948 str w8, [x10, x9, lsl #2]
- graph->tail = tail & graph->cir_mask;
- 65f0d0: b9400968 ldr w8, [x11, #8]
- graph->cir_start[tail++] = node->off;
- 65f0d4: 11000529 add w9, w9, #0x1
- graph->tail = tail & graph->cir_mask;
- 65f0d8: 0a090108 and w8, w8, w9
- 65f0dc: b9000168 str w8, [x11]
- if (unlikely(node->size < (idx + space)))
- 65f0e0: 79422328 ldrh w8, [x25, #272]
- 65f0e4: 8b1a02d6 add x22, x22, x26
- 65f0e8: 0b1b0273 add w19, w19, w27
- 65f0ec: 6b0802ff cmp w23, w8
- 65f0f0: 54001042 b.cs 65f2f8 <ip4_rewrite_node_process+0x49c> // b.hs, b.nlast
- node->objs[idx++] = obj;
- 65f0f4: f9409b28 ldr x8, [x25, #304]
- 65f0f8: 110006e9 add w9, w23, #0x1
- 65f0fc: 2a1f03fb mov w27, wzr
- from += 1;
- 65f100: 91002318 add x24, x24, #0x8
- 65f104: f837791c str x28, [x8, x23, lsl #3]
- node->idx = idx;
- 65f108: 79022729 strh w9, [x25, #274]
- 65f10c: a94367fa ldp x26, x25, [sp, #48]
- rte_prefetch0(pkts[i + 1]);
- 65f110: f94006a8 ldr x8, [x21, #8]
- 65f114: f9800100 prfm pldl1keep, [x8]
- mbuf = pkts[i];
- 65f118: f94002a8 ldr x8, [x21]
- priv.x = rte_node_mbuf_priv1(mbuf)->u;
- 65f11c: f9402109 ldr x9, [x8, #64]
- d = rte_pktmbuf_mtod(mbuf, void *);
- 65f120: f940010a ldr x10, [x8]
- 65f124: 79402108 ldrh w8, [x8, #16]
- priv.x = rte_node_mbuf_priv1(mbuf)->u;
- 65f128: d360fd2c lsr x12, x9, #32
- 65f12c: d3507d2b ubfx x11, x9, #16, #16
- d = rte_pktmbuf_mtod(mbuf, void *);
- 65f130: 8b080140 add x0, x10, x8
- rte_memcpy(d, nh[priv.u16[0]].rewrite_data,
- 65f134: 92403d28 and x8, x9, #0xffff
- priv.u32[1] += rte_cpu_to_be_16(0x0100);
- 65f138: 11000589 add w9, w12, #0x1
- ip->time_to_live = priv.u16[1] - 1;
- 65f13c: 5100056a sub w10, w11, #0x1
- ip->hdr_checksum = priv.u16[2] + priv.u16[3];
- 65f140: 0b494129 add w9, w9, w9, lsr #16
- ip->time_to_live = priv.u16[1] - 1;
- 65f144: 3900580a strb w10, [x0, #22]
- ip->hdr_checksum = priv.u16[2] + priv.u16[3];
- 65f148: 79003009 strh w9, [x0, #24]
- rte_memcpy(d, nh[priv.u16[0]].rewrite_data,
- 65f14c: 8b081b57 add x23, x26, x8, lsl #6
- 65f150: 794002e2 ldrh w2, [x23]
- 65f154: 910022e1 add x1, x23, #0x8
- 65f158: 97e796ea bl 44d00 <memcpy@plt>
- next = nh[priv.u16[0]].tx_node;
- 65f15c: 794006f7 ldrh w23, [x23, #2]
- if (next_index != next) {
- 65f160: 6b17033f cmp w25, w23
- 65f164: 54000061 b.ne 65f170 <ip4_rewrite_node_process+0x314> // b.any
- last_spec += 1;
- 65f168: 1100077b add w27, w27, #0x1
- 65f16c: 14000023 b 65f1f8 <ip4_rewrite_node_process+0x39c>
- rte_memcpy(to_next, from, last_spec * sizeof(from[0]));
- 65f170: 92403f68 and x8, x27, #0xffff
- 65f174: d37df11a lsl x26, x8, #3
- 65f178: aa1603e0 mov x0, x22
- 65f17c: aa1803e1 mov x1, x24
- 65f180: aa1a03e2 mov x2, x26
- 65f184: 97e796df bl 44d00 <memcpy@plt>
- 65f188: f94023e8 ldr x8, [sp, #64]
- from += last_spec;
- 65f18c: 8b1a0318 add x24, x24, x26
- rte_node_enqueue_x1(graph, node, next, from[0]);
- 65f190: f940031c ldr x28, [x24]
- node = node->nodes[next];
- 65f194: 8b170d08 add x8, x8, x23, lsl #3
- 65f198: f940a119 ldr x25, [x8, #320]
- uint16_t idx = node->idx;
- 65f19c: 79422737 ldrh w23, [x25, #274]
- if (idx == 0)
- 65f1a0: b5000157 cbnz x23, 65f1c8 <ip4_rewrite_node_process+0x36c>
- 65f1a4: f94017eb ldr x11, [sp, #40]
- __rte_node_enqueue_tail_update(graph, node);
- 65f1a8: b9411728 ldr w8, [x25, #276]
- tail = graph->tail;
- 65f1ac: b9400169 ldr w9, [x11]
- graph->cir_start[tail++] = node->off;
- 65f1b0: f940096a ldr x10, [x11, #16]
- 65f1b4: b8297948 str w8, [x10, x9, lsl #2]
- graph->tail = tail & graph->cir_mask;
- 65f1b8: b9400968 ldr w8, [x11, #8]
- graph->cir_start[tail++] = node->off;
- 65f1bc: 11000529 add w9, w9, #0x1
- graph->tail = tail & graph->cir_mask;
- 65f1c0: 0a090108 and w8, w8, w9
- 65f1c4: b9000168 str w8, [x11]
- if (unlikely(node->size < (idx + space)))
- 65f1c8: 79422328 ldrh w8, [x25, #272]
- 65f1cc: 8b1a02d6 add x22, x22, x26
- 65f1d0: 0b1b0273 add w19, w19, w27
- 65f1d4: 6b0802ff cmp w23, w8
- 65f1d8: 54000982 b.cs 65f308 <ip4_rewrite_node_process+0x4ac> // b.hs, b.nlast
- node->objs[idx++] = obj;
- 65f1dc: f9409b28 ldr x8, [x25, #304]
- 65f1e0: 110006e9 add w9, w23, #0x1
- 65f1e4: 2a1f03fb mov w27, wzr
- from += 1;
- 65f1e8: 91002318 add x24, x24, #0x8
- 65f1ec: f837791c str x28, [x8, x23, lsl #3]
- node->idx = idx;
- 65f1f0: 79022729 strh w9, [x25, #274]
- 65f1f4: a94367fa ldp x26, x25, [sp, #48]
- rte_prefetch0(pkts[i + 1]);
- 65f1f8: f9400aa8 ldr x8, [x21, #16]
- 65f1fc: f9800100 prfm pldl1keep, [x8]
- mbuf = pkts[i];
- 65f200: f94006a8 ldr x8, [x21, #8]
- priv.x = rte_node_mbuf_priv1(mbuf)->u;
- 65f204: f9402109 ldr x9, [x8, #64]
- d = rte_pktmbuf_mtod(mbuf, void *);
- 65f208: f940010a ldr x10, [x8]
- 65f20c: 79402108 ldrh w8, [x8, #16]
- priv.x = rte_node_mbuf_priv1(mbuf)->u;
- 65f210: d360fd2c lsr x12, x9, #32
- 65f214: d3507d2b ubfx x11, x9, #16, #16
- d = rte_pktmbuf_mtod(mbuf, void *);
- 65f218: 8b080140 add x0, x10, x8
- rte_memcpy(d, nh[priv.u16[0]].rewrite_data,
- 65f21c: 92403d28 and x8, x9, #0xffff
- priv.u32[1] += rte_cpu_to_be_16(0x0100);
- 65f220: 11000589 add w9, w12, #0x1
- ip->time_to_live = priv.u16[1] - 1;
- 65f224: 5100056a sub w10, w11, #0x1
- ip->hdr_checksum = priv.u16[2] + priv.u16[3];
- 65f228: 0b494129 add w9, w9, w9, lsr #16
- ip->time_to_live = priv.u16[1] - 1;
- 65f22c: 3900580a strb w10, [x0, #22]
- ip->hdr_checksum = priv.u16[2] + priv.u16[3];
- 65f230: 79003009 strh w9, [x0, #24]
- rte_memcpy(d, nh[priv.u16[0]].rewrite_data,
- 65f234: 8b081b57 add x23, x26, x8, lsl #6
- 65f238: f94027e8 ldr x8, [sp, #72]
- 65f23c: 794002e2 ldrh w2, [x23]
- 65f240: 910022e1 add x1, x23, #0x8
- rte_prefetch0(pkts[i + 1]);
- 65f244: 91001108 add x8, x8, #0x4
- 65f248: f90027e8 str x8, [sp, #72]
- rte_memcpy(d, nh[priv.u16[0]].rewrite_data,
- 65f24c: 97e796ad bl 44d00 <memcpy@plt>
- next = nh[priv.u16[0]].tx_node;
- 65f250: 794006f7 ldrh w23, [x23, #2]
- if (next_index != next) {
- 65f254: 6b17033f cmp w25, w23
- 65f258: 54ffe680 b.eq 65ef28 <ip4_rewrite_node_process+0xcc> // b.none
- rte_memcpy(to_next, from, last_spec * sizeof(from[0]));
- 65f25c: 92403f68 and x8, x27, #0xffff
- 65f260: d37df11a lsl x26, x8, #3
- 65f264: aa1603e0 mov x0, x22
- 65f268: aa1803e1 mov x1, x24
- 65f26c: aa1a03e2 mov x2, x26
- 65f270: 97e796a4 bl 44d00 <memcpy@plt>
- 65f274: f94023e8 ldr x8, [sp, #64]
- from += last_spec;
- 65f278: 8b1a0318 add x24, x24, x26
- rte_node_enqueue_x1(graph, node, next, from[0]);
- 65f27c: f940031c ldr x28, [x24]
- node = node->nodes[next];
- 65f280: 8b170d08 add x8, x8, x23, lsl #3
- 65f284: f940a119 ldr x25, [x8, #320]
- uint16_t idx = node->idx;
- 65f288: 79422737 ldrh w23, [x25, #274]
- if (idx == 0)
- 65f28c: b5000157 cbnz x23, 65f2b4 <ip4_rewrite_node_process+0x458>
- 65f290: f94017eb ldr x11, [sp, #40]
- __rte_node_enqueue_tail_update(graph, node);
- 65f294: b9411728 ldr w8, [x25, #276]
- tail = graph->tail;
- 65f298: b9400169 ldr w9, [x11]
- graph->cir_start[tail++] = node->off;
- 65f29c: f940096a ldr x10, [x11, #16]
- 65f2a0: b8297948 str w8, [x10, x9, lsl #2]
- graph->tail = tail & graph->cir_mask;
- 65f2a4: b9400968 ldr w8, [x11, #8]
- graph->cir_start[tail++] = node->off;
- 65f2a8: 11000529 add w9, w9, #0x1
- graph->tail = tail & graph->cir_mask;
- 65f2ac: 0a090108 and w8, w8, w9
- 65f2b0: b9000168 str w8, [x11]
- if (unlikely(node->size < (idx + space)))
- 65f2b4: 79422328 ldrh w8, [x25, #272]
- 65f2b8: 8b1a02d6 add x22, x22, x26
- 65f2bc: 0b1b0273 add w19, w19, w27
- 65f2c0: 6b0802ff cmp w23, w8
- 65f2c4: 540002a2 b.cs 65f318 <ip4_rewrite_node_process+0x4bc> // b.hs, b.nlast
- node->objs[idx++] = obj;
- 65f2c8: f9409b28 ldr x8, [x25, #304]
- 65f2cc: 110006e9 add w9, w23, #0x1
- 65f2d0: 2a1f03fb mov w27, wzr
- from += 1;
- 65f2d4: 91002318 add x24, x24, #0x8
- 65f2d8: f837791c str x28, [x8, x23, lsl #3]
- node->idx = idx;
- 65f2dc: 79022729 strh w9, [x25, #274]
- 65f2e0: a94367fa ldp x26, x25, [sp, #48]
- 65f2e4: 17ffff12 b 65ef2c <ip4_rewrite_node_process+0xd0>
- 65f2e8: f94017e0 ldr x0, [sp, #40]
- __rte_node_stream_alloc(graph, node);
- 65f2ec: aa1903e1 mov x1, x25
- 65f2f0: 9401294a bl 6a9818 <__rte_node_stream_alloc>
- 65f2f4: 17ffff46 b 65f00c <ip4_rewrite_node_process+0x1b0>
- 65f2f8: f94017e0 ldr x0, [sp, #40]
- 65f2fc: aa1903e1 mov x1, x25
- 65f300: 94012946 bl 6a9818 <__rte_node_stream_alloc>
- 65f304: 17ffff7c b 65f0f4 <ip4_rewrite_node_process+0x298>
- 65f308: f94017e0 ldr x0, [sp, #40]
- 65f30c: aa1903e1 mov x1, x25
- 65f310: 94012942 bl 6a9818 <__rte_node_stream_alloc>
- 65f314: 17ffffb2 b 65f1dc <ip4_rewrite_node_process+0x380>
- 65f318: f94017e0 ldr x0, [sp, #40]
- 65f31c: aa1903e1 mov x1, x25
- 65f320: 9401293e bl 6a9818 <__rte_node_stream_alloc>
- 65f324: 17ffffe9 b 65f2c8 <ip4_rewrite_node_process+0x46c>
- 65f328: 34000954 cbz w20, 65f450 <ip4_rewrite_node_process+0x5f4>
- 65f32c: f94007e8 ldr x8, [sp, #8]
- 65f330: f94027e9 ldr x9, [sp, #72]
- if (next_index != next) {
- 65f334: 8b090d08 add x8, x8, x9, lsl #3
- 65f338: 91002115 add x21, x8, #0x8
- 65f33c: 14000005 b 65f350 <ip4_rewrite_node_process+0x4f4>
- last_spec += 1;
- 65f340: 1100077b add w27, w27, #0x1
- for (i = 0; i < nb_objs; i++) {
- 65f344: 71000694 subs w20, w20, #0x1
- 65f348: 910022b5 add x21, x21, #0x8
- 65f34c: 54000820 b.eq 65f450 <ip4_rewrite_node_process+0x5f4> // b.none
- rte_prefetch0(pkts[i + 1]);
- 65f350: f94002a8 ldr x8, [x21]
- 65f354: f9800100 prfm pldl1keep, [x8]
- mbuf = pkts[i];
- 65f358: f85f82a8 ldur x8, [x21, #-8]
- priv.x = rte_node_mbuf_priv1(mbuf)->u;
- 65f35c: f9402109 ldr x9, [x8, #64]
- d = rte_pktmbuf_mtod(mbuf, void *);
- 65f360: f940010a ldr x10, [x8]
- 65f364: 79402108 ldrh w8, [x8, #16]
- priv.x = rte_node_mbuf_priv1(mbuf)->u;
- 65f368: d360fd2c lsr x12, x9, #32
- 65f36c: d3507d2b ubfx x11, x9, #16, #16
- d = rte_pktmbuf_mtod(mbuf, void *);
- 65f370: 8b080140 add x0, x10, x8
- rte_memcpy(d, nh[priv.u16[0]].rewrite_data,
- 65f374: 92403d28 and x8, x9, #0xffff
- priv.u32[1] += rte_cpu_to_be_16(0x0100);
- 65f378: 11000589 add w9, w12, #0x1
- ip->time_to_live = priv.u16[1] - 1;
- 65f37c: 5100056a sub w10, w11, #0x1
- ip->hdr_checksum = priv.u16[2] + priv.u16[3];
- 65f380: 0b494129 add w9, w9, w9, lsr #16
- ip->time_to_live = priv.u16[1] - 1;
- 65f384: 3900580a strb w10, [x0, #22]
- ip->hdr_checksum = priv.u16[2] + priv.u16[3];
- 65f388: 79003009 strh w9, [x0, #24]
- rte_memcpy(d, nh[priv.u16[0]].rewrite_data,
- 65f38c: 8b081b57 add x23, x26, x8, lsl #6
- 65f390: 794002e2 ldrh w2, [x23]
- 65f394: 910022e1 add x1, x23, #0x8
- 65f398: 97e7965a bl 44d00 <memcpy@plt>
- next = nh[priv.u16[0]].tx_node;
- 65f39c: 794006f7 ldrh w23, [x23, #2]
- if (next_index != next) {
- 65f3a0: 6b17033f cmp w25, w23
- 65f3a4: 54fffce0 b.eq 65f340 <ip4_rewrite_node_process+0x4e4> // b.none
- rte_memcpy(to_next, from, last_spec * sizeof(from[0]));
- 65f3a8: 92403f68 and x8, x27, #0xffff
- 65f3ac: d37df119 lsl x25, x8, #3
- 65f3b0: aa1603e0 mov x0, x22
- 65f3b4: aa1803e1 mov x1, x24
- 65f3b8: aa1903e2 mov x2, x25
- 65f3bc: 97e79651 bl 44d00 <memcpy@plt>
- 65f3c0: f94023e8 ldr x8, [sp, #64]
- from += last_spec;
- 65f3c4: 8b190318 add x24, x24, x25
- rte_node_enqueue_x1(graph, node, next, from[0]);
- 65f3c8: f940031c ldr x28, [x24]
- node = node->nodes[next];
- 65f3cc: 8b170d08 add x8, x8, x23, lsl #3
- 65f3d0: f940a117 ldr x23, [x8, #320]
- uint16_t idx = node->idx;
- 65f3d4: 794226fa ldrh w26, [x23, #274]
- 65f3d8: b500015a cbnz x26, 65f400 <ip4_rewrite_node_process+0x5a4>
- 65f3dc: f94017eb ldr x11, [sp, #40]
- __rte_node_enqueue_tail_update(graph, node);
- 65f3e0: b94116e8 ldr w8, [x23, #276]
- tail = graph->tail;
- 65f3e4: b9400169 ldr w9, [x11]
- graph->cir_start[tail++] = node->off;
- 65f3e8: f940096a ldr x10, [x11, #16]
- 65f3ec: b8297948 str w8, [x10, x9, lsl #2]
- graph->tail = tail & graph->cir_mask;
- 65f3f0: b9400968 ldr w8, [x11, #8]
- graph->cir_start[tail++] = node->off;
- 65f3f4: 11000529 add w9, w9, #0x1
- graph->tail = tail & graph->cir_mask;
- 65f3f8: 0a090108 and w8, w8, w9
- 65f3fc: b9000168 str w8, [x11]
- if (unlikely(node->size < (idx + space)))
- 65f400: 794222e8 ldrh w8, [x23, #272]
- 65f404: 8b1902d6 add x22, x22, x25
- 65f408: 0b1b0273 add w19, w19, w27
- 65f40c: 6b08035f cmp w26, w8
- 65f410: 54000182 b.cs 65f440 <ip4_rewrite_node_process+0x5e4> // b.hs, b.nlast
- node->objs[idx++] = obj;
- 65f414: f9409ae8 ldr x8, [x23, #304]
- 65f418: 11000749 add w9, w26, #0x1
- 65f41c: 2a1f03fb mov w27, wzr
- from += 1;
- 65f420: 91002318 add x24, x24, #0x8
- 65f424: f83a791c str x28, [x8, x26, lsl #3]
- node->idx = idx;
- 65f428: 790226e9 strh w9, [x23, #274]
- 65f42c: a94367fa ldp x26, x25, [sp, #48]
- for (i = 0; i < nb_objs; i++) {
- 65f430: 71000694 subs w20, w20, #0x1
- 65f434: 910022b5 add x21, x21, #0x8
- 65f438: 54fff8c1 b.ne 65f350 <ip4_rewrite_node_process+0x4f4> // b.any
- 65f43c: 14000005 b 65f450 <ip4_rewrite_node_process+0x5f4>
- 65f440: f94017e0 ldr x0, [sp, #40]
- __rte_node_stream_alloc(graph, node);
- 65f444: aa1703e1 mov x1, x23
- 65f448: 940128f4 bl 6a9818 <__rte_node_stream_alloc>
- 65f44c: 17fffff2 b 65f414 <ip4_rewrite_node_process+0x5b8>
- 65f450: b9401ff7 ldr w23, [sp, #28]
- if (likely(last_spec == nb_objs)) {
- 65f454: 12003f68 and w8, w27, #0xffff
- 65f458: 6b37211f cmp w8, w23, uxth
- 65f45c: f9400be8 ldr x8, [sp, #16]
- 65f460: 91050114 add x20, x8, #0x140
- 65f464: 54000501 b.ne 65f504 <ip4_rewrite_node_process+0x6a8> // b.any
- node = node->nodes[next];
- 65f468: f9400296 ldr x22, [x20]
- if (likely(dst->idx == 0)) {
- 65f46c: 794226d3 ldrh w19, [x22, #274]
- 65f470: 350007d3 cbnz w19, 65f568 <ip4_rewrite_node_process+0x70c>
- 65f474: f94023eb ldr x11, [sp, #64]
- void **dobjs = dst->objs;
- 65f478: f9409ac9 ldr x9, [x22, #304]
- uint16_t dsz = dst->size;
- 65f47c: 794222ca ldrh w10, [x22, #272]
- dst->objs = src->objs;
- 65f480: f9409968 ldr x8, [x11, #304]
- 65f484: f9009ac8 str x8, [x22, #304]
- dst->size = src->size;
- 65f488: 79422168 ldrh w8, [x11, #272]
- 65f48c: 790222c8 strh w8, [x22, #272]
- dst->idx = src->idx;
- 65f490: 79422568 ldrh w8, [x11, #274]
- src->objs = dobjs;
- 65f494: f9009969 str x9, [x11, #304]
- src->size = dsz;
- 65f498: 7902216a strh w10, [x11, #272]
- 65f49c: f94017eb ldr x11, [sp, #40]
- dst->idx = src->idx;
- 65f4a0: 790226c8 strh w8, [x22, #274]
- __rte_node_enqueue_tail_update(graph, dst);
- 65f4a4: b94116c9 ldr w9, [x22, #276]
- tail = graph->tail;
- 65f4a8: b9400168 ldr w8, [x11]
- graph->cir_start[tail++] = node->off;
- 65f4ac: f940096a ldr x10, [x11, #16]
- 65f4b0: b8287949 str w9, [x10, x8, lsl #2]
- graph->tail = tail & graph->cir_mask;
- 65f4b4: b9400969 ldr w9, [x11, #8]
- graph->cir_start[tail++] = node->off;
- 65f4b8: 11000508 add w8, w8, #0x1
- graph->tail = tail & graph->cir_mask;
- 65f4bc: 0a080128 and w8, w9, w8
- 65f4c0: b9000168 str w8, [x11]
- }
- 65f4c4: 2a1703e0 mov w0, w23
- 65f4c8: a94a7bfd ldp x29, x30, [sp, #160]
- 65f4cc: a9494ff4 ldp x20, x19, [sp, #144]
- 65f4d0: a94857f6 ldp x22, x21, [sp, #128]
- 65f4d4: a9475ff8 ldp x24, x23, [sp, #112]
- 65f4d8: a94667fa ldp x26, x25, [sp, #96]
- 65f4dc: a9456ffc ldp x28, x27, [sp, #80]
- 65f4e0: 9102c3ff add sp, sp, #0xb0
- 65f4e4: d65f03c0 ret
- 65f4e8: f94017e0 ldr x0, [sp, #40]
- __rte_node_stream_alloc_size(graph, node, nb_objs);
- 65f4ec: aa1603e1 mov x1, x22
- 65f4f0: 2a1503e2 mov w2, w21
- 65f4f4: 940128fa bl 6a98dc <__rte_node_stream_alloc_size>
- return &node->objs[idx];
- 65f4f8: f9409ac8 ldr x8, [x22, #304]
- 65f4fc: 8b130d16 add x22, x8, x19, lsl #3
- 65f500: 17fffe75 b 65eed4 <ip4_rewrite_node_process+0x78>
- rte_memcpy(to_next, from, last_spec * sizeof(from[0]));
- 65f504: 92403f68 and x8, x27, #0xffff
- held += last_spec;
- 65f508: 0b1b0273 add w19, w19, w27
- rte_memcpy(to_next, from, last_spec * sizeof(from[0]));
- 65f50c: d37df102 lsl x2, x8, #3
- 65f510: aa1603e0 mov x0, x22
- 65f514: aa1803e1 mov x1, x24
- held += last_spec;
- 65f518: 12003e75 and w21, w19, #0xffff
- rte_memcpy(to_next, from, last_spec * sizeof(from[0]));
- 65f51c: 97e795f9 bl 44d00 <memcpy@plt>
- if (unlikely(!idx))
- 65f520: 340001f5 cbz w21, 65f55c <ip4_rewrite_node_process+0x700>
- node = node->nodes[next];
- 65f524: f9400288 ldr x8, [x20]
- if (node->idx == 0)
- 65f528: 79422509 ldrh w9, [x8, #274]
- 65f52c: 35000149 cbnz w9, 65f554 <ip4_rewrite_node_process+0x6f8>
- 65f530: f94017ed ldr x13, [sp, #40]
- __rte_node_enqueue_tail_update(graph, node);
- 65f534: b941150a ldr w10, [x8, #276]
- tail = graph->tail;
- 65f538: b94001ab ldr w11, [x13]
- graph->cir_start[tail++] = node->off;
- 65f53c: f94009ac ldr x12, [x13, #16]
- 65f540: b82b798a str w10, [x12, x11, lsl #2]
- graph->tail = tail & graph->cir_mask;
- 65f544: b94009aa ldr w10, [x13, #8]
- graph->cir_start[tail++] = node->off;
- 65f548: 1100056b add w11, w11, #0x1
- graph->tail = tail & graph->cir_mask;
- 65f54c: 0a0b014a and w10, w10, w11
- 65f550: b90001aa str w10, [x13]
- node->idx += idx;
- 65f554: 0b130129 add w9, w9, w19
- 65f558: 79022509 strh w9, [x8, #274]
- 65f55c: f94023e8 ldr x8, [sp, #64]
- *(uint16_t *)node->ctx = next_index;
- 65f560: 79020119 strh w25, [x8, #256]
- 65f564: 17ffffd8 b 65f4c4 <ip4_rewrite_node_process+0x668>
- 65f568: f94023e9 ldr x9, [sp, #64]
- if (unlikely(node->size < (idx + space)))
- 65f56c: 794222c8 ldrh w8, [x22, #272]
- rte_node_enqueue(graph, src, next, src->objs, src->idx);
- 65f570: 79422535 ldrh w21, [x9, #274]
- 65f574: f9409934 ldr x20, [x9, #304]
- if (unlikely(node->size < (idx + space)))
- 65f578: 0b1302a9 add w9, w21, w19
- 65f57c: 6b08013f cmp w9, w8
- 65f580: 54000128 b.hi 65f5a4 <ip4_rewrite_node_process+0x748> // b.pmore
- rte_memcpy(&node->objs[idx], objs, nb_objs * sizeof(void *));
- 65f584: f9409ac8 ldr x8, [x22, #304]
- 65f588: d37df2a2 lsl x2, x21, #3
- 65f58c: aa1403e1 mov x1, x20
- 65f590: 8b130d00 add x0, x8, x19, lsl #3
- 65f594: 97e795db bl 44d00 <memcpy@plt>
- node->idx = idx + nb_objs;
- 65f598: 0b1302a8 add w8, w21, w19
- 65f59c: 790226c8 strh w8, [x22, #274]
- 65f5a0: 17ffffc9 b 65f4c4 <ip4_rewrite_node_process+0x668>
- 65f5a4: f94017e0 ldr x0, [sp, #40]
- __rte_node_stream_alloc(graph, node);
- 65f5a8: aa1603e1 mov x1, x22
- 65f5ac: 9401289b bl 6a9818 <__rte_node_stream_alloc>
- 65f5b0: 17fffff5 b 65f584 <ip4_rewrite_node_process+0x728>
Add Comment
Please, Sign In to add comment