ARM GAS /tmp/ccH4oDXT.s page 1 1 .cpu cortex-m0 2 .eabi_attribute 20, 1 3 .eabi_attribute 21, 1 4 .eabi_attribute 23, 3 5 .eabi_attribute 24, 1 6 .eabi_attribute 25, 1 7 .eabi_attribute 26, 1 8 .eabi_attribute 30, 1 9 .eabi_attribute 34, 0 10 .eabi_attribute 18, 4 11 .file "curebuffer.c" 12 .text 13 .Ltext0: 14 .cfi_sections .debug_frame 15 .section .text.cureRingBufferU8Free,"ax",%progbits 16 .align 1 17 .global cureRingBufferU8Free 18 .syntax unified 19 .code 16 20 .thumb_func 21 .fpu softvfp 23 cureRingBufferU8Free: 24 .LFB1: 25 .file 1 "Src/curelib_src/curebuffer.c" 1:Src/curelib_src/curebuffer.c **** /* 2:Src/curelib_src/curebuffer.c **** ******************************************************************************* 3:Src/curelib_src/curebuffer.c **** * [curebuffer.c] 4:Src/curelib_src/curebuffer.c **** * This module is for FIFO buffer. 5:Src/curelib_src/curebuffer.c **** * 6:Src/curelib_src/curebuffer.c **** * This program is under the terms of the GPLv3. 7:Src/curelib_src/curebuffer.c **** * https://www.gnu.org/licenses/gpl-3.0.html 8:Src/curelib_src/curebuffer.c **** * 9:Src/curelib_src/curebuffer.c **** * Copyright(c) 2017 Keshikan (www.keshikan.net) 10:Src/curelib_src/curebuffer.c **** ******************************************************************************* 11:Src/curelib_src/curebuffer.c **** */ 12:Src/curelib_src/curebuffer.c **** 13:Src/curelib_src/curebuffer.c **** #include "curebuffer.h" 14:Src/curelib_src/curebuffer.c **** #include 15:Src/curelib_src/curebuffer.c **** #include 16:Src/curelib_src/curebuffer.c **** 17:Src/curelib_src/curebuffer.c **** 18:Src/curelib_src/curebuffer.c **** ///////////////////////////// 19:Src/curelib_src/curebuffer.c **** //methods for uint8_t FIFO. 20:Src/curelib_src/curebuffer.c **** ///////////////////////////// 21:Src/curelib_src/curebuffer.c **** 22:Src/curelib_src/curebuffer.c **** BUFFER_STATUS cureRingBufferU8Init(RingBufferU8 *rbuf, uint16_t buflen) 23:Src/curelib_src/curebuffer.c **** { 24:Src/curelib_src/curebuffer.c **** 25:Src/curelib_src/curebuffer.c **** uint32_t i; 26:Src/curelib_src/curebuffer.c **** 27:Src/curelib_src/curebuffer.c **** cureRingBufferU8Free(rbuf); 28:Src/curelib_src/curebuffer.c **** 29:Src/curelib_src/curebuffer.c **** rbuf->buffer = (uint8_t *)malloc( buflen * sizeof(uint8_t) ); 30:Src/curelib_src/curebuffer.c **** if(NULL == rbuf->buffer){ 31:Src/curelib_src/curebuffer.c **** return BUFFER_FAILURE; 32:Src/curelib_src/curebuffer.c **** } 33:Src/curelib_src/curebuffer.c **** for(i=0; ibuffer[i] = 0; 35:Src/curelib_src/curebuffer.c **** } 36:Src/curelib_src/curebuffer.c **** 37:Src/curelib_src/curebuffer.c **** rbuf->length = buflen; 38:Src/curelib_src/curebuffer.c **** 39:Src/curelib_src/curebuffer.c **** return BUFFER_SUCCESS; 40:Src/curelib_src/curebuffer.c **** } 41:Src/curelib_src/curebuffer.c **** 42:Src/curelib_src/curebuffer.c **** BUFFER_STATUS cureRingBufferU8Free(RingBufferU8 *rbuf) 43:Src/curelib_src/curebuffer.c **** { 26 .loc 1 43 0 27 .cfi_startproc 28 @ args = 0, pretend = 0, frame = 0 29 @ frame_needed = 0, uses_anonymous_args = 0 30 .LVL0: 31 0000 10B5 push {r4, lr} 32 .LCFI0: 33 .cfi_def_cfa_offset 8 34 .cfi_offset 4, -8 35 .cfi_offset 14, -4 36 0002 0400 movs r4, r0 44:Src/curelib_src/curebuffer.c **** if(NULL != rbuf->buffer){ 37 .loc 1 44 0 38 0004 8068 ldr r0, [r0, #8] 39 .LVL1: 40 0006 0028 cmp r0, #0 41 0008 01D0 beq .L2 45:Src/curelib_src/curebuffer.c **** free(rbuf->buffer); 42 .loc 1 45 0 43 000a FFF7FEFF bl free 44 .LVL2: 45 .L2: 46:Src/curelib_src/curebuffer.c **** } 47:Src/curelib_src/curebuffer.c **** 48:Src/curelib_src/curebuffer.c **** rbuf->idx_front = rbuf->idx_rear = 0; 46 .loc 1 48 0 47 000e 0023 movs r3, #0 48 0010 6380 strh r3, [r4, #2] 49 0012 2380 strh r3, [r4] 49:Src/curelib_src/curebuffer.c **** rbuf->length = 0; 50 .loc 1 49 0 51 0014 A380 strh r3, [r4, #4] 50:Src/curelib_src/curebuffer.c **** 51:Src/curelib_src/curebuffer.c **** return BUFFER_SUCCESS; 52:Src/curelib_src/curebuffer.c **** } 52 .loc 1 52 0 53 0016 0120 movs r0, #1 54 @ sp needed 55 .LVL3: 56 0018 10BD pop {r4, pc} 57 .cfi_endproc 58 .LFE1: 60 .section .text.cureRingBufferU8Init,"ax",%progbits 61 .align 1 62 .global cureRingBufferU8Init 63 .syntax unified 64 .code 16 ARM GAS /tmp/ccH4oDXT.s page 3 65 .thumb_func 66 .fpu softvfp 68 cureRingBufferU8Init: 69 .LFB0: 23:Src/curelib_src/curebuffer.c **** 70 .loc 1 23 0 71 .cfi_startproc 72 @ args = 0, pretend = 0, frame = 0 73 @ frame_needed = 0, uses_anonymous_args = 0 74 .LVL4: 75 0000 70B5 push {r4, r5, r6, lr} 76 .LCFI1: 77 .cfi_def_cfa_offset 16 78 .cfi_offset 4, -16 79 .cfi_offset 5, -12 80 .cfi_offset 6, -8 81 .cfi_offset 14, -4 82 0002 0500 movs r5, r0 83 0004 0C00 movs r4, r1 27:Src/curelib_src/curebuffer.c **** 84 .loc 1 27 0 85 0006 FFF7FEFF bl cureRingBufferU8Free 86 .LVL5: 29:Src/curelib_src/curebuffer.c **** if(NULL == rbuf->buffer){ 87 .loc 1 29 0 88 000a 2600 movs r6, r4 89 000c 2000 movs r0, r4 90 000e FFF7FEFF bl malloc 91 .LVL6: 92 0012 A860 str r0, [r5, #8] 30:Src/curelib_src/curebuffer.c **** return BUFFER_FAILURE; 93 .loc 1 30 0 94 0014 0028 cmp r0, #0 95 0016 0BD0 beq .L7 33:Src/curelib_src/curebuffer.c **** rbuf->buffer[i] = 0; 96 .loc 1 33 0 97 0018 0023 movs r3, #0 98 001a 04E0 b .L5 99 .LVL7: 100 .L6: 34:Src/curelib_src/curebuffer.c **** } 101 .loc 1 34 0 discriminator 3 102 001c AA68 ldr r2, [r5, #8] 103 001e D218 adds r2, r2, r3 104 0020 0021 movs r1, #0 105 0022 1170 strb r1, [r2] 33:Src/curelib_src/curebuffer.c **** rbuf->buffer[i] = 0; 106 .loc 1 33 0 discriminator 3 107 0024 0133 adds r3, r3, #1 108 .LVL8: 109 .L5: 33:Src/curelib_src/curebuffer.c **** rbuf->buffer[i] = 0; 110 .loc 1 33 0 is_stmt 0 discriminator 1 111 0026 9E42 cmp r6, r3 112 0028 F8D8 bhi .L6 37:Src/curelib_src/curebuffer.c **** 113 .loc 1 37 0 is_stmt 1 ARM GAS /tmp/ccH4oDXT.s page 4 114 002a AC80 strh r4, [r5, #4] 39:Src/curelib_src/curebuffer.c **** } 115 .loc 1 39 0 116 002c 0120 movs r0, #1 117 .LVL9: 118 .L4: 40:Src/curelib_src/curebuffer.c **** 119 .loc 1 40 0 120 @ sp needed 121 .LVL10: 122 002e 70BD pop {r4, r5, r6, pc} 123 .LVL11: 124 .L7: 31:Src/curelib_src/curebuffer.c **** } 125 .loc 1 31 0 126 0030 0020 movs r0, #0 127 0032 FCE7 b .L4 128 .cfi_endproc 129 .LFE0: 131 .section .text.cureRingBufferU8Enqueue,"ax",%progbits 132 .align 1 133 .global cureRingBufferU8Enqueue 134 .syntax unified 135 .code 16 136 .thumb_func 137 .fpu softvfp 139 cureRingBufferU8Enqueue: 140 .LFB2: 53:Src/curelib_src/curebuffer.c **** 54:Src/curelib_src/curebuffer.c **** BUFFER_STATUS cureRingBufferU8Enqueue(RingBufferU8 *rbuf, uint8_t *inputc) 55:Src/curelib_src/curebuffer.c **** { 141 .loc 1 55 0 142 .cfi_startproc 143 @ args = 0, pretend = 0, frame = 0 144 @ frame_needed = 0, uses_anonymous_args = 0 145 .LVL12: 146 0000 10B5 push {r4, lr} 147 .LCFI2: 148 .cfi_def_cfa_offset 8 149 .cfi_offset 4, -8 150 .cfi_offset 14, -4 56:Src/curelib_src/curebuffer.c **** if( ((rbuf->idx_front +1)&(rbuf->length -1)) == rbuf->idx_rear ){//buffer overrun error occurs. 151 .loc 1 56 0 152 0002 0288 ldrh r2, [r0] 153 0004 541C adds r4, r2, #1 154 0006 8388 ldrh r3, [r0, #4] 155 0008 013B subs r3, r3, #1 156 000a 2340 ands r3, r4 157 000c 4488 ldrh r4, [r0, #2] 158 000e A342 cmp r3, r4 159 0010 0CD0 beq .L10 57:Src/curelib_src/curebuffer.c **** return BUFFER_FAILURE; 58:Src/curelib_src/curebuffer.c **** }else{ 59:Src/curelib_src/curebuffer.c **** 60:Src/curelib_src/curebuffer.c **** rbuf->buffer[rbuf->idx_front]= *inputc; 160 .loc 1 60 0 161 0012 0B78 ldrb r3, [r1] ARM GAS /tmp/ccH4oDXT.s page 5 162 0014 8168 ldr r1, [r0, #8] 163 .LVL13: 164 0016 8B54 strb r3, [r1, r2] 61:Src/curelib_src/curebuffer.c **** rbuf->idx_front++; 165 .loc 1 61 0 166 0018 0388 ldrh r3, [r0] 167 001a 0133 adds r3, r3, #1 168 001c 9BB2 uxth r3, r3 62:Src/curelib_src/curebuffer.c **** rbuf->idx_front &= (rbuf->length -1); 169 .loc 1 62 0 170 001e 8288 ldrh r2, [r0, #4] 171 0020 013A subs r2, r2, #1 172 0022 12B2 sxth r2, r2 173 0024 1340 ands r3, r2 174 0026 0380 strh r3, [r0] 63:Src/curelib_src/curebuffer.c **** return BUFFER_SUCCESS; 175 .loc 1 63 0 176 0028 0120 movs r0, #1 177 .LVL14: 178 .L9: 64:Src/curelib_src/curebuffer.c **** } 65:Src/curelib_src/curebuffer.c **** } 179 .loc 1 65 0 180 @ sp needed 181 002a 10BD pop {r4, pc} 182 .LVL15: 183 .L10: 57:Src/curelib_src/curebuffer.c **** }else{ 184 .loc 1 57 0 185 002c 0020 movs r0, #0 186 .LVL16: 187 002e FCE7 b .L9 188 .cfi_endproc 189 .LFE2: 191 .section .text.cureRingBufferU8Dequeue,"ax",%progbits 192 .align 1 193 .global cureRingBufferU8Dequeue 194 .syntax unified 195 .code 16 196 .thumb_func 197 .fpu softvfp 199 cureRingBufferU8Dequeue: 200 .LFB3: 66:Src/curelib_src/curebuffer.c **** 67:Src/curelib_src/curebuffer.c **** BUFFER_STATUS cureRingBufferU8Dequeue(RingBufferU8 *rbuf, uint8_t *ret) 68:Src/curelib_src/curebuffer.c **** { 201 .loc 1 68 0 202 .cfi_startproc 203 @ args = 0, pretend = 0, frame = 0 204 @ frame_needed = 0, uses_anonymous_args = 0 205 @ link register save eliminated. 206 .LVL17: 69:Src/curelib_src/curebuffer.c **** if(rbuf->idx_front == rbuf->idx_rear){//if buffer underrun error occurs. 207 .loc 1 69 0 208 0000 0288 ldrh r2, [r0] 209 0002 4388 ldrh r3, [r0, #2] 210 0004 9A42 cmp r2, r3 ARM GAS /tmp/ccH4oDXT.s page 6 211 0006 0CD0 beq .L13 70:Src/curelib_src/curebuffer.c **** return BUFFER_FAILURE; 71:Src/curelib_src/curebuffer.c **** }else{ 72:Src/curelib_src/curebuffer.c **** 73:Src/curelib_src/curebuffer.c **** *ret = (rbuf->buffer[rbuf->idx_rear]); 212 .loc 1 73 0 213 0008 8268 ldr r2, [r0, #8] 214 000a D35C ldrb r3, [r2, r3] 215 000c 0B70 strb r3, [r1] 74:Src/curelib_src/curebuffer.c **** rbuf->idx_rear++; 216 .loc 1 74 0 217 000e 4388 ldrh r3, [r0, #2] 218 0010 0133 adds r3, r3, #1 219 0012 9BB2 uxth r3, r3 75:Src/curelib_src/curebuffer.c **** rbuf->idx_rear &= (rbuf->length -1); 220 .loc 1 75 0 221 0014 8288 ldrh r2, [r0, #4] 222 0016 013A subs r2, r2, #1 223 0018 12B2 sxth r2, r2 224 001a 1340 ands r3, r2 225 001c 4380 strh r3, [r0, #2] 76:Src/curelib_src/curebuffer.c **** return BUFFER_SUCCESS; 226 .loc 1 76 0 227 001e 0120 movs r0, #1 228 .LVL18: 229 .L12: 77:Src/curelib_src/curebuffer.c **** } 78:Src/curelib_src/curebuffer.c **** } 230 .loc 1 78 0 231 @ sp needed 232 0020 7047 bx lr 233 .LVL19: 234 .L13: 70:Src/curelib_src/curebuffer.c **** }else{ 235 .loc 1 70 0 236 0022 0020 movs r0, #0 237 .LVL20: 238 0024 FCE7 b .L12 239 .cfi_endproc 240 .LFE3: 242 .section .text._cureRingBufferU8GetUsedSize,"ax",%progbits 243 .align 1 244 .global _cureRingBufferU8GetUsedSize 245 .syntax unified 246 .code 16 247 .thumb_func 248 .fpu softvfp 250 _cureRingBufferU8GetUsedSize: 251 .LFB4: 79:Src/curelib_src/curebuffer.c **** 80:Src/curelib_src/curebuffer.c **** //debug 81:Src/curelib_src/curebuffer.c **** uint16_t _cureRingBufferU8GetUsedSize(RingBufferU8 *rbuf) 82:Src/curelib_src/curebuffer.c **** { 252 .loc 1 82 0 253 .cfi_startproc 254 @ args = 0, pretend = 0, frame = 0 255 @ frame_needed = 0, uses_anonymous_args = 0 ARM GAS /tmp/ccH4oDXT.s page 7 256 @ link register save eliminated. 257 .LVL21: 83:Src/curelib_src/curebuffer.c **** if(rbuf->idx_front >= rbuf->idx_rear){ 258 .loc 1 83 0 259 0000 0388 ldrh r3, [r0] 260 0002 4288 ldrh r2, [r0, #2] 261 0004 9342 cmp r3, r2 262 0006 05D2 bcs .L17 84:Src/curelib_src/curebuffer.c **** return rbuf->idx_front - rbuf->idx_rear; 85:Src/curelib_src/curebuffer.c **** }else{ 86:Src/curelib_src/curebuffer.c **** return rbuf->idx_front + rbuf->length - rbuf->idx_rear; 263 .loc 1 86 0 264 0008 8088 ldrh r0, [r0, #4] 265 .LVL22: 266 000a 1818 adds r0, r3, r0 267 000c 80B2 uxth r0, r0 268 000e 801A subs r0, r0, r2 269 0010 80B2 uxth r0, r0 270 .L16: 87:Src/curelib_src/curebuffer.c **** } 88:Src/curelib_src/curebuffer.c **** 89:Src/curelib_src/curebuffer.c **** } 271 .loc 1 89 0 272 @ sp needed 273 0012 7047 bx lr 274 .LVL23: 275 .L17: 84:Src/curelib_src/curebuffer.c **** return rbuf->idx_front - rbuf->idx_rear; 276 .loc 1 84 0 277 0014 981A subs r0, r3, r2 278 .LVL24: 279 0016 80B2 uxth r0, r0 280 0018 FBE7 b .L16 281 .cfi_endproc 282 .LFE4: 284 .section .text.cureRingBuffer16Free,"ax",%progbits 285 .align 1 286 .global cureRingBuffer16Free 287 .syntax unified 288 .code 16 289 .thumb_func 290 .fpu softvfp 292 cureRingBuffer16Free: 293 .LFB6: 90:Src/curelib_src/curebuffer.c **** 91:Src/curelib_src/curebuffer.c **** ///////////////////////////// 92:Src/curelib_src/curebuffer.c **** //methods for int16_t FIFO. 93:Src/curelib_src/curebuffer.c **** ///////////////////////////// 94:Src/curelib_src/curebuffer.c **** 95:Src/curelib_src/curebuffer.c **** BUFFER_STATUS cureRingBuffer16Init(RingBuffer16 *rbuf, uint16_t buflen) 96:Src/curelib_src/curebuffer.c **** { 97:Src/curelib_src/curebuffer.c **** 98:Src/curelib_src/curebuffer.c **** uint32_t i; 99:Src/curelib_src/curebuffer.c **** 100:Src/curelib_src/curebuffer.c **** cureRingBuffer16Free(rbuf); 101:Src/curelib_src/curebuffer.c **** 102:Src/curelib_src/curebuffer.c **** rbuf->buffer = (int16_t *)malloc( buflen * sizeof(int16_t) ); ARM GAS /tmp/ccH4oDXT.s page 8 103:Src/curelib_src/curebuffer.c **** if(NULL == rbuf->buffer){ 104:Src/curelib_src/curebuffer.c **** return BUFFER_FAILURE; 105:Src/curelib_src/curebuffer.c **** } 106:Src/curelib_src/curebuffer.c **** for(i=0; ibuffer[i] = 0; 108:Src/curelib_src/curebuffer.c **** } 109:Src/curelib_src/curebuffer.c **** rbuf->length = buflen; 110:Src/curelib_src/curebuffer.c **** return BUFFER_SUCCESS; 111:Src/curelib_src/curebuffer.c **** } 112:Src/curelib_src/curebuffer.c **** 113:Src/curelib_src/curebuffer.c **** BUFFER_STATUS cureRingBuffer16Free(RingBuffer16 *rbuf) 114:Src/curelib_src/curebuffer.c **** { 294 .loc 1 114 0 295 .cfi_startproc 296 @ args = 0, pretend = 0, frame = 0 297 @ frame_needed = 0, uses_anonymous_args = 0 298 .LVL25: 299 0000 10B5 push {r4, lr} 300 .LCFI3: 301 .cfi_def_cfa_offset 8 302 .cfi_offset 4, -8 303 .cfi_offset 14, -4 304 0002 0400 movs r4, r0 115:Src/curelib_src/curebuffer.c **** if(NULL != rbuf->buffer){ 305 .loc 1 115 0 306 0004 8068 ldr r0, [r0, #8] 307 .LVL26: 308 0006 0028 cmp r0, #0 309 0008 01D0 beq .L19 116:Src/curelib_src/curebuffer.c **** free(rbuf->buffer); 310 .loc 1 116 0 311 000a FFF7FEFF bl free 312 .LVL27: 313 .L19: 117:Src/curelib_src/curebuffer.c **** } 118:Src/curelib_src/curebuffer.c **** 119:Src/curelib_src/curebuffer.c **** rbuf->idx_front = rbuf->idx_rear = 0; 314 .loc 1 119 0 315 000e 0023 movs r3, #0 316 0010 6380 strh r3, [r4, #2] 317 0012 2380 strh r3, [r4] 120:Src/curelib_src/curebuffer.c **** rbuf->length = 0; 318 .loc 1 120 0 319 0014 A380 strh r3, [r4, #4] 121:Src/curelib_src/curebuffer.c **** 122:Src/curelib_src/curebuffer.c **** return BUFFER_SUCCESS; 123:Src/curelib_src/curebuffer.c **** } 320 .loc 1 123 0 321 0016 0120 movs r0, #1 322 @ sp needed 323 .LVL28: 324 0018 10BD pop {r4, pc} 325 .cfi_endproc 326 .LFE6: 328 .section .text.cureRingBuffer16Init,"ax",%progbits 329 .align 1 330 .global cureRingBuffer16Init ARM GAS /tmp/ccH4oDXT.s page 9 331 .syntax unified 332 .code 16 333 .thumb_func 334 .fpu softvfp 336 cureRingBuffer16Init: 337 .LFB5: 96:Src/curelib_src/curebuffer.c **** 338 .loc 1 96 0 339 .cfi_startproc 340 @ args = 0, pretend = 0, frame = 0 341 @ frame_needed = 0, uses_anonymous_args = 0 342 .LVL29: 343 0000 70B5 push {r4, r5, r6, lr} 344 .LCFI4: 345 .cfi_def_cfa_offset 16 346 .cfi_offset 4, -16 347 .cfi_offset 5, -12 348 .cfi_offset 6, -8 349 .cfi_offset 14, -4 350 0002 0400 movs r4, r0 351 0004 0E00 movs r6, r1 100:Src/curelib_src/curebuffer.c **** 352 .loc 1 100 0 353 0006 FFF7FEFF bl cureRingBuffer16Free 354 .LVL30: 102:Src/curelib_src/curebuffer.c **** if(NULL == rbuf->buffer){ 355 .loc 1 102 0 356 000a 3500 movs r5, r6 357 000c 7000 lsls r0, r6, #1 358 000e FFF7FEFF bl malloc 359 .LVL31: 360 0012 A060 str r0, [r4, #8] 103:Src/curelib_src/curebuffer.c **** return BUFFER_FAILURE; 361 .loc 1 103 0 362 0014 0028 cmp r0, #0 363 0016 0DD0 beq .L24 106:Src/curelib_src/curebuffer.c **** rbuf->buffer[i] = 0; 364 .loc 1 106 0 365 0018 0023 movs r3, #0 366 001a 06E0 b .L22 367 .LVL32: 368 .L23: 107:Src/curelib_src/curebuffer.c **** } 369 .loc 1 107 0 discriminator 3 370 001c 5A00 lsls r2, r3, #1 371 001e A168 ldr r1, [r4, #8] 372 0020 8C46 mov ip, r1 373 0022 6244 add r2, r2, ip 374 0024 0021 movs r1, #0 375 0026 1180 strh r1, [r2] 106:Src/curelib_src/curebuffer.c **** rbuf->buffer[i] = 0; 376 .loc 1 106 0 discriminator 3 377 0028 0133 adds r3, r3, #1 378 .LVL33: 379 .L22: 106:Src/curelib_src/curebuffer.c **** rbuf->buffer[i] = 0; 380 .loc 1 106 0 is_stmt 0 discriminator 1 ARM GAS /tmp/ccH4oDXT.s page 10 381 002a 9D42 cmp r5, r3 382 002c F6D8 bhi .L23 109:Src/curelib_src/curebuffer.c **** return BUFFER_SUCCESS; 383 .loc 1 109 0 is_stmt 1 384 002e A680 strh r6, [r4, #4] 110:Src/curelib_src/curebuffer.c **** } 385 .loc 1 110 0 386 0030 0120 movs r0, #1 387 .LVL34: 388 .L21: 111:Src/curelib_src/curebuffer.c **** 389 .loc 1 111 0 390 @ sp needed 391 .LVL35: 392 0032 70BD pop {r4, r5, r6, pc} 393 .LVL36: 394 .L24: 104:Src/curelib_src/curebuffer.c **** } 395 .loc 1 104 0 396 0034 0020 movs r0, #0 397 0036 FCE7 b .L21 398 .cfi_endproc 399 .LFE5: 401 .section .text.cureRingBuffer16Enqueue,"ax",%progbits 402 .align 1 403 .global cureRingBuffer16Enqueue 404 .syntax unified 405 .code 16 406 .thumb_func 407 .fpu softvfp 409 cureRingBuffer16Enqueue: 410 .LFB7: 124:Src/curelib_src/curebuffer.c **** 125:Src/curelib_src/curebuffer.c **** BUFFER_STATUS cureRingBuffer16Enqueue(RingBuffer16 *rbuf, int16_t *inputc) 126:Src/curelib_src/curebuffer.c **** { 411 .loc 1 126 0 412 .cfi_startproc 413 @ args = 0, pretend = 0, frame = 0 414 @ frame_needed = 0, uses_anonymous_args = 0 415 .LVL37: 416 0000 10B5 push {r4, lr} 417 .LCFI5: 418 .cfi_def_cfa_offset 8 419 .cfi_offset 4, -8 420 .cfi_offset 14, -4 127:Src/curelib_src/curebuffer.c **** if( ((rbuf->idx_front +1)&(rbuf->length -1)) == rbuf->idx_rear ){//buffer overrun error occurs. 421 .loc 1 127 0 422 0002 0288 ldrh r2, [r0] 423 0004 541C adds r4, r2, #1 424 0006 8388 ldrh r3, [r0, #4] 425 0008 013B subs r3, r3, #1 426 000a 2340 ands r3, r4 427 000c 4488 ldrh r4, [r0, #2] 428 000e A342 cmp r3, r4 429 0010 0ED0 beq .L27 128:Src/curelib_src/curebuffer.c **** return BUFFER_FAILURE; 129:Src/curelib_src/curebuffer.c **** }else{ ARM GAS /tmp/ccH4oDXT.s page 11 130:Src/curelib_src/curebuffer.c **** rbuf->buffer[rbuf->idx_front]= *inputc; 430 .loc 1 130 0 431 0012 5200 lsls r2, r2, #1 432 0014 0023 movs r3, #0 433 0016 CB5E ldrsh r3, [r1, r3] 434 .LVL38: 435 0018 8168 ldr r1, [r0, #8] 436 001a 8B52 strh r3, [r1, r2] 131:Src/curelib_src/curebuffer.c **** rbuf->idx_front++; 437 .loc 1 131 0 438 001c 0388 ldrh r3, [r0] 439 001e 0133 adds r3, r3, #1 440 0020 9BB2 uxth r3, r3 132:Src/curelib_src/curebuffer.c **** rbuf->idx_front &= (rbuf->length -1); 441 .loc 1 132 0 442 0022 8288 ldrh r2, [r0, #4] 443 0024 013A subs r2, r2, #1 444 0026 12B2 sxth r2, r2 445 0028 1340 ands r3, r2 446 002a 0380 strh r3, [r0] 133:Src/curelib_src/curebuffer.c **** return BUFFER_SUCCESS; 447 .loc 1 133 0 448 002c 0120 movs r0, #1 449 .LVL39: 450 .L26: 134:Src/curelib_src/curebuffer.c **** } 135:Src/curelib_src/curebuffer.c **** } 451 .loc 1 135 0 452 @ sp needed 453 002e 10BD pop {r4, pc} 454 .LVL40: 455 .L27: 128:Src/curelib_src/curebuffer.c **** }else{ 456 .loc 1 128 0 457 0030 0020 movs r0, #0 458 .LVL41: 459 0032 FCE7 b .L26 460 .cfi_endproc 461 .LFE7: 463 .section .text.cureRingBuffer16EnqueueIgnoreErr,"ax",%progbits 464 .align 1 465 .global cureRingBuffer16EnqueueIgnoreErr 466 .syntax unified 467 .code 16 468 .thumb_func 469 .fpu softvfp 471 cureRingBuffer16EnqueueIgnoreErr: 472 .LFB8: 136:Src/curelib_src/curebuffer.c **** 137:Src/curelib_src/curebuffer.c **** BUFFER_STATUS cureRingBuffer16EnqueueIgnoreErr(RingBuffer16 *rbuf, int16_t *inputc) 138:Src/curelib_src/curebuffer.c **** { 473 .loc 1 138 0 474 .cfi_startproc 475 @ args = 0, pretend = 0, frame = 0 476 @ frame_needed = 0, uses_anonymous_args = 0 477 @ link register save eliminated. 478 .LVL42: ARM GAS /tmp/ccH4oDXT.s page 12 139:Src/curelib_src/curebuffer.c **** 140:Src/curelib_src/curebuffer.c **** rbuf->buffer[rbuf->idx_front]= *inputc; 479 .loc 1 140 0 480 0000 0388 ldrh r3, [r0] 481 0002 5B00 lsls r3, r3, #1 482 0004 0022 movs r2, #0 483 0006 8A5E ldrsh r2, [r1, r2] 484 .LVL43: 485 0008 8168 ldr r1, [r0, #8] 486 000a CA52 strh r2, [r1, r3] 141:Src/curelib_src/curebuffer.c **** rbuf->idx_front++; 487 .loc 1 141 0 488 000c 0388 ldrh r3, [r0] 489 000e 0133 adds r3, r3, #1 490 0010 9BB2 uxth r3, r3 142:Src/curelib_src/curebuffer.c **** rbuf->idx_front &= (rbuf->length -1); 491 .loc 1 142 0 492 0012 8288 ldrh r2, [r0, #4] 493 0014 013A subs r2, r2, #1 494 0016 12B2 sxth r2, r2 495 0018 1340 ands r3, r2 496 001a 0380 strh r3, [r0] 143:Src/curelib_src/curebuffer.c **** return BUFFER_SUCCESS; 144:Src/curelib_src/curebuffer.c **** 145:Src/curelib_src/curebuffer.c **** } 497 .loc 1 145 0 498 001c 0120 movs r0, #1 499 .LVL44: 500 @ sp needed 501 001e 7047 bx lr 502 .cfi_endproc 503 .LFE8: 505 .section .text.cureRingBuffer16Dequeue,"ax",%progbits 506 .align 1 507 .global cureRingBuffer16Dequeue 508 .syntax unified 509 .code 16 510 .thumb_func 511 .fpu softvfp 513 cureRingBuffer16Dequeue: 514 .LFB9: 146:Src/curelib_src/curebuffer.c **** 147:Src/curelib_src/curebuffer.c **** 148:Src/curelib_src/curebuffer.c **** BUFFER_STATUS cureRingBuffer16Dequeue(RingBuffer16 *rbuf, int16_t *ret) 149:Src/curelib_src/curebuffer.c **** { 515 .loc 1 149 0 516 .cfi_startproc 517 @ args = 0, pretend = 0, frame = 0 518 @ frame_needed = 0, uses_anonymous_args = 0 519 @ link register save eliminated. 520 .LVL45: 150:Src/curelib_src/curebuffer.c **** if(rbuf->idx_front == rbuf->idx_rear){//if buffer underrun error occurs. 521 .loc 1 150 0 522 0000 0288 ldrh r2, [r0] 523 0002 4388 ldrh r3, [r0, #2] 524 0004 9A42 cmp r2, r3 525 0006 0DD0 beq .L31 ARM GAS /tmp/ccH4oDXT.s page 13 151:Src/curelib_src/curebuffer.c **** return BUFFER_FAILURE; 152:Src/curelib_src/curebuffer.c **** }else{ 153:Src/curelib_src/curebuffer.c **** *ret = (rbuf->buffer[rbuf->idx_rear]); 526 .loc 1 153 0 527 0008 5B00 lsls r3, r3, #1 528 000a 8268 ldr r2, [r0, #8] 529 000c 9B5E ldrsh r3, [r3, r2] 530 000e 0B80 strh r3, [r1] 154:Src/curelib_src/curebuffer.c **** rbuf->idx_rear++; 531 .loc 1 154 0 532 0010 4388 ldrh r3, [r0, #2] 533 0012 0133 adds r3, r3, #1 534 0014 9BB2 uxth r3, r3 155:Src/curelib_src/curebuffer.c **** rbuf->idx_rear &= (rbuf->length -1); 535 .loc 1 155 0 536 0016 8288 ldrh r2, [r0, #4] 537 0018 013A subs r2, r2, #1 538 001a 12B2 sxth r2, r2 539 001c 1340 ands r3, r2 540 001e 4380 strh r3, [r0, #2] 156:Src/curelib_src/curebuffer.c **** return BUFFER_SUCCESS; 541 .loc 1 156 0 542 0020 0120 movs r0, #1 543 .LVL46: 544 .L30: 157:Src/curelib_src/curebuffer.c **** } 158:Src/curelib_src/curebuffer.c **** } 545 .loc 1 158 0 546 @ sp needed 547 0022 7047 bx lr 548 .LVL47: 549 .L31: 151:Src/curelib_src/curebuffer.c **** }else{ 550 .loc 1 151 0 551 0024 0020 movs r0, #0 552 .LVL48: 553 0026 FCE7 b .L30 554 .cfi_endproc 555 .LFE9: 557 .section .text.cureRingBuffer16GetElement,"ax",%progbits 558 .align 1 559 .global cureRingBuffer16GetElement 560 .syntax unified 561 .code 16 562 .thumb_func 563 .fpu softvfp 565 cureRingBuffer16GetElement: 566 .LFB10: 159:Src/curelib_src/curebuffer.c **** 160:Src/curelib_src/curebuffer.c **** 161:Src/curelib_src/curebuffer.c **** BUFFER_STATUS cureRingBuffer16GetElement(RingBuffer16 *rbuf, int16_t *ret, uint16_t delaynum, uint1 162:Src/curelib_src/curebuffer.c **** { 567 .loc 1 162 0 568 .cfi_startproc 569 @ args = 0, pretend = 0, frame = 0 570 @ frame_needed = 0, uses_anonymous_args = 0 571 .LVL49: ARM GAS /tmp/ccH4oDXT.s page 14 572 0000 10B5 push {r4, lr} 573 .LCFI6: 574 .cfi_def_cfa_offset 8 575 .cfi_offset 4, -8 576 .cfi_offset 14, -4 163:Src/curelib_src/curebuffer.c **** 164:Src/curelib_src/curebuffer.c **** if(rbuf->idx_front >= delaynum){ 577 .loc 1 164 0 578 0002 0488 ldrh r4, [r0] 579 0004 9442 cmp r4, r2 580 0006 0AD2 bcs .L35 165:Src/curelib_src/curebuffer.c **** rbuf->idx_rear = rbuf->idx_front - delaynum; 166:Src/curelib_src/curebuffer.c **** }else{ 167:Src/curelib_src/curebuffer.c **** rbuf->idx_rear = delay_buffer_length - (delaynum - rbuf->idx_front); 581 .loc 1 167 0 582 0008 A41A subs r4, r4, r2 583 000a A4B2 uxth r4, r4 584 000c E318 adds r3, r4, r3 585 .LVL50: 586 000e 4380 strh r3, [r0, #2] 587 .L34: 168:Src/curelib_src/curebuffer.c **** } 169:Src/curelib_src/curebuffer.c **** *ret = (rbuf->buffer[rbuf->idx_rear]); 588 .loc 1 169 0 589 0010 8268 ldr r2, [r0, #8] 590 .LVL51: 591 0012 4388 ldrh r3, [r0, #2] 592 0014 5B00 lsls r3, r3, #1 593 0016 9B5E ldrsh r3, [r3, r2] 594 0018 0B80 strh r3, [r1] 170:Src/curelib_src/curebuffer.c **** return BUFFER_SUCCESS; 171:Src/curelib_src/curebuffer.c **** 172:Src/curelib_src/curebuffer.c **** } 595 .loc 1 172 0 596 001a 0120 movs r0, #1 597 .LVL52: 598 @ sp needed 599 001c 10BD pop {r4, pc} 600 .LVL53: 601 .L35: 165:Src/curelib_src/curebuffer.c **** }else{ 602 .loc 1 165 0 603 001e A41A subs r4, r4, r2 604 0020 4480 strh r4, [r0, #2] 605 0022 F5E7 b .L34 606 .cfi_endproc 607 .LFE10: 609 .section .text.cureRingBufferU32Free,"ax",%progbits 610 .align 1 611 .global cureRingBufferU32Free 612 .syntax unified 613 .code 16 614 .thumb_func 615 .fpu softvfp 617 cureRingBufferU32Free: 618 .LFB12: 173:Src/curelib_src/curebuffer.c **** ARM GAS /tmp/ccH4oDXT.s page 15 174:Src/curelib_src/curebuffer.c **** ///////////////////////////// 175:Src/curelib_src/curebuffer.c **** //methods for uint32_t FIFO. 176:Src/curelib_src/curebuffer.c **** ///////////////////////////// 177:Src/curelib_src/curebuffer.c **** 178:Src/curelib_src/curebuffer.c **** BUFFER_STATUS cureRingBufferU32Init(RingBuffer32 *rbuf, uint16_t buflen) 179:Src/curelib_src/curebuffer.c **** { 180:Src/curelib_src/curebuffer.c **** 181:Src/curelib_src/curebuffer.c **** uint32_t i; 182:Src/curelib_src/curebuffer.c **** 183:Src/curelib_src/curebuffer.c **** cureRingBufferU32Free(rbuf); 184:Src/curelib_src/curebuffer.c **** 185:Src/curelib_src/curebuffer.c **** rbuf->buffer = (uint32_t *)malloc( buflen * sizeof(uint32_t) ); 186:Src/curelib_src/curebuffer.c **** if(NULL == rbuf->buffer){ 187:Src/curelib_src/curebuffer.c **** return BUFFER_FAILURE; 188:Src/curelib_src/curebuffer.c **** } 189:Src/curelib_src/curebuffer.c **** for(i=0; ibuffer[i] = 0; 191:Src/curelib_src/curebuffer.c **** } 192:Src/curelib_src/curebuffer.c **** rbuf->length = buflen; 193:Src/curelib_src/curebuffer.c **** return BUFFER_SUCCESS; 194:Src/curelib_src/curebuffer.c **** } 195:Src/curelib_src/curebuffer.c **** 196:Src/curelib_src/curebuffer.c **** BUFFER_STATUS cureRingBufferU32Free(RingBuffer32 *rbuf) 197:Src/curelib_src/curebuffer.c **** { 619 .loc 1 197 0 620 .cfi_startproc 621 @ args = 0, pretend = 0, frame = 0 622 @ frame_needed = 0, uses_anonymous_args = 0 623 .LVL54: 624 0000 10B5 push {r4, lr} 625 .LCFI7: 626 .cfi_def_cfa_offset 8 627 .cfi_offset 4, -8 628 .cfi_offset 14, -4 629 0002 0400 movs r4, r0 198:Src/curelib_src/curebuffer.c **** if(NULL != rbuf->buffer){ 630 .loc 1 198 0 631 0004 8068 ldr r0, [r0, #8] 632 .LVL55: 633 0006 0028 cmp r0, #0 634 0008 01D0 beq .L37 199:Src/curelib_src/curebuffer.c **** free(rbuf->buffer); 635 .loc 1 199 0 636 000a FFF7FEFF bl free 637 .LVL56: 638 .L37: 200:Src/curelib_src/curebuffer.c **** } 201:Src/curelib_src/curebuffer.c **** 202:Src/curelib_src/curebuffer.c **** rbuf->idx_front = rbuf->idx_rear = 0; 639 .loc 1 202 0 640 000e 0023 movs r3, #0 641 0010 6380 strh r3, [r4, #2] 642 0012 2380 strh r3, [r4] 203:Src/curelib_src/curebuffer.c **** rbuf->length = 0; 643 .loc 1 203 0 644 0014 A380 strh r3, [r4, #4] 204:Src/curelib_src/curebuffer.c **** ARM GAS /tmp/ccH4oDXT.s page 16 205:Src/curelib_src/curebuffer.c **** return BUFFER_SUCCESS; 206:Src/curelib_src/curebuffer.c **** } 645 .loc 1 206 0 646 0016 0120 movs r0, #1 647 @ sp needed 648 .LVL57: 649 0018 10BD pop {r4, pc} 650 .cfi_endproc 651 .LFE12: 653 .section .text.cureRingBufferU32Init,"ax",%progbits 654 .align 1 655 .global cureRingBufferU32Init 656 .syntax unified 657 .code 16 658 .thumb_func 659 .fpu softvfp 661 cureRingBufferU32Init: 662 .LFB11: 179:Src/curelib_src/curebuffer.c **** 663 .loc 1 179 0 664 .cfi_startproc 665 @ args = 0, pretend = 0, frame = 0 666 @ frame_needed = 0, uses_anonymous_args = 0 667 .LVL58: 668 0000 70B5 push {r4, r5, r6, lr} 669 .LCFI8: 670 .cfi_def_cfa_offset 16 671 .cfi_offset 4, -16 672 .cfi_offset 5, -12 673 .cfi_offset 6, -8 674 .cfi_offset 14, -4 675 0002 0400 movs r4, r0 676 0004 0E00 movs r6, r1 183:Src/curelib_src/curebuffer.c **** 677 .loc 1 183 0 678 0006 FFF7FEFF bl cureRingBufferU32Free 679 .LVL59: 185:Src/curelib_src/curebuffer.c **** if(NULL == rbuf->buffer){ 680 .loc 1 185 0 681 000a 3500 movs r5, r6 682 000c B000 lsls r0, r6, #2 683 000e FFF7FEFF bl malloc 684 .LVL60: 685 0012 A060 str r0, [r4, #8] 186:Src/curelib_src/curebuffer.c **** return BUFFER_FAILURE; 686 .loc 1 186 0 687 0014 0028 cmp r0, #0 688 0016 0DD0 beq .L42 189:Src/curelib_src/curebuffer.c **** rbuf->buffer[i] = 0; 689 .loc 1 189 0 690 0018 0023 movs r3, #0 691 001a 06E0 b .L40 692 .LVL61: 693 .L41: 190:Src/curelib_src/curebuffer.c **** } 694 .loc 1 190 0 discriminator 3 695 001c 9A00 lsls r2, r3, #2 ARM GAS /tmp/ccH4oDXT.s page 17 696 001e A168 ldr r1, [r4, #8] 697 0020 8C46 mov ip, r1 698 0022 6244 add r2, r2, ip 699 0024 0021 movs r1, #0 700 0026 1160 str r1, [r2] 189:Src/curelib_src/curebuffer.c **** rbuf->buffer[i] = 0; 701 .loc 1 189 0 discriminator 3 702 0028 0133 adds r3, r3, #1 703 .LVL62: 704 .L40: 189:Src/curelib_src/curebuffer.c **** rbuf->buffer[i] = 0; 705 .loc 1 189 0 is_stmt 0 discriminator 1 706 002a 9D42 cmp r5, r3 707 002c F6D8 bhi .L41 192:Src/curelib_src/curebuffer.c **** return BUFFER_SUCCESS; 708 .loc 1 192 0 is_stmt 1 709 002e A680 strh r6, [r4, #4] 193:Src/curelib_src/curebuffer.c **** } 710 .loc 1 193 0 711 0030 0120 movs r0, #1 712 .LVL63: 713 .L39: 194:Src/curelib_src/curebuffer.c **** 714 .loc 1 194 0 715 @ sp needed 716 .LVL64: 717 0032 70BD pop {r4, r5, r6, pc} 718 .LVL65: 719 .L42: 187:Src/curelib_src/curebuffer.c **** } 720 .loc 1 187 0 721 0034 0020 movs r0, #0 722 0036 FCE7 b .L39 723 .cfi_endproc 724 .LFE11: 726 .section .text.cureRingBufferU32Enqueue,"ax",%progbits 727 .align 1 728 .global cureRingBufferU32Enqueue 729 .syntax unified 730 .code 16 731 .thumb_func 732 .fpu softvfp 734 cureRingBufferU32Enqueue: 735 .LFB13: 207:Src/curelib_src/curebuffer.c **** 208:Src/curelib_src/curebuffer.c **** BUFFER_STATUS cureRingBufferU32Enqueue(RingBuffer32 *rbuf, uint32_t *inputc) 209:Src/curelib_src/curebuffer.c **** { 736 .loc 1 209 0 737 .cfi_startproc 738 @ args = 0, pretend = 0, frame = 0 739 @ frame_needed = 0, uses_anonymous_args = 0 740 .LVL66: 741 0000 10B5 push {r4, lr} 742 .LCFI9: 743 .cfi_def_cfa_offset 8 744 .cfi_offset 4, -8 745 .cfi_offset 14, -4 ARM GAS /tmp/ccH4oDXT.s page 18 210:Src/curelib_src/curebuffer.c **** if( ((rbuf->idx_front +1)&(rbuf->length -1)) == rbuf->idx_rear ){//buffer overrun error occurs. 746 .loc 1 210 0 747 0002 0288 ldrh r2, [r0] 748 0004 541C adds r4, r2, #1 749 0006 8388 ldrh r3, [r0, #4] 750 0008 013B subs r3, r3, #1 751 000a 2340 ands r3, r4 752 000c 4488 ldrh r4, [r0, #2] 753 000e A342 cmp r3, r4 754 0010 0DD0 beq .L45 211:Src/curelib_src/curebuffer.c **** return BUFFER_FAILURE; 212:Src/curelib_src/curebuffer.c **** }else{ 213:Src/curelib_src/curebuffer.c **** rbuf->buffer[rbuf->idx_front]= *inputc; 755 .loc 1 213 0 756 0012 9200 lsls r2, r2, #2 757 0014 0B68 ldr r3, [r1] 758 0016 8168 ldr r1, [r0, #8] 759 .LVL67: 760 0018 8B50 str r3, [r1, r2] 214:Src/curelib_src/curebuffer.c **** rbuf->idx_front++; 761 .loc 1 214 0 762 001a 0388 ldrh r3, [r0] 763 001c 0133 adds r3, r3, #1 764 001e 9BB2 uxth r3, r3 215:Src/curelib_src/curebuffer.c **** rbuf->idx_front &= (rbuf->length -1); 765 .loc 1 215 0 766 0020 8288 ldrh r2, [r0, #4] 767 0022 013A subs r2, r2, #1 768 0024 12B2 sxth r2, r2 769 0026 1340 ands r3, r2 770 0028 0380 strh r3, [r0] 216:Src/curelib_src/curebuffer.c **** return BUFFER_SUCCESS; 771 .loc 1 216 0 772 002a 0120 movs r0, #1 773 .LVL68: 774 .L44: 217:Src/curelib_src/curebuffer.c **** } 218:Src/curelib_src/curebuffer.c **** } 775 .loc 1 218 0 776 @ sp needed 777 002c 10BD pop {r4, pc} 778 .LVL69: 779 .L45: 211:Src/curelib_src/curebuffer.c **** }else{ 780 .loc 1 211 0 781 002e 0020 movs r0, #0 782 .LVL70: 783 0030 FCE7 b .L44 784 .cfi_endproc 785 .LFE13: 787 .section .text.cureRingBufferU32EnqueueIgnoreErr,"ax",%progbits 788 .align 1 789 .global cureRingBufferU32EnqueueIgnoreErr 790 .syntax unified 791 .code 16 792 .thumb_func 793 .fpu softvfp ARM GAS /tmp/ccH4oDXT.s page 19 795 cureRingBufferU32EnqueueIgnoreErr: 796 .LFB14: 219:Src/curelib_src/curebuffer.c **** 220:Src/curelib_src/curebuffer.c **** BUFFER_STATUS cureRingBufferU32EnqueueIgnoreErr(RingBuffer32 *rbuf, uint32_t *inputc) 221:Src/curelib_src/curebuffer.c **** { 797 .loc 1 221 0 798 .cfi_startproc 799 @ args = 0, pretend = 0, frame = 0 800 @ frame_needed = 0, uses_anonymous_args = 0 801 @ link register save eliminated. 802 .LVL71: 222:Src/curelib_src/curebuffer.c **** 223:Src/curelib_src/curebuffer.c **** rbuf->buffer[rbuf->idx_front]= *inputc; 803 .loc 1 223 0 804 0000 0388 ldrh r3, [r0] 805 0002 9B00 lsls r3, r3, #2 806 0004 0A68 ldr r2, [r1] 807 0006 8168 ldr r1, [r0, #8] 808 .LVL72: 809 0008 CA50 str r2, [r1, r3] 224:Src/curelib_src/curebuffer.c **** rbuf->idx_front++; 810 .loc 1 224 0 811 000a 0388 ldrh r3, [r0] 812 000c 0133 adds r3, r3, #1 813 000e 9BB2 uxth r3, r3 225:Src/curelib_src/curebuffer.c **** rbuf->idx_front &= (rbuf->length -1); 814 .loc 1 225 0 815 0010 8288 ldrh r2, [r0, #4] 816 0012 013A subs r2, r2, #1 817 0014 12B2 sxth r2, r2 818 0016 1340 ands r3, r2 819 0018 0380 strh r3, [r0] 226:Src/curelib_src/curebuffer.c **** return BUFFER_SUCCESS; 227:Src/curelib_src/curebuffer.c **** 228:Src/curelib_src/curebuffer.c **** } 820 .loc 1 228 0 821 001a 0120 movs r0, #1 822 .LVL73: 823 @ sp needed 824 001c 7047 bx lr 825 .cfi_endproc 826 .LFE14: 828 .section .text.cureRingBufferU32Dequeue,"ax",%progbits 829 .align 1 830 .global cureRingBufferU32Dequeue 831 .syntax unified 832 .code 16 833 .thumb_func 834 .fpu softvfp 836 cureRingBufferU32Dequeue: 837 .LFB15: 229:Src/curelib_src/curebuffer.c **** 230:Src/curelib_src/curebuffer.c **** 231:Src/curelib_src/curebuffer.c **** BUFFER_STATUS cureRingBufferU32Dequeue(RingBuffer32 *rbuf, uint32_t *ret) 232:Src/curelib_src/curebuffer.c **** { 838 .loc 1 232 0 839 .cfi_startproc ARM GAS /tmp/ccH4oDXT.s page 20 840 @ args = 0, pretend = 0, frame = 0 841 @ frame_needed = 0, uses_anonymous_args = 0 842 @ link register save eliminated. 843 .LVL74: 233:Src/curelib_src/curebuffer.c **** if(rbuf->idx_front == rbuf->idx_rear){//if buffer underrun error occurs. 844 .loc 1 233 0 845 0000 0288 ldrh r2, [r0] 846 0002 4388 ldrh r3, [r0, #2] 847 0004 9A42 cmp r2, r3 848 0006 0DD0 beq .L49 234:Src/curelib_src/curebuffer.c **** return BUFFER_FAILURE; 235:Src/curelib_src/curebuffer.c **** }else{ 236:Src/curelib_src/curebuffer.c **** *ret = (rbuf->buffer[rbuf->idx_rear]); 849 .loc 1 236 0 850 0008 8268 ldr r2, [r0, #8] 851 000a 9B00 lsls r3, r3, #2 852 000c 9B58 ldr r3, [r3, r2] 853 000e 0B60 str r3, [r1] 237:Src/curelib_src/curebuffer.c **** rbuf->idx_rear++; 854 .loc 1 237 0 855 0010 4388 ldrh r3, [r0, #2] 856 0012 0133 adds r3, r3, #1 857 0014 9BB2 uxth r3, r3 238:Src/curelib_src/curebuffer.c **** rbuf->idx_rear &= (rbuf->length -1); 858 .loc 1 238 0 859 0016 8288 ldrh r2, [r0, #4] 860 0018 013A subs r2, r2, #1 861 001a 12B2 sxth r2, r2 862 001c 1340 ands r3, r2 863 001e 4380 strh r3, [r0, #2] 239:Src/curelib_src/curebuffer.c **** return BUFFER_SUCCESS; 864 .loc 1 239 0 865 0020 0120 movs r0, #1 866 .LVL75: 867 .L48: 240:Src/curelib_src/curebuffer.c **** } 241:Src/curelib_src/curebuffer.c **** } 868 .loc 1 241 0 869 @ sp needed 870 0022 7047 bx lr 871 .LVL76: 872 .L49: 234:Src/curelib_src/curebuffer.c **** }else{ 873 .loc 1 234 0 874 0024 0020 movs r0, #0 875 .LVL77: 876 0026 FCE7 b .L48 877 .cfi_endproc 878 .LFE15: 880 .section .text.cureRingBufferU32GetElement,"ax",%progbits 881 .align 1 882 .global cureRingBufferU32GetElement 883 .syntax unified 884 .code 16 885 .thumb_func 886 .fpu softvfp 888 cureRingBufferU32GetElement: ARM GAS /tmp/ccH4oDXT.s page 21 889 .LFB16: 242:Src/curelib_src/curebuffer.c **** 243:Src/curelib_src/curebuffer.c **** 244:Src/curelib_src/curebuffer.c **** BUFFER_STATUS cureRingBufferU32GetElement(RingBuffer32 *rbuf, uint32_t *ret, uint16_t delaynum, uin 245:Src/curelib_src/curebuffer.c **** { 890 .loc 1 245 0 891 .cfi_startproc 892 @ args = 0, pretend = 0, frame = 0 893 @ frame_needed = 0, uses_anonymous_args = 0 894 .LVL78: 895 0000 10B5 push {r4, lr} 896 .LCFI10: 897 .cfi_def_cfa_offset 8 898 .cfi_offset 4, -8 899 .cfi_offset 14, -4 246:Src/curelib_src/curebuffer.c **** uint16_t buf; 247:Src/curelib_src/curebuffer.c **** 248:Src/curelib_src/curebuffer.c **** 249:Src/curelib_src/curebuffer.c **** if(rbuf->idx_front >= delaynum){ 900 .loc 1 249 0 901 0002 0488 ldrh r4, [r0] 902 0004 9442 cmp r4, r2 903 0006 09D2 bcs .L53 250:Src/curelib_src/curebuffer.c **** buf = rbuf->idx_front - delaynum; 251:Src/curelib_src/curebuffer.c **** }else{ 252:Src/curelib_src/curebuffer.c **** buf = delay_buffer_length - (delaynum - rbuf->idx_front); 904 .loc 1 252 0 905 0008 A41A subs r4, r4, r2 906 000a A4B2 uxth r4, r4 907 000c E418 adds r4, r4, r3 908 000e A4B2 uxth r4, r4 909 .LVL79: 910 .L52: 253:Src/curelib_src/curebuffer.c **** } 254:Src/curelib_src/curebuffer.c **** *ret = (rbuf->buffer[buf]); 911 .loc 1 254 0 912 0010 8368 ldr r3, [r0, #8] 913 .LVL80: 914 0012 A400 lsls r4, r4, #2 915 .LVL81: 916 0014 E358 ldr r3, [r4, r3] 917 0016 0B60 str r3, [r1] 255:Src/curelib_src/curebuffer.c **** return BUFFER_SUCCESS; 256:Src/curelib_src/curebuffer.c **** 257:Src/curelib_src/curebuffer.c **** } 918 .loc 1 257 0 919 0018 0120 movs r0, #1 920 .LVL82: 921 @ sp needed 922 001a 10BD pop {r4, pc} 923 .LVL83: 924 .L53: 250:Src/curelib_src/curebuffer.c **** }else{ 925 .loc 1 250 0 926 001c A41A subs r4, r4, r2 927 001e A4B2 uxth r4, r4 928 .LVL84: ARM GAS /tmp/ccH4oDXT.s page 22 929 0020 F6E7 b .L52 930 .cfi_endproc 931 .LFE16: 933 .text 934 .Letext0: 935 .file 2 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/arm-none-eabi/include/machin 936 .file 3 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/arm-none-eabi/include/sys/_s 937 .file 4 "Inc/curelib_inc/curebuffer.h" 938 .file 5 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/arm-none-eabi/include/sys/lo 939 .file 6 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/arm-none-eabi/include/sys/_t 940 .file 7 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/lib/gcc/arm-none-eabi/7.3.1/ 941 .file 8 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/arm-none-eabi/include/sys/re 942 .file 9 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/arm-none-eabi/include/stdlib ARM GAS /tmp/ccH4oDXT.s page 23 DEFINED SYMBOLS *ABS*:0000000000000000 curebuffer.c /tmp/ccH4oDXT.s:16 .text.cureRingBufferU8Free:0000000000000000 $t /tmp/ccH4oDXT.s:23 .text.cureRingBufferU8Free:0000000000000000 cureRingBufferU8Free /tmp/ccH4oDXT.s:61 .text.cureRingBufferU8Init:0000000000000000 $t /tmp/ccH4oDXT.s:68 .text.cureRingBufferU8Init:0000000000000000 cureRingBufferU8Init /tmp/ccH4oDXT.s:132 .text.cureRingBufferU8Enqueue:0000000000000000 $t /tmp/ccH4oDXT.s:139 .text.cureRingBufferU8Enqueue:0000000000000000 cureRingBufferU8Enqueue /tmp/ccH4oDXT.s:192 .text.cureRingBufferU8Dequeue:0000000000000000 $t /tmp/ccH4oDXT.s:199 .text.cureRingBufferU8Dequeue:0000000000000000 cureRingBufferU8Dequeue /tmp/ccH4oDXT.s:243 .text._cureRingBufferU8GetUsedSize:0000000000000000 $t /tmp/ccH4oDXT.s:250 .text._cureRingBufferU8GetUsedSize:0000000000000000 _cureRingBufferU8GetUsedSize /tmp/ccH4oDXT.s:285 .text.cureRingBuffer16Free:0000000000000000 $t /tmp/ccH4oDXT.s:292 .text.cureRingBuffer16Free:0000000000000000 cureRingBuffer16Free /tmp/ccH4oDXT.s:329 .text.cureRingBuffer16Init:0000000000000000 $t /tmp/ccH4oDXT.s:336 .text.cureRingBuffer16Init:0000000000000000 cureRingBuffer16Init /tmp/ccH4oDXT.s:402 .text.cureRingBuffer16Enqueue:0000000000000000 $t /tmp/ccH4oDXT.s:409 .text.cureRingBuffer16Enqueue:0000000000000000 cureRingBuffer16Enqueue /tmp/ccH4oDXT.s:464 .text.cureRingBuffer16EnqueueIgnoreErr:0000000000000000 $t /tmp/ccH4oDXT.s:471 .text.cureRingBuffer16EnqueueIgnoreErr:0000000000000000 cureRingBuffer16EnqueueIgnoreErr /tmp/ccH4oDXT.s:506 .text.cureRingBuffer16Dequeue:0000000000000000 $t /tmp/ccH4oDXT.s:513 .text.cureRingBuffer16Dequeue:0000000000000000 cureRingBuffer16Dequeue /tmp/ccH4oDXT.s:558 .text.cureRingBuffer16GetElement:0000000000000000 $t /tmp/ccH4oDXT.s:565 .text.cureRingBuffer16GetElement:0000000000000000 cureRingBuffer16GetElement /tmp/ccH4oDXT.s:610 .text.cureRingBufferU32Free:0000000000000000 $t /tmp/ccH4oDXT.s:617 .text.cureRingBufferU32Free:0000000000000000 cureRingBufferU32Free /tmp/ccH4oDXT.s:654 .text.cureRingBufferU32Init:0000000000000000 $t /tmp/ccH4oDXT.s:661 .text.cureRingBufferU32Init:0000000000000000 cureRingBufferU32Init /tmp/ccH4oDXT.s:727 .text.cureRingBufferU32Enqueue:0000000000000000 $t /tmp/ccH4oDXT.s:734 .text.cureRingBufferU32Enqueue:0000000000000000 cureRingBufferU32Enqueue /tmp/ccH4oDXT.s:788 .text.cureRingBufferU32EnqueueIgnoreErr:0000000000000000 $t /tmp/ccH4oDXT.s:795 .text.cureRingBufferU32EnqueueIgnoreErr:0000000000000000 cureRingBufferU32EnqueueIgnoreErr /tmp/ccH4oDXT.s:829 .text.cureRingBufferU32Dequeue:0000000000000000 $t /tmp/ccH4oDXT.s:836 .text.cureRingBufferU32Dequeue:0000000000000000 cureRingBufferU32Dequeue /tmp/ccH4oDXT.s:881 .text.cureRingBufferU32GetElement:0000000000000000 $t /tmp/ccH4oDXT.s:888 .text.cureRingBufferU32GetElement:0000000000000000 cureRingBufferU32GetElement UNDEFINED SYMBOLS free malloc