rkfifo.lst 40 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066
  1. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s page 1
  2. 1 .cpu cortex-m4
  3. 2 .arch armv7e-m
  4. 3 .fpu fpv4-sp-d16
  5. 4 .eabi_attribute 27, 1
  6. 5 .eabi_attribute 28, 1
  7. 6 .eabi_attribute 20, 1
  8. 7 .eabi_attribute 21, 1
  9. 8 .eabi_attribute 23, 3
  10. 9 .eabi_attribute 24, 1
  11. 10 .eabi_attribute 25, 1
  12. 11 .eabi_attribute 26, 1
  13. 12 .eabi_attribute 30, 6
  14. 13 .eabi_attribute 34, 1
  15. 14 .eabi_attribute 18, 4
  16. 15 .file "rkfifo.c"
  17. 16 .text
  18. 17 .Ltext0:
  19. 18 .cfi_sections .debug_frame
  20. 19 .section .text.fls_int,"ax",%progbits
  21. 20 .align 1
  22. 21 .syntax unified
  23. 22 .thumb
  24. 23 .thumb_func
  25. 25 fls_int:
  26. 26 .LFB0:
  27. 27 .file 1 "user_src/rkfifo.c"
  28. 1:user_src/rkfifo.c **** #include "rkfifo.h"
  29. 2:user_src/rkfifo.c **** #include <string.h>
  30. 3:user_src/rkfifo.c ****
  31. 4:user_src/rkfifo.c **** #define min(x,y) \
  32. 5:user_src/rkfifo.c **** ({ \
  33. 6:user_src/rkfifo.c **** typeof(x) _min1 = x; \
  34. 7:user_src/rkfifo.c **** typeof(y) _min2 = y; \
  35. 8:user_src/rkfifo.c **** (void)(&_min1 == &_min2); \
  36. 9:user_src/rkfifo.c **** _min1 < _min2 ? _min1 : _min2; \
  37. 10:user_src/rkfifo.c **** })
  38. 11:user_src/rkfifo.c ****
  39. 12:user_src/rkfifo.c **** #define max(x,y) \
  40. 13:user_src/rkfifo.c **** ({ \
  41. 14:user_src/rkfifo.c **** typeof(x) _max1 = x; \
  42. 15:user_src/rkfifo.c **** typeof(y) _max2 = y; \
  43. 16:user_src/rkfifo.c **** (void)(&_max1 == &_max2); \
  44. 17:user_src/rkfifo.c **** _max1 > _max2 ? _max1 : _max2; \
  45. 18:user_src/rkfifo.c **** })
  46. 19:user_src/rkfifo.c ****
  47. 20:user_src/rkfifo.c **** /* 检查是否是 2 的幂次数 */
  48. 21:user_src/rkfifo.c **** #define is_power_of_2(x) ((x) != 0 && (((x) & ((x)-1)) == 0))
  49. 22:user_src/rkfifo.c ****
  50. 23:user_src/rkfifo.c **** /**
  51. 24:user_src/rkfifo.c **** * @brief 返回输入参数的最高有效 bit 位
  52. 25:user_src/rkfifo.c **** *
  53. 26:user_src/rkfifo.c **** * @param x 输入参数
  54. 27:user_src/rkfifo.c **** * @return int 最高有效 bit 位, 从低到高 1~32, 0 表示无输入参数为 0
  55. 28:user_src/rkfifo.c **** */
  56. 29:user_src/rkfifo.c **** static inline int fls_int(int x)
  57. 30:user_src/rkfifo.c **** {
  58. 28 .loc 1 30 1
  59. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s page 2
  60. 29 .cfi_startproc
  61. 30 @ args = 0, pretend = 0, frame = 16
  62. 31 @ frame_needed = 1, uses_anonymous_args = 0
  63. 32 @ link register save eliminated.
  64. 33 0000 80B4 push {r7}
  65. 34 .LCFI0:
  66. 35 .cfi_def_cfa_offset 4
  67. 36 .cfi_offset 7, -4
  68. 37 0002 85B0 sub sp, sp, #20
  69. 38 .LCFI1:
  70. 39 .cfi_def_cfa_offset 24
  71. 40 0004 00AF add r7, sp, #0
  72. 41 .LCFI2:
  73. 42 .cfi_def_cfa_register 7
  74. 43 0006 7860 str r0, [r7, #4]
  75. 31:user_src/rkfifo.c **** int r = 32;
  76. 44 .loc 1 31 9
  77. 45 0008 2023 movs r3, #32
  78. 46 000a FB60 str r3, [r7, #12]
  79. 32:user_src/rkfifo.c ****
  80. 33:user_src/rkfifo.c **** if (!x)
  81. 47 .loc 1 33 8
  82. 48 000c 7B68 ldr r3, [r7, #4]
  83. 49 000e 002B cmp r3, #0
  84. 50 0010 01D1 bne .L2
  85. 34:user_src/rkfifo.c **** return 0;
  86. 51 .loc 1 34 16
  87. 52 0012 0023 movs r3, #0
  88. 53 0014 35E0 b .L3
  89. 54 .L2:
  90. 35:user_src/rkfifo.c **** if (!(x & 0xffff0000u))
  91. 55 .loc 1 35 13
  92. 56 0016 7B68 ldr r3, [r7, #4]
  93. 57 0018 1B0C lsrs r3, r3, #16
  94. 58 001a 1B04 lsls r3, r3, #16
  95. 59 .loc 1 35 8
  96. 60 001c 002B cmp r3, #0
  97. 61 001e 05D1 bne .L4
  98. 36:user_src/rkfifo.c **** {
  99. 37:user_src/rkfifo.c **** x <<= 16;
  100. 62 .loc 1 37 11
  101. 63 0020 7B68 ldr r3, [r7, #4]
  102. 64 0022 1B04 lsls r3, r3, #16
  103. 65 0024 7B60 str r3, [r7, #4]
  104. 38:user_src/rkfifo.c **** r -= 16;
  105. 66 .loc 1 38 11
  106. 67 0026 FB68 ldr r3, [r7, #12]
  107. 68 0028 103B subs r3, r3, #16
  108. 69 002a FB60 str r3, [r7, #12]
  109. 70 .L4:
  110. 39:user_src/rkfifo.c **** }
  111. 40:user_src/rkfifo.c **** if (!(x & 0xff000000u))
  112. 71 .loc 1 40 13
  113. 72 002c 7B68 ldr r3, [r7, #4]
  114. 73 002e 03F07F43 and r3, r3, #-16777216
  115. 74 .loc 1 40 8
  116. 75 0032 002B cmp r3, #0
  117. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s page 3
  118. 76 0034 05D1 bne .L5
  119. 41:user_src/rkfifo.c **** {
  120. 42:user_src/rkfifo.c **** x <<= 8;
  121. 77 .loc 1 42 11
  122. 78 0036 7B68 ldr r3, [r7, #4]
  123. 79 0038 1B02 lsls r3, r3, #8
  124. 80 003a 7B60 str r3, [r7, #4]
  125. 43:user_src/rkfifo.c **** r -= 8;
  126. 81 .loc 1 43 11
  127. 82 003c FB68 ldr r3, [r7, #12]
  128. 83 003e 083B subs r3, r3, #8
  129. 84 0040 FB60 str r3, [r7, #12]
  130. 85 .L5:
  131. 44:user_src/rkfifo.c **** }
  132. 45:user_src/rkfifo.c **** if (!(x & 0xf0000000u))
  133. 86 .loc 1 45 13
  134. 87 0042 7B68 ldr r3, [r7, #4]
  135. 88 0044 03F07043 and r3, r3, #-268435456
  136. 89 .loc 1 45 8
  137. 90 0048 002B cmp r3, #0
  138. 91 004a 05D1 bne .L6
  139. 46:user_src/rkfifo.c **** {
  140. 47:user_src/rkfifo.c **** x <<= 4;
  141. 92 .loc 1 47 11
  142. 93 004c 7B68 ldr r3, [r7, #4]
  143. 94 004e 1B01 lsls r3, r3, #4
  144. 95 0050 7B60 str r3, [r7, #4]
  145. 48:user_src/rkfifo.c **** r -= 4;
  146. 96 .loc 1 48 11
  147. 97 0052 FB68 ldr r3, [r7, #12]
  148. 98 0054 043B subs r3, r3, #4
  149. 99 0056 FB60 str r3, [r7, #12]
  150. 100 .L6:
  151. 49:user_src/rkfifo.c **** }
  152. 50:user_src/rkfifo.c **** if (!(x & 0xc0000000u))
  153. 101 .loc 1 50 13
  154. 102 0058 7B68 ldr r3, [r7, #4]
  155. 103 005a 03F04043 and r3, r3, #-1073741824
  156. 104 .loc 1 50 8
  157. 105 005e 002B cmp r3, #0
  158. 106 0060 05D1 bne .L7
  159. 51:user_src/rkfifo.c **** {
  160. 52:user_src/rkfifo.c **** x <<= 2;
  161. 107 .loc 1 52 11
  162. 108 0062 7B68 ldr r3, [r7, #4]
  163. 109 0064 9B00 lsls r3, r3, #2
  164. 110 0066 7B60 str r3, [r7, #4]
  165. 53:user_src/rkfifo.c **** r -= 2;
  166. 111 .loc 1 53 11
  167. 112 0068 FB68 ldr r3, [r7, #12]
  168. 113 006a 023B subs r3, r3, #2
  169. 114 006c FB60 str r3, [r7, #12]
  170. 115 .L7:
  171. 54:user_src/rkfifo.c **** }
  172. 55:user_src/rkfifo.c **** if (!(x & 0x80000000u))
  173. 116 .loc 1 55 8
  174. 117 006e 7B68 ldr r3, [r7, #4]
  175. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s page 4
  176. 118 0070 002B cmp r3, #0
  177. 119 0072 05DB blt .L8
  178. 56:user_src/rkfifo.c **** {
  179. 57:user_src/rkfifo.c **** x <<= 1;
  180. 120 .loc 1 57 11
  181. 121 0074 7B68 ldr r3, [r7, #4]
  182. 122 0076 5B00 lsls r3, r3, #1
  183. 123 0078 7B60 str r3, [r7, #4]
  184. 58:user_src/rkfifo.c **** r -= 1;
  185. 124 .loc 1 58 11
  186. 125 007a FB68 ldr r3, [r7, #12]
  187. 126 007c 013B subs r3, r3, #1
  188. 127 007e FB60 str r3, [r7, #12]
  189. 128 .L8:
  190. 59:user_src/rkfifo.c **** }
  191. 60:user_src/rkfifo.c **** return r;
  192. 129 .loc 1 60 12
  193. 130 0080 FB68 ldr r3, [r7, #12]
  194. 131 .L3:
  195. 61:user_src/rkfifo.c **** }
  196. 132 .loc 1 61 1
  197. 133 0082 1846 mov r0, r3
  198. 134 0084 1437 adds r7, r7, #20
  199. 135 .LCFI3:
  200. 136 .cfi_def_cfa_offset 4
  201. 137 0086 BD46 mov sp, r7
  202. 138 .LCFI4:
  203. 139 .cfi_def_cfa_register 13
  204. 140 @ sp needed
  205. 141 0088 5DF8047B ldr r7, [sp], #4
  206. 142 .LCFI5:
  207. 143 .cfi_restore 7
  208. 144 .cfi_def_cfa_offset 0
  209. 145 008c 7047 bx lr
  210. 146 .cfi_endproc
  211. 147 .LFE0:
  212. 149 .section .text.rounddown_pow_of_two,"ax",%progbits
  213. 150 .align 1
  214. 151 .syntax unified
  215. 152 .thumb
  216. 153 .thumb_func
  217. 155 rounddown_pow_of_two:
  218. 156 .LFB1:
  219. 62:user_src/rkfifo.c ****
  220. 63:user_src/rkfifo.c **** /**
  221. 64:user_src/rkfifo.c **** * @brief 找到 n 向下取最大的 2 的幂次数
  222. 65:user_src/rkfifo.c **** *
  223. 66:user_src/rkfifo.c **** * @param n 输入整数 n
  224. 67:user_src/rkfifo.c **** * @return uint32_t n 向下取最大的 2 的幂次数
  225. 68:user_src/rkfifo.c **** */
  226. 69:user_src/rkfifo.c **** static inline uint32_t rounddown_pow_of_two(uint32_t n)
  227. 70:user_src/rkfifo.c **** {
  228. 157 .loc 1 70 1
  229. 158 .cfi_startproc
  230. 159 @ args = 0, pretend = 0, frame = 8
  231. 160 @ frame_needed = 1, uses_anonymous_args = 0
  232. 161 0000 80B5 push {r7, lr}
  233. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s page 5
  234. 162 .LCFI6:
  235. 163 .cfi_def_cfa_offset 8
  236. 164 .cfi_offset 7, -8
  237. 165 .cfi_offset 14, -4
  238. 166 0002 82B0 sub sp, sp, #8
  239. 167 .LCFI7:
  240. 168 .cfi_def_cfa_offset 16
  241. 169 0004 00AF add r7, sp, #0
  242. 170 .LCFI8:
  243. 171 .cfi_def_cfa_register 7
  244. 172 0006 7860 str r0, [r7, #4]
  245. 71:user_src/rkfifo.c **** if (0 == n || is_power_of_2(n))
  246. 173 .loc 1 71 8
  247. 174 0008 7B68 ldr r3, [r7, #4]
  248. 175 000a 002B cmp r3, #0
  249. 176 000c 08D0 beq .L10
  250. 177 .loc 1 71 16 discriminator 1
  251. 178 000e 7B68 ldr r3, [r7, #4]
  252. 179 0010 002B cmp r3, #0
  253. 180 0012 07D0 beq .L11
  254. 181 .loc 1 71 19 discriminator 2
  255. 182 0014 7B68 ldr r3, [r7, #4]
  256. 183 0016 5A1E subs r2, r3, #1
  257. 184 0018 7B68 ldr r3, [r7, #4]
  258. 185 001a 1340 ands r3, r3, r2
  259. 186 001c 002B cmp r3, #0
  260. 187 001e 01D1 bne .L11
  261. 188 .L10:
  262. 72:user_src/rkfifo.c **** {
  263. 73:user_src/rkfifo.c **** return n;
  264. 189 .loc 1 73 16
  265. 190 0020 7B68 ldr r3, [r7, #4]
  266. 191 0022 08E0 b .L12
  267. 192 .L11:
  268. 74:user_src/rkfifo.c **** }
  269. 75:user_src/rkfifo.c **** else
  270. 76:user_src/rkfifo.c **** {
  271. 77:user_src/rkfifo.c **** return 1 << (fls_int(n) - 1);
  272. 193 .loc 1 77 22
  273. 194 0024 7B68 ldr r3, [r7, #4]
  274. 195 0026 1846 mov r0, r3
  275. 196 0028 FFF7FEFF bl fls_int
  276. 197 002c 0346 mov r3, r0
  277. 198 .loc 1 77 33
  278. 199 002e 013B subs r3, r3, #1
  279. 200 .loc 1 77 18
  280. 201 0030 0122 movs r2, #1
  281. 202 0032 02FA03F3 lsl r3, r2, r3
  282. 203 .L12:
  283. 78:user_src/rkfifo.c **** }
  284. 79:user_src/rkfifo.c **** }
  285. 204 .loc 1 79 1
  286. 205 0036 1846 mov r0, r3
  287. 206 0038 0837 adds r7, r7, #8
  288. 207 .LCFI9:
  289. 208 .cfi_def_cfa_offset 8
  290. 209 003a BD46 mov sp, r7
  291. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s page 6
  292. 210 .LCFI10:
  293. 211 .cfi_def_cfa_register 13
  294. 212 @ sp needed
  295. 213 003c 80BD pop {r7, pc}
  296. 214 .cfi_endproc
  297. 215 .LFE1:
  298. 217 .section .text.kfifo_unused,"ax",%progbits
  299. 218 .align 1
  300. 219 .syntax unified
  301. 220 .thumb
  302. 221 .thumb_func
  303. 223 kfifo_unused:
  304. 224 .LFB2:
  305. 80:user_src/rkfifo.c ****
  306. 81:user_src/rkfifo.c **** /**
  307. 82:user_src/rkfifo.c **** * @brief 查找 fifo 中的剩余空间
  308. 83:user_src/rkfifo.c **** *
  309. 84:user_src/rkfifo.c **** * @param fifo
  310. 85:user_src/rkfifo.c **** * @return unsigned int
  311. 86:user_src/rkfifo.c **** */
  312. 87:user_src/rkfifo.c **** static inline unsigned int kfifo_unused(rkfifo_t *fifo)
  313. 88:user_src/rkfifo.c **** {
  314. 225 .loc 1 88 1
  315. 226 .cfi_startproc
  316. 227 @ args = 0, pretend = 0, frame = 8
  317. 228 @ frame_needed = 1, uses_anonymous_args = 0
  318. 229 @ link register save eliminated.
  319. 230 0000 80B4 push {r7}
  320. 231 .LCFI11:
  321. 232 .cfi_def_cfa_offset 4
  322. 233 .cfi_offset 7, -4
  323. 234 0002 83B0 sub sp, sp, #12
  324. 235 .LCFI12:
  325. 236 .cfi_def_cfa_offset 16
  326. 237 0004 00AF add r7, sp, #0
  327. 238 .LCFI13:
  328. 239 .cfi_def_cfa_register 7
  329. 240 0006 7860 str r0, [r7, #4]
  330. 89:user_src/rkfifo.c **** return (fifo->mask + 1) - (fifo->in - fifo->out);
  331. 241 .loc 1 89 17
  332. 242 0008 7B68 ldr r3, [r7, #4]
  333. 243 000a 9A68 ldr r2, [r3, #8]
  334. 244 .loc 1 89 47
  335. 245 000c 7B68 ldr r3, [r7, #4]
  336. 246 000e 5968 ldr r1, [r3, #4]
  337. 247 .loc 1 89 36
  338. 248 0010 7B68 ldr r3, [r7, #4]
  339. 249 0012 1B68 ldr r3, [r3]
  340. 250 .loc 1 89 41
  341. 251 0014 CB1A subs r3, r1, r3
  342. 252 .loc 1 89 29
  343. 253 0016 1344 add r3, r3, r2
  344. 254 0018 0133 adds r3, r3, #1
  345. 90:user_src/rkfifo.c **** }
  346. 255 .loc 1 90 1
  347. 256 001a 1846 mov r0, r3
  348. 257 001c 0C37 adds r7, r7, #12
  349. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s page 7
  350. 258 .LCFI14:
  351. 259 .cfi_def_cfa_offset 4
  352. 260 001e BD46 mov sp, r7
  353. 261 .LCFI15:
  354. 262 .cfi_def_cfa_register 13
  355. 263 @ sp needed
  356. 264 0020 5DF8047B ldr r7, [sp], #4
  357. 265 .LCFI16:
  358. 266 .cfi_restore 7
  359. 267 .cfi_def_cfa_offset 0
  360. 268 0024 7047 bx lr
  361. 269 .cfi_endproc
  362. 270 .LFE2:
  363. 272 .section .text.rkfifo_init,"ax",%progbits
  364. 273 .align 1
  365. 274 .global rkfifo_init
  366. 275 .syntax unified
  367. 276 .thumb
  368. 277 .thumb_func
  369. 279 rkfifo_init:
  370. 280 .LFB3:
  371. 91:user_src/rkfifo.c ****
  372. 92:user_src/rkfifo.c **** int rkfifo_init(rkfifo_t *fifo, void *buffer, uint32_t size, uint32_t esize)
  373. 93:user_src/rkfifo.c **** {
  374. 281 .loc 1 93 1
  375. 282 .cfi_startproc
  376. 283 @ args = 0, pretend = 0, frame = 16
  377. 284 @ frame_needed = 1, uses_anonymous_args = 0
  378. 285 0000 80B5 push {r7, lr}
  379. 286 .LCFI17:
  380. 287 .cfi_def_cfa_offset 8
  381. 288 .cfi_offset 7, -8
  382. 289 .cfi_offset 14, -4
  383. 290 0002 84B0 sub sp, sp, #16
  384. 291 .LCFI18:
  385. 292 .cfi_def_cfa_offset 24
  386. 293 0004 00AF add r7, sp, #0
  387. 294 .LCFI19:
  388. 295 .cfi_def_cfa_register 7
  389. 296 0006 F860 str r0, [r7, #12]
  390. 297 0008 B960 str r1, [r7, #8]
  391. 298 000a 7A60 str r2, [r7, #4]
  392. 299 000c 3B60 str r3, [r7]
  393. 94:user_src/rkfifo.c **** size /= esize;
  394. 300 .loc 1 94 10
  395. 301 000e 7A68 ldr r2, [r7, #4]
  396. 302 0010 3B68 ldr r3, [r7]
  397. 303 0012 B2FBF3F3 udiv r3, r2, r3
  398. 304 0016 7B60 str r3, [r7, #4]
  399. 95:user_src/rkfifo.c ****
  400. 96:user_src/rkfifo.c **** /* size 必须是 2 的幂次数 */
  401. 97:user_src/rkfifo.c **** if (!is_power_of_2(size))
  402. 305 .loc 1 97 8
  403. 306 0018 7B68 ldr r3, [r7, #4]
  404. 307 001a 002B cmp r3, #0
  405. 308 001c 05D0 beq .L16
  406. 309 .loc 1 97 10 discriminator 1
  407. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s page 8
  408. 310 001e 7B68 ldr r3, [r7, #4]
  409. 311 0020 5A1E subs r2, r3, #1
  410. 312 0022 7B68 ldr r3, [r7, #4]
  411. 313 0024 1340 ands r3, r3, r2
  412. 314 .loc 1 97 9 discriminator 1
  413. 315 0026 002B cmp r3, #0
  414. 316 0028 03D0 beq .L17
  415. 317 .L16:
  416. 98:user_src/rkfifo.c **** {
  417. 99:user_src/rkfifo.c **** size = rounddown_pow_of_two(size);
  418. 318 .loc 1 99 16
  419. 319 002a 7868 ldr r0, [r7, #4]
  420. 320 002c FFF7FEFF bl rounddown_pow_of_two
  421. 321 0030 7860 str r0, [r7, #4]
  422. 322 .L17:
  423. 100:user_src/rkfifo.c **** }
  424. 101:user_src/rkfifo.c ****
  425. 102:user_src/rkfifo.c **** fifo->in = 0;
  426. 323 .loc 1 102 14
  427. 324 0032 FB68 ldr r3, [r7, #12]
  428. 325 0034 0022 movs r2, #0
  429. 326 0036 1A60 str r2, [r3]
  430. 103:user_src/rkfifo.c **** fifo->out = 0;
  431. 327 .loc 1 103 15
  432. 328 0038 FB68 ldr r3, [r7, #12]
  433. 329 003a 0022 movs r2, #0
  434. 330 003c 5A60 str r2, [r3, #4]
  435. 104:user_src/rkfifo.c **** fifo->esize = esize;
  436. 331 .loc 1 104 17
  437. 332 003e FB68 ldr r3, [r7, #12]
  438. 333 0040 3A68 ldr r2, [r7]
  439. 334 0042 DA60 str r2, [r3, #12]
  440. 105:user_src/rkfifo.c **** fifo->data = buffer;
  441. 335 .loc 1 105 16
  442. 336 0044 FB68 ldr r3, [r7, #12]
  443. 337 0046 BA68 ldr r2, [r7, #8]
  444. 338 0048 1A61 str r2, [r3, #16]
  445. 106:user_src/rkfifo.c ****
  446. 107:user_src/rkfifo.c **** if (size < 2)
  447. 339 .loc 1 107 8
  448. 340 004a 7B68 ldr r3, [r7, #4]
  449. 341 004c 012B cmp r3, #1
  450. 342 004e 05D8 bhi .L18
  451. 108:user_src/rkfifo.c **** {
  452. 109:user_src/rkfifo.c **** fifo->mask = 0;
  453. 343 .loc 1 109 20
  454. 344 0050 FB68 ldr r3, [r7, #12]
  455. 345 0052 0022 movs r2, #0
  456. 346 0054 9A60 str r2, [r3, #8]
  457. 110:user_src/rkfifo.c **** return -RKFIFO_EINVAL;
  458. 347 .loc 1 110 16
  459. 348 0056 6FF01503 mvn r3, #21
  460. 349 005a 04E0 b .L19
  461. 350 .L18:
  462. 111:user_src/rkfifo.c **** }
  463. 112:user_src/rkfifo.c ****
  464. 113:user_src/rkfifo.c **** fifo->mask = size - 1;
  465. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s page 9
  466. 351 .loc 1 113 23
  467. 352 005c 7B68 ldr r3, [r7, #4]
  468. 353 005e 5A1E subs r2, r3, #1
  469. 354 .loc 1 113 16
  470. 355 0060 FB68 ldr r3, [r7, #12]
  471. 356 0062 9A60 str r2, [r3, #8]
  472. 114:user_src/rkfifo.c ****
  473. 115:user_src/rkfifo.c **** return 0;
  474. 357 .loc 1 115 12
  475. 358 0064 0023 movs r3, #0
  476. 359 .L19:
  477. 116:user_src/rkfifo.c **** }
  478. 360 .loc 1 116 1
  479. 361 0066 1846 mov r0, r3
  480. 362 0068 1037 adds r7, r7, #16
  481. 363 .LCFI20:
  482. 364 .cfi_def_cfa_offset 8
  483. 365 006a BD46 mov sp, r7
  484. 366 .LCFI21:
  485. 367 .cfi_def_cfa_register 13
  486. 368 @ sp needed
  487. 369 006c 80BD pop {r7, pc}
  488. 370 .cfi_endproc
  489. 371 .LFE3:
  490. 373 .section .text.__rkfifo_copy_in,"ax",%progbits
  491. 374 .align 1
  492. 375 .syntax unified
  493. 376 .thumb
  494. 377 .thumb_func
  495. 379 __rkfifo_copy_in:
  496. 380 .LFB4:
  497. 117:user_src/rkfifo.c ****
  498. 118:user_src/rkfifo.c **** static void __rkfifo_copy_in(rkfifo_t *fifo, const void *src, unsigned int len,
  499. 119:user_src/rkfifo.c **** unsigned int offset)
  500. 120:user_src/rkfifo.c **** {
  501. 381 .loc 1 120 1
  502. 382 .cfi_startproc
  503. 383 @ args = 0, pretend = 0, frame = 40
  504. 384 @ frame_needed = 1, uses_anonymous_args = 0
  505. 385 0000 80B5 push {r7, lr}
  506. 386 .LCFI22:
  507. 387 .cfi_def_cfa_offset 8
  508. 388 .cfi_offset 7, -8
  509. 389 .cfi_offset 14, -4
  510. 390 0002 8AB0 sub sp, sp, #40
  511. 391 .LCFI23:
  512. 392 .cfi_def_cfa_offset 48
  513. 393 0004 00AF add r7, sp, #0
  514. 394 .LCFI24:
  515. 395 .cfi_def_cfa_register 7
  516. 396 0006 F860 str r0, [r7, #12]
  517. 397 0008 B960 str r1, [r7, #8]
  518. 398 000a 7A60 str r2, [r7, #4]
  519. 399 000c 3B60 str r3, [r7]
  520. 121:user_src/rkfifo.c **** unsigned int size = fifo->mask + 1;
  521. 400 .loc 1 121 29
  522. 401 000e FB68 ldr r3, [r7, #12]
  523. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s page 10
  524. 402 0010 9B68 ldr r3, [r3, #8]
  525. 403 .loc 1 121 18
  526. 404 0012 0133 adds r3, r3, #1
  527. 405 0014 7B62 str r3, [r7, #36]
  528. 122:user_src/rkfifo.c **** unsigned int esize = fifo->esize;
  529. 406 .loc 1 122 18
  530. 407 0016 FB68 ldr r3, [r7, #12]
  531. 408 0018 DB68 ldr r3, [r3, #12]
  532. 409 001a 3B62 str r3, [r7, #32]
  533. 123:user_src/rkfifo.c **** unsigned int l;
  534. 124:user_src/rkfifo.c ****
  535. 125:user_src/rkfifo.c **** offset &= fifo->mask;
  536. 410 .loc 1 125 19
  537. 411 001c FB68 ldr r3, [r7, #12]
  538. 412 001e 9B68 ldr r3, [r3, #8]
  539. 413 .loc 1 125 12
  540. 414 0020 3A68 ldr r2, [r7]
  541. 415 0022 1340 ands r3, r3, r2
  542. 416 0024 3B60 str r3, [r7]
  543. 126:user_src/rkfifo.c **** if (esize != 1)
  544. 417 .loc 1 126 8
  545. 418 0026 3B6A ldr r3, [r7, #32]
  546. 419 0028 012B cmp r3, #1
  547. 420 002a 0ED0 beq .L21
  548. 127:user_src/rkfifo.c **** {
  549. 128:user_src/rkfifo.c **** offset *= esize;
  550. 421 .loc 1 128 16
  551. 422 002c 3B68 ldr r3, [r7]
  552. 423 002e 3A6A ldr r2, [r7, #32]
  553. 424 0030 02FB03F3 mul r3, r2, r3
  554. 425 0034 3B60 str r3, [r7]
  555. 129:user_src/rkfifo.c **** size *= esize;
  556. 426 .loc 1 129 14
  557. 427 0036 7B6A ldr r3, [r7, #36]
  558. 428 0038 3A6A ldr r2, [r7, #32]
  559. 429 003a 02FB03F3 mul r3, r2, r3
  560. 430 003e 7B62 str r3, [r7, #36]
  561. 130:user_src/rkfifo.c **** len *= esize;
  562. 431 .loc 1 130 13
  563. 432 0040 7B68 ldr r3, [r7, #4]
  564. 433 0042 3A6A ldr r2, [r7, #32]
  565. 434 0044 02FB03F3 mul r3, r2, r3
  566. 435 0048 7B60 str r3, [r7, #4]
  567. 436 .L21:
  568. 437 .LBB2:
  569. 131:user_src/rkfifo.c **** }
  570. 132:user_src/rkfifo.c **** l = min(len, size - offset);
  571. 438 .loc 1 132 9
  572. 439 004a 7B68 ldr r3, [r7, #4]
  573. 440 004c BB61 str r3, [r7, #24]
  574. 441 004e 7A6A ldr r2, [r7, #36]
  575. 442 0050 3B68 ldr r3, [r7]
  576. 443 0052 D31A subs r3, r2, r3
  577. 444 0054 7B61 str r3, [r7, #20]
  578. 445 0056 7A69 ldr r2, [r7, #20]
  579. 446 0058 BB69 ldr r3, [r7, #24]
  580. 447 005a 9342 cmp r3, r2
  581. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s page 11
  582. 448 005c 28BF it cs
  583. 449 005e 1346 movcs r3, r2
  584. 450 .LBE2:
  585. 451 .loc 1 132 7
  586. 452 0060 FB61 str r3, [r7, #28]
  587. 133:user_src/rkfifo.c ****
  588. 134:user_src/rkfifo.c **** memcpy((uint8_t*)fifo->data + offset, src, l);
  589. 453 .loc 1 134 26
  590. 454 0062 FB68 ldr r3, [r7, #12]
  591. 455 0064 1A69 ldr r2, [r3, #16]
  592. 456 .loc 1 134 5
  593. 457 0066 3B68 ldr r3, [r7]
  594. 458 0068 1344 add r3, r3, r2
  595. 459 006a FA69 ldr r2, [r7, #28]
  596. 460 006c B968 ldr r1, [r7, #8]
  597. 461 006e 1846 mov r0, r3
  598. 462 0070 FFF7FEFF bl memcpy
  599. 135:user_src/rkfifo.c **** memcpy(fifo->data, (uint8_t*)src + l, len - l);
  600. 463 .loc 1 135 5
  601. 464 0074 FB68 ldr r3, [r7, #12]
  602. 465 0076 1869 ldr r0, [r3, #16]
  603. 466 0078 BA68 ldr r2, [r7, #8]
  604. 467 007a FB69 ldr r3, [r7, #28]
  605. 468 007c D118 adds r1, r2, r3
  606. 469 007e 7A68 ldr r2, [r7, #4]
  607. 470 0080 FB69 ldr r3, [r7, #28]
  608. 471 0082 D31A subs r3, r2, r3
  609. 472 0084 1A46 mov r2, r3
  610. 473 0086 FFF7FEFF bl memcpy
  611. 136:user_src/rkfifo.c ****
  612. 137:user_src/rkfifo.c **** /* 多核处理器需要内存屏障 */
  613. 138:user_src/rkfifo.c **** /* smp_wmb(); */
  614. 139:user_src/rkfifo.c **** }
  615. 474 .loc 1 139 1
  616. 475 008a 00BF nop
  617. 476 008c 2837 adds r7, r7, #40
  618. 477 .LCFI25:
  619. 478 .cfi_def_cfa_offset 8
  620. 479 008e BD46 mov sp, r7
  621. 480 .LCFI26:
  622. 481 .cfi_def_cfa_register 13
  623. 482 @ sp needed
  624. 483 0090 80BD pop {r7, pc}
  625. 484 .cfi_endproc
  626. 485 .LFE4:
  627. 487 .section .text.rkfifo_in,"ax",%progbits
  628. 488 .align 1
  629. 489 .global rkfifo_in
  630. 490 .syntax unified
  631. 491 .thumb
  632. 492 .thumb_func
  633. 494 rkfifo_in:
  634. 495 .LFB5:
  635. 140:user_src/rkfifo.c ****
  636. 141:user_src/rkfifo.c **** unsigned int rkfifo_in(rkfifo_t *fifo, const void *buf, unsigned int len)
  637. 142:user_src/rkfifo.c **** {
  638. 496 .loc 1 142 1
  639. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s page 12
  640. 497 .cfi_startproc
  641. 498 @ args = 0, pretend = 0, frame = 24
  642. 499 @ frame_needed = 1, uses_anonymous_args = 0
  643. 500 0000 80B5 push {r7, lr}
  644. 501 .LCFI27:
  645. 502 .cfi_def_cfa_offset 8
  646. 503 .cfi_offset 7, -8
  647. 504 .cfi_offset 14, -4
  648. 505 0002 86B0 sub sp, sp, #24
  649. 506 .LCFI28:
  650. 507 .cfi_def_cfa_offset 32
  651. 508 0004 00AF add r7, sp, #0
  652. 509 .LCFI29:
  653. 510 .cfi_def_cfa_register 7
  654. 511 0006 F860 str r0, [r7, #12]
  655. 512 0008 B960 str r1, [r7, #8]
  656. 513 000a 7A60 str r2, [r7, #4]
  657. 143:user_src/rkfifo.c **** unsigned int l;
  658. 144:user_src/rkfifo.c ****
  659. 145:user_src/rkfifo.c **** l = kfifo_unused(fifo);
  660. 514 .loc 1 145 9
  661. 515 000c F868 ldr r0, [r7, #12]
  662. 516 000e FFF7FEFF bl kfifo_unused
  663. 517 0012 7861 str r0, [r7, #20]
  664. 146:user_src/rkfifo.c ****
  665. 147:user_src/rkfifo.c **** if (len > l)
  666. 518 .loc 1 147 8
  667. 519 0014 7A68 ldr r2, [r7, #4]
  668. 520 0016 7B69 ldr r3, [r7, #20]
  669. 521 0018 9A42 cmp r2, r3
  670. 522 001a 06D9 bls .L23
  671. 148:user_src/rkfifo.c **** {
  672. 149:user_src/rkfifo.c **** len = l;
  673. 523 .loc 1 149 13
  674. 524 001c 7B69 ldr r3, [r7, #20]
  675. 525 001e 7B60 str r3, [r7, #4]
  676. 150:user_src/rkfifo.c **** fifo->error++;
  677. 526 .loc 1 150 13
  678. 527 0020 FB68 ldr r3, [r7, #12]
  679. 528 0022 5B69 ldr r3, [r3, #20]
  680. 529 .loc 1 150 20
  681. 530 0024 5A1C adds r2, r3, #1
  682. 531 0026 FB68 ldr r3, [r7, #12]
  683. 532 0028 5A61 str r2, [r3, #20]
  684. 533 .L23:
  685. 151:user_src/rkfifo.c **** }
  686. 152:user_src/rkfifo.c ****
  687. 153:user_src/rkfifo.c **** __rkfifo_copy_in(fifo, buf, len, fifo->in);
  688. 534 .loc 1 153 42
  689. 535 002a FB68 ldr r3, [r7, #12]
  690. 536 002c 1B68 ldr r3, [r3]
  691. 537 .loc 1 153 5
  692. 538 002e 7A68 ldr r2, [r7, #4]
  693. 539 0030 B968 ldr r1, [r7, #8]
  694. 540 0032 F868 ldr r0, [r7, #12]
  695. 541 0034 FFF7FEFF bl __rkfifo_copy_in
  696. 154:user_src/rkfifo.c **** fifo->in += len;
  697. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s page 13
  698. 542 .loc 1 154 14
  699. 543 0038 FB68 ldr r3, [r7, #12]
  700. 544 003a 1A68 ldr r2, [r3]
  701. 545 003c 7B68 ldr r3, [r7, #4]
  702. 546 003e 1A44 add r2, r2, r3
  703. 547 0040 FB68 ldr r3, [r7, #12]
  704. 548 0042 1A60 str r2, [r3]
  705. 155:user_src/rkfifo.c **** return len;
  706. 549 .loc 1 155 12
  707. 550 0044 7B68 ldr r3, [r7, #4]
  708. 156:user_src/rkfifo.c **** }
  709. 551 .loc 1 156 1
  710. 552 0046 1846 mov r0, r3
  711. 553 0048 1837 adds r7, r7, #24
  712. 554 .LCFI30:
  713. 555 .cfi_def_cfa_offset 8
  714. 556 004a BD46 mov sp, r7
  715. 557 .LCFI31:
  716. 558 .cfi_def_cfa_register 13
  717. 559 @ sp needed
  718. 560 004c 80BD pop {r7, pc}
  719. 561 .cfi_endproc
  720. 562 .LFE5:
  721. 564 .section .text.__rkfifo_copy_out,"ax",%progbits
  722. 565 .align 1
  723. 566 .syntax unified
  724. 567 .thumb
  725. 568 .thumb_func
  726. 570 __rkfifo_copy_out:
  727. 571 .LFB6:
  728. 157:user_src/rkfifo.c ****
  729. 158:user_src/rkfifo.c **** static void __rkfifo_copy_out(rkfifo_t *fifo, void *dst, unsigned int len,
  730. 159:user_src/rkfifo.c **** unsigned int off)
  731. 160:user_src/rkfifo.c **** {
  732. 572 .loc 1 160 1
  733. 573 .cfi_startproc
  734. 574 @ args = 0, pretend = 0, frame = 40
  735. 575 @ frame_needed = 1, uses_anonymous_args = 0
  736. 576 0000 80B5 push {r7, lr}
  737. 577 .LCFI32:
  738. 578 .cfi_def_cfa_offset 8
  739. 579 .cfi_offset 7, -8
  740. 580 .cfi_offset 14, -4
  741. 581 0002 8AB0 sub sp, sp, #40
  742. 582 .LCFI33:
  743. 583 .cfi_def_cfa_offset 48
  744. 584 0004 00AF add r7, sp, #0
  745. 585 .LCFI34:
  746. 586 .cfi_def_cfa_register 7
  747. 587 0006 F860 str r0, [r7, #12]
  748. 588 0008 B960 str r1, [r7, #8]
  749. 589 000a 7A60 str r2, [r7, #4]
  750. 590 000c 3B60 str r3, [r7]
  751. 161:user_src/rkfifo.c **** unsigned int size = fifo->mask + 1;
  752. 591 .loc 1 161 29
  753. 592 000e FB68 ldr r3, [r7, #12]
  754. 593 0010 9B68 ldr r3, [r3, #8]
  755. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s page 14
  756. 594 .loc 1 161 18
  757. 595 0012 0133 adds r3, r3, #1
  758. 596 0014 7B62 str r3, [r7, #36]
  759. 162:user_src/rkfifo.c **** unsigned int esize = fifo->esize;
  760. 597 .loc 1 162 18
  761. 598 0016 FB68 ldr r3, [r7, #12]
  762. 599 0018 DB68 ldr r3, [r3, #12]
  763. 600 001a 3B62 str r3, [r7, #32]
  764. 163:user_src/rkfifo.c **** unsigned int l;
  765. 164:user_src/rkfifo.c ****
  766. 165:user_src/rkfifo.c **** off &= fifo->mask;
  767. 601 .loc 1 165 16
  768. 602 001c FB68 ldr r3, [r7, #12]
  769. 603 001e 9B68 ldr r3, [r3, #8]
  770. 604 .loc 1 165 9
  771. 605 0020 3A68 ldr r2, [r7]
  772. 606 0022 1340 ands r3, r3, r2
  773. 607 0024 3B60 str r3, [r7]
  774. 166:user_src/rkfifo.c **** if (esize != 1)
  775. 608 .loc 1 166 8
  776. 609 0026 3B6A ldr r3, [r7, #32]
  777. 610 0028 012B cmp r3, #1
  778. 611 002a 0ED0 beq .L26
  779. 167:user_src/rkfifo.c **** {
  780. 168:user_src/rkfifo.c **** off *= esize;
  781. 612 .loc 1 168 13
  782. 613 002c 3B68 ldr r3, [r7]
  783. 614 002e 3A6A ldr r2, [r7, #32]
  784. 615 0030 02FB03F3 mul r3, r2, r3
  785. 616 0034 3B60 str r3, [r7]
  786. 169:user_src/rkfifo.c **** size *= esize;
  787. 617 .loc 1 169 14
  788. 618 0036 7B6A ldr r3, [r7, #36]
  789. 619 0038 3A6A ldr r2, [r7, #32]
  790. 620 003a 02FB03F3 mul r3, r2, r3
  791. 621 003e 7B62 str r3, [r7, #36]
  792. 170:user_src/rkfifo.c **** len *= esize;
  793. 622 .loc 1 170 13
  794. 623 0040 7B68 ldr r3, [r7, #4]
  795. 624 0042 3A6A ldr r2, [r7, #32]
  796. 625 0044 02FB03F3 mul r3, r2, r3
  797. 626 0048 7B60 str r3, [r7, #4]
  798. 627 .L26:
  799. 628 .LBB3:
  800. 171:user_src/rkfifo.c **** }
  801. 172:user_src/rkfifo.c **** l = min(len, size - off);
  802. 629 .loc 1 172 9
  803. 630 004a 7B68 ldr r3, [r7, #4]
  804. 631 004c BB61 str r3, [r7, #24]
  805. 632 004e 7A6A ldr r2, [r7, #36]
  806. 633 0050 3B68 ldr r3, [r7]
  807. 634 0052 D31A subs r3, r2, r3
  808. 635 0054 7B61 str r3, [r7, #20]
  809. 636 0056 7A69 ldr r2, [r7, #20]
  810. 637 0058 BB69 ldr r3, [r7, #24]
  811. 638 005a 9342 cmp r3, r2
  812. 639 005c 28BF it cs
  813. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s page 15
  814. 640 005e 1346 movcs r3, r2
  815. 641 .LBE3:
  816. 642 .loc 1 172 7
  817. 643 0060 FB61 str r3, [r7, #28]
  818. 173:user_src/rkfifo.c ****
  819. 174:user_src/rkfifo.c **** memcpy(dst, (uint8_t*)fifo->data + off, l);
  820. 644 .loc 1 174 31
  821. 645 0062 FB68 ldr r3, [r7, #12]
  822. 646 0064 1A69 ldr r2, [r3, #16]
  823. 647 .loc 1 174 5
  824. 648 0066 3B68 ldr r3, [r7]
  825. 649 0068 1344 add r3, r3, r2
  826. 650 006a FA69 ldr r2, [r7, #28]
  827. 651 006c 1946 mov r1, r3
  828. 652 006e B868 ldr r0, [r7, #8]
  829. 653 0070 FFF7FEFF bl memcpy
  830. 175:user_src/rkfifo.c **** memcpy((uint8_t*)dst + l, fifo->data, len - l);
  831. 654 .loc 1 175 5
  832. 655 0074 BA68 ldr r2, [r7, #8]
  833. 656 0076 FB69 ldr r3, [r7, #28]
  834. 657 0078 D018 adds r0, r2, r3
  835. 658 .loc 1 175 35
  836. 659 007a FB68 ldr r3, [r7, #12]
  837. 660 007c 1969 ldr r1, [r3, #16]
  838. 661 .loc 1 175 5
  839. 662 007e 7A68 ldr r2, [r7, #4]
  840. 663 0080 FB69 ldr r3, [r7, #28]
  841. 664 0082 D31A subs r3, r2, r3
  842. 665 0084 1A46 mov r2, r3
  843. 666 0086 FFF7FEFF bl memcpy
  844. 176:user_src/rkfifo.c ****
  845. 177:user_src/rkfifo.c **** /* smp_wmb(); */
  846. 178:user_src/rkfifo.c **** }
  847. 667 .loc 1 178 1
  848. 668 008a 00BF nop
  849. 669 008c 2837 adds r7, r7, #40
  850. 670 .LCFI35:
  851. 671 .cfi_def_cfa_offset 8
  852. 672 008e BD46 mov sp, r7
  853. 673 .LCFI36:
  854. 674 .cfi_def_cfa_register 13
  855. 675 @ sp needed
  856. 676 0090 80BD pop {r7, pc}
  857. 677 .cfi_endproc
  858. 678 .LFE6:
  859. 680 .section .text.rkfifo_out_peek,"ax",%progbits
  860. 681 .align 1
  861. 682 .global rkfifo_out_peek
  862. 683 .syntax unified
  863. 684 .thumb
  864. 685 .thumb_func
  865. 687 rkfifo_out_peek:
  866. 688 .LFB7:
  867. 179:user_src/rkfifo.c ****
  868. 180:user_src/rkfifo.c **** unsigned int rkfifo_out_peek(rkfifo_t *fifo, void *buf, unsigned int len)
  869. 181:user_src/rkfifo.c **** {
  870. 689 .loc 1 181 1
  871. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s page 16
  872. 690 .cfi_startproc
  873. 691 @ args = 0, pretend = 0, frame = 24
  874. 692 @ frame_needed = 1, uses_anonymous_args = 0
  875. 693 0000 80B5 push {r7, lr}
  876. 694 .LCFI37:
  877. 695 .cfi_def_cfa_offset 8
  878. 696 .cfi_offset 7, -8
  879. 697 .cfi_offset 14, -4
  880. 698 0002 86B0 sub sp, sp, #24
  881. 699 .LCFI38:
  882. 700 .cfi_def_cfa_offset 32
  883. 701 0004 00AF add r7, sp, #0
  884. 702 .LCFI39:
  885. 703 .cfi_def_cfa_register 7
  886. 704 0006 F860 str r0, [r7, #12]
  887. 705 0008 B960 str r1, [r7, #8]
  888. 706 000a 7A60 str r2, [r7, #4]
  889. 182:user_src/rkfifo.c **** unsigned int l;
  890. 183:user_src/rkfifo.c ****
  891. 184:user_src/rkfifo.c **** l = fifo->in - fifo->out;
  892. 707 .loc 1 184 13
  893. 708 000c FB68 ldr r3, [r7, #12]
  894. 709 000e 1A68 ldr r2, [r3]
  895. 710 .loc 1 184 24
  896. 711 0010 FB68 ldr r3, [r7, #12]
  897. 712 0012 5B68 ldr r3, [r3, #4]
  898. 713 .loc 1 184 7
  899. 714 0014 D31A subs r3, r2, r3
  900. 715 0016 7B61 str r3, [r7, #20]
  901. 185:user_src/rkfifo.c **** if (len > l)
  902. 716 .loc 1 185 8
  903. 717 0018 7A68 ldr r2, [r7, #4]
  904. 718 001a 7B69 ldr r3, [r7, #20]
  905. 719 001c 9A42 cmp r2, r3
  906. 720 001e 01D9 bls .L28
  907. 186:user_src/rkfifo.c **** len = l;
  908. 721 .loc 1 186 13
  909. 722 0020 7B69 ldr r3, [r7, #20]
  910. 723 0022 7B60 str r3, [r7, #4]
  911. 724 .L28:
  912. 187:user_src/rkfifo.c ****
  913. 188:user_src/rkfifo.c **** __rkfifo_copy_out(fifo, buf, len, fifo->out);
  914. 725 .loc 1 188 43
  915. 726 0024 FB68 ldr r3, [r7, #12]
  916. 727 0026 5B68 ldr r3, [r3, #4]
  917. 728 .loc 1 188 5
  918. 729 0028 7A68 ldr r2, [r7, #4]
  919. 730 002a B968 ldr r1, [r7, #8]
  920. 731 002c F868 ldr r0, [r7, #12]
  921. 732 002e FFF7FEFF bl __rkfifo_copy_out
  922. 189:user_src/rkfifo.c **** return len;
  923. 733 .loc 1 189 12
  924. 734 0032 7B68 ldr r3, [r7, #4]
  925. 190:user_src/rkfifo.c **** }
  926. 735 .loc 1 190 1
  927. 736 0034 1846 mov r0, r3
  928. 737 0036 1837 adds r7, r7, #24
  929. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s page 17
  930. 738 .LCFI40:
  931. 739 .cfi_def_cfa_offset 8
  932. 740 0038 BD46 mov sp, r7
  933. 741 .LCFI41:
  934. 742 .cfi_def_cfa_register 13
  935. 743 @ sp needed
  936. 744 003a 80BD pop {r7, pc}
  937. 745 .cfi_endproc
  938. 746 .LFE7:
  939. 748 .section .text.rkfifo_out,"ax",%progbits
  940. 749 .align 1
  941. 750 .global rkfifo_out
  942. 751 .syntax unified
  943. 752 .thumb
  944. 753 .thumb_func
  945. 755 rkfifo_out:
  946. 756 .LFB8:
  947. 191:user_src/rkfifo.c ****
  948. 192:user_src/rkfifo.c **** unsigned int rkfifo_out(rkfifo_t *fifo, void *buf, unsigned int len)
  949. 193:user_src/rkfifo.c **** {
  950. 757 .loc 1 193 1
  951. 758 .cfi_startproc
  952. 759 @ args = 0, pretend = 0, frame = 16
  953. 760 @ frame_needed = 1, uses_anonymous_args = 0
  954. 761 0000 80B5 push {r7, lr}
  955. 762 .LCFI42:
  956. 763 .cfi_def_cfa_offset 8
  957. 764 .cfi_offset 7, -8
  958. 765 .cfi_offset 14, -4
  959. 766 0002 84B0 sub sp, sp, #16
  960. 767 .LCFI43:
  961. 768 .cfi_def_cfa_offset 24
  962. 769 0004 00AF add r7, sp, #0
  963. 770 .LCFI44:
  964. 771 .cfi_def_cfa_register 7
  965. 772 0006 F860 str r0, [r7, #12]
  966. 773 0008 B960 str r1, [r7, #8]
  967. 774 000a 7A60 str r2, [r7, #4]
  968. 194:user_src/rkfifo.c **** len = rkfifo_out_peek(fifo, buf, len);
  969. 775 .loc 1 194 11
  970. 776 000c 7A68 ldr r2, [r7, #4]
  971. 777 000e B968 ldr r1, [r7, #8]
  972. 778 0010 F868 ldr r0, [r7, #12]
  973. 779 0012 FFF7FEFF bl rkfifo_out_peek
  974. 780 0016 7860 str r0, [r7, #4]
  975. 195:user_src/rkfifo.c **** fifo->out += len;
  976. 781 .loc 1 195 15
  977. 782 0018 FB68 ldr r3, [r7, #12]
  978. 783 001a 5A68 ldr r2, [r3, #4]
  979. 784 001c 7B68 ldr r3, [r7, #4]
  980. 785 001e 1A44 add r2, r2, r3
  981. 786 0020 FB68 ldr r3, [r7, #12]
  982. 787 0022 5A60 str r2, [r3, #4]
  983. 196:user_src/rkfifo.c **** return len;
  984. 788 .loc 1 196 12
  985. 789 0024 7B68 ldr r3, [r7, #4]
  986. 197:user_src/rkfifo.c **** }
  987. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s page 18
  988. 790 .loc 1 197 1
  989. 791 0026 1846 mov r0, r3
  990. 792 0028 1037 adds r7, r7, #16
  991. 793 .LCFI45:
  992. 794 .cfi_def_cfa_offset 8
  993. 795 002a BD46 mov sp, r7
  994. 796 .LCFI46:
  995. 797 .cfi_def_cfa_register 13
  996. 798 @ sp needed
  997. 799 002c 80BD pop {r7, pc}
  998. 800 .cfi_endproc
  999. 801 .LFE8:
  1000. 803 .text
  1001. 804 .Letext0:
  1002. 805 .file 2 "d:\\arm-gcc\\arm-none-eabi\\include\\machine\\_default_types.h"
  1003. 806 .file 3 "d:\\arm-gcc\\arm-none-eabi\\include\\sys\\_stdint.h"
  1004. 807 .file 4 "user_inc/rkfifo.h"
  1005. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s page 19
  1006. DEFINED SYMBOLS
  1007. *ABS*:00000000 rkfifo.c
  1008. C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s:20 .text.fls_int:00000000 $t
  1009. C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s:25 .text.fls_int:00000000 fls_int
  1010. C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s:150 .text.rounddown_pow_of_two:00000000 $t
  1011. C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s:155 .text.rounddown_pow_of_two:00000000 rounddown_pow_of_two
  1012. C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s:218 .text.kfifo_unused:00000000 $t
  1013. C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s:223 .text.kfifo_unused:00000000 kfifo_unused
  1014. C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s:273 .text.rkfifo_init:00000000 $t
  1015. C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s:279 .text.rkfifo_init:00000000 rkfifo_init
  1016. C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s:374 .text.__rkfifo_copy_in:00000000 $t
  1017. C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s:379 .text.__rkfifo_copy_in:00000000 __rkfifo_copy_in
  1018. C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s:488 .text.rkfifo_in:00000000 $t
  1019. C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s:494 .text.rkfifo_in:00000000 rkfifo_in
  1020. C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s:565 .text.__rkfifo_copy_out:00000000 $t
  1021. C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s:570 .text.__rkfifo_copy_out:00000000 __rkfifo_copy_out
  1022. C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s:681 .text.rkfifo_out_peek:00000000 $t
  1023. C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s:687 .text.rkfifo_out_peek:00000000 rkfifo_out_peek
  1024. C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s:749 .text.rkfifo_out:00000000 $t
  1025. C:\Users\zl835\AppData\Local\Temp\ccd7h6eA.s:755 .text.rkfifo_out:00000000 rkfifo_out
  1026. UNDEFINED SYMBOLS
  1027. memcpy