Guest User

Untitled

a guest
Mar 26th, 2020
44
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