Subversion Repositories dashGPS

Rev

Rev 16 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

ARM GAS  C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s                    page 1


   1                            .cpu cortex-m3
   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, 1
  10                            .eabi_attribute 18, 4
  11                            .file   "serial.c"
  12                            .text
  13                    .Ltext0:
  14                            .cfi_sections   .debug_frame
  15                            .section        .text.PutCharSerialFIFO,"ax",%progbits
  16                            .align  1
  17                            .arch armv7-m
  18                            .syntax unified
  19                            .thumb
  20                            .thumb_func
  21                            .fpu softvfp
  23                    PutCharSerialFIFO:
  24                    .LVL0:
  25                    .LFB69:
  26                            .file 1 "../libSerial/src/serial.c"
   1:../libSerial/src/serial.c **** /*
   2:../libSerial/src/serial.c ****  * serial.c
   3:../libSerial/src/serial.c ****  *
   4:../libSerial/src/serial.c ****  *  Created on: 4 Jan 2016
   5:../libSerial/src/serial.c ****  *      Author: Mike
   6:../libSerial/src/serial.c ****  *
   7:../libSerial/src/serial.c ****  *      This (ab)uses the STMCubeMX HAL declarations to implement a generic STM32F1xx
   8:../libSerial/src/serial.c ****  *      USART driver layer
   9:../libSerial/src/serial.c ****  */
  10:../libSerial/src/serial.c **** 
  11:../libSerial/src/serial.c **** #include "libSerial/serial.h"
  12:../libSerial/src/serial.c **** 
  13:../libSerial/src/serial.c **** /* workspaces for the USARTS being used */
  14:../libSerial/src/serial.c **** #if defined SERIAL_UART1
  15:../libSerial/src/serial.c **** usart_ctl uc1;
  16:../libSerial/src/serial.c **** #endif
  17:../libSerial/src/serial.c **** #if defined SERIAL_UART2
  18:../libSerial/src/serial.c **** usart_ctl uc2;
  19:../libSerial/src/serial.c **** #endif
  20:../libSerial/src/serial.c **** #if defined SERIAL_UART3
  21:../libSerial/src/serial.c **** usart_ctl uc3;
  22:../libSerial/src/serial.c **** #endif
  23:../libSerial/src/serial.c **** 
  24:../libSerial/src/serial.c **** /* returns the number of characters received by the Rx USART */
  25:../libSerial/src/serial.c **** uint16_t
  26:../libSerial/src/serial.c **** SerialCharsReceived (usart_ctl *instance)
  27:../libSerial/src/serial.c **** {
  28:../libSerial/src/serial.c ****   uint16_t result = 0;      // assume no characters received yet
  29:../libSerial/src/serial.c ****   __HAL_UART_DISABLE_IT (instance, UART_IT_RXNE);
  30:../libSerial/src/serial.c **** 
  31:../libSerial/src/serial.c ****   if (instance->rx_usart_buffer_full)
  32:../libSerial/src/serial.c ****     {       // buffer is full...
ARM GAS  C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s                   page 2


  33:../libSerial/src/serial.c ****       result = RX_USART_BUFF_SIZ;
  34:../libSerial/src/serial.c ****     }
  35:../libSerial/src/serial.c ****   else if (instance->rx_usart_in_Ptr >= instance->rx_usart_out_Ptr)
  36:../libSerial/src/serial.c ****     {       // buffer has not wrapped...
  37:../libSerial/src/serial.c ****       result = instance->rx_usart_in_Ptr - instance->rx_usart_out_Ptr;
  38:../libSerial/src/serial.c ****     }
  39:../libSerial/src/serial.c ****   else
  40:../libSerial/src/serial.c ****     {       // buffer has possibly wrapped...
  41:../libSerial/src/serial.c ****       result = RX_USART_BUFF_SIZ - instance->rx_usart_out_Ptr
  42:../libSerial/src/serial.c ****       + instance->rx_usart_in_Ptr;
  43:../libSerial/src/serial.c ****     }
  44:../libSerial/src/serial.c ****   __HAL_UART_ENABLE_IT (instance, UART_IT_RXNE);
  45:../libSerial/src/serial.c **** 
  46:../libSerial/src/serial.c ****   return result;
  47:../libSerial/src/serial.c **** }
  48:../libSerial/src/serial.c **** 
  49:../libSerial/src/serial.c **** inline uint8_t
  50:../libSerial/src/serial.c **** PollSerial (usart_ctl *instance)
  51:../libSerial/src/serial.c **** {
  52:../libSerial/src/serial.c ****   uint8_t rc;
  53:../libSerial/src/serial.c **** 
  54:../libSerial/src/serial.c ****   __HAL_UART_DISABLE_IT (instance, UART_IT_RXNE);
  55:../libSerial/src/serial.c ****   rc = (instance->rx_usart_buffer_full
  56:../libSerial/src/serial.c ****       || (instance->rx_usart_in_Ptr != instance->rx_usart_out_Ptr));
  57:../libSerial/src/serial.c ****   __HAL_UART_ENABLE_IT (instance, UART_IT_RXNE);
  58:../libSerial/src/serial.c **** 
  59:../libSerial/src/serial.c ****   return rc;
  60:../libSerial/src/serial.c **** }
  61:../libSerial/src/serial.c **** 
  62:../libSerial/src/serial.c **** /***!
  63:../libSerial/src/serial.c ****  * @brief return the next character in the Serial input buffer
  64:../libSerial/src/serial.c ****  * This function will wait until a character arrives.
  65:../libSerial/src/serial.c ****  */
  66:../libSerial/src/serial.c **** inline uint8_t
  67:../libSerial/src/serial.c **** GetCharSerial (usart_ctl *instance)
  68:../libSerial/src/serial.c **** {
  69:../libSerial/src/serial.c ****   uint8_t c;
  70:../libSerial/src/serial.c ****   __HAL_UART_DISABLE_IT (instance, UART_IT_RXNE);
  71:../libSerial/src/serial.c ****   while (!instance->rx_usart_buffer_full
  72:../libSerial/src/serial.c ****       && (instance->rx_usart_in_Ptr == instance->rx_usart_out_Ptr))
  73:../libSerial/src/serial.c ****     {
  74:../libSerial/src/serial.c ****       __HAL_UART_ENABLE_IT (instance, UART_IT_RXNE);
  75:../libSerial/src/serial.c ****       __WFI (); /* wait for something */
  76:../libSerial/src/serial.c ****       __HAL_UART_DISABLE_IT (instance, UART_IT_RXNE);
  77:../libSerial/src/serial.c ****     }
  78:../libSerial/src/serial.c **** 
  79:../libSerial/src/serial.c ****   c = instance->rx_usart_buff[instance->rx_usart_out_Ptr];
  80:../libSerial/src/serial.c ****   instance->rx_usart_buffer_full = 0; /* removed character */
  81:../libSerial/src/serial.c ****   instance->rx_usart_out_Ptr++;
  82:../libSerial/src/serial.c ****   if (instance->rx_usart_out_Ptr >= RX_USART_BUFF_SIZ)
  83:../libSerial/src/serial.c ****     {
  84:../libSerial/src/serial.c ****       instance->rx_usart_out_Ptr = 0;
  85:../libSerial/src/serial.c ****     }
  86:../libSerial/src/serial.c ****   __HAL_UART_ENABLE_IT (instance, UART_IT_RXNE);
  87:../libSerial/src/serial.c ****   return c;
  88:../libSerial/src/serial.c **** }
  89:../libSerial/src/serial.c **** 
ARM GAS  C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s                   page 3


  90:../libSerial/src/serial.c **** /*
  91:../libSerial/src/serial.c ****  * \brief
  92:../libSerial/src/serial.c ****  * void EnableSerialRxInterrupt(void) - this function is used from the interrupt handler and the ma
  93:../libSerial/src/serial.c ****  * to enable the serial rx interrupt after resetting the serial rx buffer...
  94:../libSerial/src/serial.c ****  */
  95:../libSerial/src/serial.c **** inline void
  96:../libSerial/src/serial.c **** EnableSerialRxInterrupt (usart_ctl *instance)
  97:../libSerial/src/serial.c **** {
  98:../libSerial/src/serial.c ****   /* cheat here - this is a macro and I have the same Instance member as the HAL handle, with the s
  99:../libSerial/src/serial.c ****   __HAL_UART_ENABLE_IT (instance, UART_IT_RXNE);
 100:../libSerial/src/serial.c **** }
 101:../libSerial/src/serial.c **** 
 102:../libSerial/src/serial.c **** /****!
 103:../libSerial/src/serial.c ****  * @brief send a character to the serial USART via placing it in the serial buffer
 104:../libSerial/src/serial.c ****  *
 105:../libSerial/src/serial.c ****  */
 106:../libSerial/src/serial.c **** 
 107:../libSerial/src/serial.c **** static void
 108:../libSerial/src/serial.c **** PutCharSerialFIFO (usart_ctl *instance, uint8_t c)
 109:../libSerial/src/serial.c **** {
  27                            .loc 1 109 1 view -0
  28                            .cfi_startproc
  29                            @ args = 0, pretend = 0, frame = 0
  30                            @ frame_needed = 0, uses_anonymous_args = 0
  31                            @ link register save eliminated.
 110:../libSerial/src/serial.c ****   __HAL_UART_DISABLE_IT (instance, UART_IT_TXE);
  32                            .loc 1 110 3 view .LVU1
  33 0000 0268                  ldr     r2, [r0]
  34 0002 D368                  ldr     r3, [r2, #12]
  35 0004 23F08003              bic     r3, r3, #128
  36 0008 D360                  str     r3, [r2, #12]
 111:../libSerial/src/serial.c **** 
 112:../libSerial/src/serial.c ****   instance->tx_usart_buff[instance->tx_usart_in_Ptr++] = c;
  37                            .loc 1 112 3 view .LVU2
  38                            .loc 1 112 35 is_stmt 0 view .LVU3
  39 000a D0F80834              ldr     r3, [r0, #1032]
  40                            .loc 1 112 52 view .LVU4
  41 000e 5A1C                  adds    r2, r3, #1
  42 0010 C0F80824              str     r2, [r0, #1032]
  43                            .loc 1 112 56 view .LVU5
  44 0014 0344                  add     r3, r3, r0
  45 0016 1972                  strb    r1, [r3, #8]
 113:../libSerial/src/serial.c ****   instance->tx_usart_count += 1;
  46                            .loc 1 113 3 is_stmt 1 view .LVU6
  47                            .loc 1 113 28 is_stmt 0 view .LVU7
  48 0018 B0F81234              ldrh    r3, [r0, #1042]
  49 001c 0133                  adds    r3, r3, #1
  50 001e 9BB2                  uxth    r3, r3
  51 0020 A0F81234              strh    r3, [r0, #1042] @ movhi
 114:../libSerial/src/serial.c ****   if (instance->tx_usart_in_Ptr >= TX_USART_BUFF_SIZ)
  52                            .loc 1 114 3 is_stmt 1 view .LVU8
  53                            .loc 1 114 15 is_stmt 0 view .LVU9
  54 0024 D0F80834              ldr     r3, [r0, #1032]
  55                            .loc 1 114 6 view .LVU10
  56 0028 B3F5806F              cmp     r3, #1024
  57 002c 02D3                  bcc     .L2
 115:../libSerial/src/serial.c ****     {
ARM GAS  C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s                   page 4


 116:../libSerial/src/serial.c ****       instance->tx_usart_in_Ptr = 0;
  58                            .loc 1 116 7 is_stmt 1 view .LVU11
  59                            .loc 1 116 33 is_stmt 0 view .LVU12
  60 002e 0023                  movs    r3, #0
  61 0030 C0F80834              str     r3, [r0, #1032]
  62                    .L2:
 117:../libSerial/src/serial.c ****     }
 118:../libSerial/src/serial.c ****   /* Handle overrun by losing oldest characters */
 119:../libSerial/src/serial.c ****   if (instance->tx_usart_in_Ptr == instance->tx_usart_out_Ptr)
  63                            .loc 1 119 3 is_stmt 1 view .LVU13
  64                            .loc 1 119 15 is_stmt 0 view .LVU14
  65 0034 D0F80824              ldr     r2, [r0, #1032]
  66                            .loc 1 119 44 view .LVU15
  67 0038 D0F80C34              ldr     r3, [r0, #1036]
  68                            .loc 1 119 6 view .LVU16
  69 003c 9A42                  cmp     r2, r3
  70 003e 08D0                  beq     .L4
  71                    .L3:
 120:../libSerial/src/serial.c ****     {
 121:../libSerial/src/serial.c ****       instance->tx_usart_out_Ptr++;
 122:../libSerial/src/serial.c ****       if (instance->tx_usart_out_Ptr >= TX_USART_BUFF_SIZ)
 123:../libSerial/src/serial.c ****     {
 124:../libSerial/src/serial.c ****       instance->tx_usart_out_Ptr = 0;
 125:../libSerial/src/serial.c ****     }
 126:../libSerial/src/serial.c ****     }
 127:../libSerial/src/serial.c **** 
 128:../libSerial/src/serial.c ****   instance->tx_usart_running = 1;
  72                            .loc 1 128 3 is_stmt 1 view .LVU17
  73                            .loc 1 128 30 is_stmt 0 view .LVU18
  74 0040 0123                  movs    r3, #1
  75 0042 80F81034              strb    r3, [r0, #1040]
 129:../libSerial/src/serial.c ****   __HAL_UART_ENABLE_IT (instance, UART_IT_TXE);
  76                            .loc 1 129 3 is_stmt 1 view .LVU19
  77 0046 0268                  ldr     r2, [r0]
  78 0048 D368                  ldr     r3, [r2, #12]
  79 004a 43F08003              orr     r3, r3, #128
  80 004e D360                  str     r3, [r2, #12]
 130:../libSerial/src/serial.c **** }
  81                            .loc 1 130 1 is_stmt 0 view .LVU20
  82 0050 7047                  bx      lr
  83                    .L4:
 121:../libSerial/src/serial.c ****       if (instance->tx_usart_out_Ptr >= TX_USART_BUFF_SIZ)
  84                            .loc 1 121 7 is_stmt 1 view .LVU21
 121:../libSerial/src/serial.c ****       if (instance->tx_usart_out_Ptr >= TX_USART_BUFF_SIZ)
  85                            .loc 1 121 15 is_stmt 0 view .LVU22
  86 0052 D0F80C34              ldr     r3, [r0, #1036]
 121:../libSerial/src/serial.c ****       if (instance->tx_usart_out_Ptr >= TX_USART_BUFF_SIZ)
  87                            .loc 1 121 33 view .LVU23
  88 0056 0133                  adds    r3, r3, #1
  89 0058 C0F80C34              str     r3, [r0, #1036]
 122:../libSerial/src/serial.c ****     {
  90                            .loc 1 122 7 is_stmt 1 view .LVU24
 122:../libSerial/src/serial.c ****     {
  91                            .loc 1 122 19 is_stmt 0 view .LVU25
  92 005c D0F80C34              ldr     r3, [r0, #1036]
 122:../libSerial/src/serial.c ****     {
  93                            .loc 1 122 10 view .LVU26
ARM GAS  C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s                   page 5


  94 0060 B3F5806F              cmp     r3, #1024
  95 0064 ECD3                  bcc     .L3
 124:../libSerial/src/serial.c ****     }
  96                            .loc 1 124 4 is_stmt 1 view .LVU27
 124:../libSerial/src/serial.c ****     }
  97                            .loc 1 124 31 is_stmt 0 view .LVU28
  98 0066 0023                  movs    r3, #0
  99 0068 C0F80C34              str     r3, [r0, #1036]
 100 006c E8E7                  b       .L3
 101                            .cfi_endproc
 102                    .LFE69:
 104                            .section        .text.SerialCharsReceived,"ax",%progbits
 105                            .align  1
 106                            .global SerialCharsReceived
 107                            .syntax unified
 108                            .thumb
 109                            .thumb_func
 110                            .fpu softvfp
 112                    SerialCharsReceived:
 113                    .LVL1:
 114                    .LFB65:
  27:../libSerial/src/serial.c ****   uint16_t result = 0;      // assume no characters received yet
 115                            .loc 1 27 1 is_stmt 1 view -0
 116                            .cfi_startproc
 117                            @ args = 0, pretend = 0, frame = 0
 118                            @ frame_needed = 0, uses_anonymous_args = 0
 119                            @ link register save eliminated.
  27:../libSerial/src/serial.c ****   uint16_t result = 0;      // assume no characters received yet
 120                            .loc 1 27 1 is_stmt 0 view .LVU30
 121 0000 0346                  mov     r3, r0
  28:../libSerial/src/serial.c ****   __HAL_UART_DISABLE_IT (instance, UART_IT_RXNE);
 122                            .loc 1 28 3 is_stmt 1 view .LVU31
 123                    .LVL2:
  29:../libSerial/src/serial.c **** 
 124                            .loc 1 29 3 view .LVU32
 125 0002 0168                  ldr     r1, [r0]
 126 0004 CA68                  ldr     r2, [r1, #12]
 127 0006 22F02002              bic     r2, r2, #32
 128 000a CA60                  str     r2, [r1, #12]
  31:../libSerial/src/serial.c ****     {       // buffer is full...
 129                            .loc 1 31 3 view .LVU33
  31:../libSerial/src/serial.c ****     {       // buffer is full...
 130                            .loc 1 31 15 is_stmt 0 view .LVU34
 131 000c 90F81C28              ldrb    r2, [r0, #2076] @ zero_extendqisi2
  31:../libSerial/src/serial.c ****     {       // buffer is full...
 132                            .loc 1 31 6 view .LVU35
 133 0010 C2B9                  cbnz    r2, .L8
  35:../libSerial/src/serial.c ****     {       // buffer has not wrapped...
 134                            .loc 1 35 8 is_stmt 1 view .LVU36
  35:../libSerial/src/serial.c ****     {       // buffer has not wrapped...
 135                            .loc 1 35 20 is_stmt 0 view .LVU37
 136 0012 D0F81418              ldr     r1, [r0, #2068]
  35:../libSerial/src/serial.c ****     {       // buffer has not wrapped...
 137                            .loc 1 35 49 view .LVU38
 138 0016 D0F81828              ldr     r2, [r0, #2072]
  35:../libSerial/src/serial.c ****     {       // buffer has not wrapped...
 139                            .loc 1 35 11 view .LVU39
ARM GAS  C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s                   page 6


 140 001a 9142                  cmp     r1, r2
 141 001c 08D3                  bcc     .L7
  37:../libSerial/src/serial.c ****     }
 142                            .loc 1 37 7 is_stmt 1 view .LVU40
  37:../libSerial/src/serial.c ****     }
 143                            .loc 1 37 24 is_stmt 0 view .LVU41
 144 001e D0F81408              ldr     r0, [r0, #2068]
 145                    .LVL3:
  37:../libSerial/src/serial.c ****     }
 146                            .loc 1 37 42 view .LVU42
 147 0022 80B2                  uxth    r0, r0
  37:../libSerial/src/serial.c ****     }
 148                            .loc 1 37 52 view .LVU43
 149 0024 D3F81828              ldr     r2, [r3, #2072]
  37:../libSerial/src/serial.c ****     }
 150                            .loc 1 37 42 view .LVU44
 151 0028 92B2                  uxth    r2, r2
  37:../libSerial/src/serial.c ****     }
 152                            .loc 1 37 14 view .LVU45
 153 002a 801A                  subs    r0, r0, r2
 154 002c 80B2                  uxth    r0, r0
 155                    .LVL4:
  37:../libSerial/src/serial.c ****     }
 156                            .loc 1 37 14 view .LVU46
 157 002e 0BE0                  b       .L6
 158                    .LVL5:
 159                    .L7:
  41:../libSerial/src/serial.c ****       + instance->rx_usart_in_Ptr;
 160                            .loc 1 41 7 is_stmt 1 view .LVU47
  42:../libSerial/src/serial.c ****     }
 161                            .loc 1 42 14 is_stmt 0 view .LVU48
 162 0030 D0F81408              ldr     r0, [r0, #2068]
 163                    .LVL6:
  41:../libSerial/src/serial.c ****       + instance->rx_usart_in_Ptr;
 164                            .loc 1 41 44 view .LVU49
 165 0034 D3F81828              ldr     r2, [r3, #2072]
  42:../libSerial/src/serial.c ****     }
 166                            .loc 1 42 4 view .LVU50
 167 0038 801A                  subs    r0, r0, r2
 168 003a 80B2                  uxth    r0, r0
  41:../libSerial/src/serial.c ****       + instance->rx_usart_in_Ptr;
 169                            .loc 1 41 14 view .LVU51
 170 003c 00F58060              add     r0, r0, #1024
 171 0040 80B2                  uxth    r0, r0
 172                    .LVL7:
  41:../libSerial/src/serial.c ****       + instance->rx_usart_in_Ptr;
 173                            .loc 1 41 14 view .LVU52
 174 0042 01E0                  b       .L6
 175                    .LVL8:
 176                    .L8:
  33:../libSerial/src/serial.c ****     }
 177                            .loc 1 33 14 view .LVU53
 178 0044 4FF48060              mov     r0, #1024
 179                    .LVL9:
 180                    .L6:
  44:../libSerial/src/serial.c **** 
 181                            .loc 1 44 3 is_stmt 1 view .LVU54
ARM GAS  C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s                   page 7


 182 0048 1A68                  ldr     r2, [r3]
 183 004a D368                  ldr     r3, [r2, #12]
 184                    .LVL10:
  44:../libSerial/src/serial.c **** 
 185                            .loc 1 44 3 is_stmt 0 view .LVU55
 186 004c 43F02003              orr     r3, r3, #32
 187 0050 D360                  str     r3, [r2, #12]
  46:../libSerial/src/serial.c **** }
 188                            .loc 1 46 3 is_stmt 1 view .LVU56
  47:../libSerial/src/serial.c **** 
 189                            .loc 1 47 1 is_stmt 0 view .LVU57
 190 0052 7047                  bx      lr
 191                            .cfi_endproc
 192                    .LFE65:
 194                            .section        .text.PollSerial,"ax",%progbits
 195                            .align  1
 196                            .global PollSerial
 197                            .syntax unified
 198                            .thumb
 199                            .thumb_func
 200                            .fpu softvfp
 202                    PollSerial:
 203                    .LVL11:
 204                    .LFB66:
  51:../libSerial/src/serial.c ****   uint8_t rc;
 205                            .loc 1 51 1 is_stmt 1 view -0
 206                            .cfi_startproc
 207                            @ args = 0, pretend = 0, frame = 0
 208                            @ frame_needed = 0, uses_anonymous_args = 0
 209                            @ link register save eliminated.
  51:../libSerial/src/serial.c ****   uint8_t rc;
 210                            .loc 1 51 1 is_stmt 0 view .LVU59
 211 0000 0346                  mov     r3, r0
  52:../libSerial/src/serial.c **** 
 212                            .loc 1 52 3 is_stmt 1 view .LVU60
  54:../libSerial/src/serial.c ****   rc = (instance->rx_usart_buffer_full
 213                            .loc 1 54 3 view .LVU61
 214 0002 0168                  ldr     r1, [r0]
 215 0004 CA68                  ldr     r2, [r1, #12]
 216 0006 22F02002              bic     r2, r2, #32
 217 000a CA60                  str     r2, [r1, #12]
  55:../libSerial/src/serial.c ****       || (instance->rx_usart_in_Ptr != instance->rx_usart_out_Ptr));
 218                            .loc 1 55 3 view .LVU62
  55:../libSerial/src/serial.c ****       || (instance->rx_usart_in_Ptr != instance->rx_usart_out_Ptr));
 219                            .loc 1 55 17 is_stmt 0 view .LVU63
 220 000c 90F81C28              ldrb    r2, [r0, #2076] @ zero_extendqisi2
  56:../libSerial/src/serial.c ****   __HAL_UART_ENABLE_IT (instance, UART_IT_RXNE);
 221                            .loc 1 56 7 view .LVU64
 222 0010 3AB9                  cbnz    r2, .L11
  56:../libSerial/src/serial.c ****   __HAL_UART_ENABLE_IT (instance, UART_IT_RXNE);
 223                            .loc 1 56 19 discriminator 2 view .LVU65
 224 0012 D0F81418              ldr     r1, [r0, #2068]
  56:../libSerial/src/serial.c ****   __HAL_UART_ENABLE_IT (instance, UART_IT_RXNE);
 225                            .loc 1 56 48 discriminator 2 view .LVU66
 226 0016 D0F81828              ldr     r2, [r0, #2072]
  56:../libSerial/src/serial.c ****   __HAL_UART_ENABLE_IT (instance, UART_IT_RXNE);
 227                            .loc 1 56 7 discriminator 2 view .LVU67
ARM GAS  C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s                   page 8


 228 001a 9142                  cmp     r1, r2
 229 001c 08D0                  beq     .L12
  56:../libSerial/src/serial.c ****   __HAL_UART_ENABLE_IT (instance, UART_IT_RXNE);
 230                            .loc 1 56 7 view .LVU68
 231 001e 0120                  movs    r0, #1
 232                    .LVL12:
  56:../libSerial/src/serial.c ****   __HAL_UART_ENABLE_IT (instance, UART_IT_RXNE);
 233                            .loc 1 56 7 view .LVU69
 234 0020 00E0                  b       .L10
 235                    .LVL13:
 236                    .L11:
  56:../libSerial/src/serial.c ****   __HAL_UART_ENABLE_IT (instance, UART_IT_RXNE);
 237                            .loc 1 56 7 view .LVU70
 238 0022 0120                  movs    r0, #1
 239                    .LVL14:
 240                    .L10:
  57:../libSerial/src/serial.c **** 
 241                            .loc 1 57 3 is_stmt 1 view .LVU71
 242 0024 1A68                  ldr     r2, [r3]
 243 0026 D368                  ldr     r3, [r2, #12]
 244                    .LVL15:
  57:../libSerial/src/serial.c **** 
 245                            .loc 1 57 3 is_stmt 0 view .LVU72
 246 0028 43F02003              orr     r3, r3, #32
 247 002c D360                  str     r3, [r2, #12]
  59:../libSerial/src/serial.c **** }
 248                            .loc 1 59 3 is_stmt 1 view .LVU73
  60:../libSerial/src/serial.c **** 
 249                            .loc 1 60 1 is_stmt 0 view .LVU74
 250 002e 7047                  bx      lr
 251                    .LVL16:
 252                    .L12:
  56:../libSerial/src/serial.c ****   __HAL_UART_ENABLE_IT (instance, UART_IT_RXNE);
 253                            .loc 1 56 7 view .LVU75
 254 0030 0020                  movs    r0, #0
 255                    .LVL17:
  56:../libSerial/src/serial.c ****   __HAL_UART_ENABLE_IT (instance, UART_IT_RXNE);
 256                            .loc 1 56 7 view .LVU76
 257 0032 F7E7                  b       .L10
 258                            .cfi_endproc
 259                    .LFE66:
 261                            .section        .text.GetCharSerial,"ax",%progbits
 262                            .align  1
 263                            .global GetCharSerial
 264                            .syntax unified
 265                            .thumb
 266                            .thumb_func
 267                            .fpu softvfp
 269                    GetCharSerial:
 270                    .LVL18:
 271                    .LFB67:
  68:../libSerial/src/serial.c ****   uint8_t c;
 272                            .loc 1 68 1 is_stmt 1 view -0
 273                            .cfi_startproc
 274                            @ args = 0, pretend = 0, frame = 0
 275                            @ frame_needed = 0, uses_anonymous_args = 0
 276                            @ link register save eliminated.
ARM GAS  C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s                   page 9


  68:../libSerial/src/serial.c ****   uint8_t c;
 277                            .loc 1 68 1 is_stmt 0 view .LVU78
 278 0000 0346                  mov     r3, r0
  69:../libSerial/src/serial.c ****   __HAL_UART_DISABLE_IT (instance, UART_IT_RXNE);
 279                            .loc 1 69 3 is_stmt 1 view .LVU79
  70:../libSerial/src/serial.c ****   while (!instance->rx_usart_buffer_full
 280                            .loc 1 70 3 view .LVU80
 281 0002 0168                  ldr     r1, [r0]
 282 0004 CA68                  ldr     r2, [r1, #12]
 283 0006 22F02002              bic     r2, r2, #32
 284 000a CA60                  str     r2, [r1, #12]
  71:../libSerial/src/serial.c ****       && (instance->rx_usart_in_Ptr == instance->rx_usart_out_Ptr))
 285                            .loc 1 71 3 view .LVU81
 286                    .L14:
  71:../libSerial/src/serial.c ****       && (instance->rx_usart_in_Ptr == instance->rx_usart_out_Ptr))
 287                            .loc 1 71 19 is_stmt 0 view .LVU82
 288 000c 93F81C28              ldrb    r2, [r3, #2076] @ zero_extendqisi2
  71:../libSerial/src/serial.c ****       && (instance->rx_usart_in_Ptr == instance->rx_usart_out_Ptr))
 289                            .loc 1 71 9 view .LVU83
 290 0010 8AB9                  cbnz    r2, .L15
  72:../libSerial/src/serial.c ****     {
 291                            .loc 1 72 19 view .LVU84
 292 0012 D3F81418              ldr     r1, [r3, #2068]
  72:../libSerial/src/serial.c ****     {
 293                            .loc 1 72 48 view .LVU85
 294 0016 D3F81828              ldr     r2, [r3, #2072]
  72:../libSerial/src/serial.c ****     {
 295                            .loc 1 72 7 view .LVU86
 296 001a 9142                  cmp     r1, r2
 297 001c 0BD1                  bne     .L15
  74:../libSerial/src/serial.c ****       __WFI (); /* wait for something */
 298                            .loc 1 74 7 is_stmt 1 view .LVU87
 299 001e 1968                  ldr     r1, [r3]
 300 0020 CA68                  ldr     r2, [r1, #12]
 301 0022 42F02002              orr     r2, r2, #32
 302 0026 CA60                  str     r2, [r1, #12]
  75:../libSerial/src/serial.c ****       __HAL_UART_DISABLE_IT (instance, UART_IT_RXNE);
 303                            .loc 1 75 7 view .LVU88
 304                            .syntax unified
 305                    @ 75 "../libSerial/src/serial.c" 1
 306 0028 30BF                  wfi
 307                    @ 0 "" 2
  76:../libSerial/src/serial.c ****     }
 308                            .loc 1 76 7 view .LVU89
 309                            .thumb
 310                            .syntax unified
 311 002a 1968                  ldr     r1, [r3]
 312 002c CA68                  ldr     r2, [r1, #12]
 313 002e 22F02002              bic     r2, r2, #32
 314 0032 CA60                  str     r2, [r1, #12]
 315 0034 EAE7                  b       .L14
 316                    .L15:
  79:../libSerial/src/serial.c ****   instance->rx_usart_buffer_full = 0; /* removed character */
 317                            .loc 1 79 3 view .LVU90
  79:../libSerial/src/serial.c ****   instance->rx_usart_buffer_full = 0; /* removed character */
 318                            .loc 1 79 39 is_stmt 0 view .LVU91
 319 0036 D3F81828              ldr     r2, [r3, #2072]
ARM GAS  C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s                   page 10


  79:../libSerial/src/serial.c ****   instance->rx_usart_buffer_full = 0; /* removed character */
 320                            .loc 1 79 5 view .LVU92
 321 003a 1A44                  add     r2, r2, r3
 322 003c 92F81404              ldrb    r0, [r2, #1044] @ zero_extendqisi2
 323                    .LVL19:
  79:../libSerial/src/serial.c ****   instance->rx_usart_buffer_full = 0; /* removed character */
 324                            .loc 1 79 5 view .LVU93
 325 0040 C0B2                  uxtb    r0, r0
 326                    .LVL20:
  80:../libSerial/src/serial.c ****   instance->rx_usart_out_Ptr++;
 327                            .loc 1 80 3 is_stmt 1 view .LVU94
  80:../libSerial/src/serial.c ****   instance->rx_usart_out_Ptr++;
 328                            .loc 1 80 34 is_stmt 0 view .LVU95
 329 0042 0022                  movs    r2, #0
 330 0044 83F81C28              strb    r2, [r3, #2076]
  81:../libSerial/src/serial.c ****   if (instance->rx_usart_out_Ptr >= RX_USART_BUFF_SIZ)
 331                            .loc 1 81 3 is_stmt 1 view .LVU96
  81:../libSerial/src/serial.c ****   if (instance->rx_usart_out_Ptr >= RX_USART_BUFF_SIZ)
 332                            .loc 1 81 11 is_stmt 0 view .LVU97
 333 0048 D3F81828              ldr     r2, [r3, #2072]
  81:../libSerial/src/serial.c ****   if (instance->rx_usart_out_Ptr >= RX_USART_BUFF_SIZ)
 334                            .loc 1 81 29 view .LVU98
 335 004c 0132                  adds    r2, r2, #1
 336 004e C3F81828              str     r2, [r3, #2072]
  82:../libSerial/src/serial.c ****     {
 337                            .loc 1 82 3 is_stmt 1 view .LVU99
  82:../libSerial/src/serial.c ****     {
 338                            .loc 1 82 15 is_stmt 0 view .LVU100
 339 0052 D3F81828              ldr     r2, [r3, #2072]
  82:../libSerial/src/serial.c ****     {
 340                            .loc 1 82 6 view .LVU101
 341 0056 B2F5806F              cmp     r2, #1024
 342 005a 02D3                  bcc     .L17
  84:../libSerial/src/serial.c ****     }
 343                            .loc 1 84 7 is_stmt 1 view .LVU102
  84:../libSerial/src/serial.c ****     }
 344                            .loc 1 84 34 is_stmt 0 view .LVU103
 345 005c 0022                  movs    r2, #0
 346 005e C3F81828              str     r2, [r3, #2072]
 347                    .L17:
  86:../libSerial/src/serial.c ****   return c;
 348                            .loc 1 86 3 is_stmt 1 view .LVU104
 349 0062 1A68                  ldr     r2, [r3]
 350 0064 D368                  ldr     r3, [r2, #12]
 351                    .LVL21:
  86:../libSerial/src/serial.c ****   return c;
 352                            .loc 1 86 3 is_stmt 0 view .LVU105
 353 0066 43F02003              orr     r3, r3, #32
 354 006a D360                  str     r3, [r2, #12]
  87:../libSerial/src/serial.c **** }
 355                            .loc 1 87 3 is_stmt 1 view .LVU106
  88:../libSerial/src/serial.c **** 
 356                            .loc 1 88 1 is_stmt 0 view .LVU107
 357 006c 7047                  bx      lr
 358                            .cfi_endproc
 359                    .LFE67:
 361                            .section        .text.EnableSerialRxInterrupt,"ax",%progbits
ARM GAS  C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s                   page 11


 362                            .align  1
 363                            .global EnableSerialRxInterrupt
 364                            .syntax unified
 365                            .thumb
 366                            .thumb_func
 367                            .fpu softvfp
 369                    EnableSerialRxInterrupt:
 370                    .LVL22:
 371                    .LFB68:
  97:../libSerial/src/serial.c ****   /* cheat here - this is a macro and I have the same Instance member as the HAL handle, with the s
 372                            .loc 1 97 1 is_stmt 1 view -0
 373                            .cfi_startproc
 374                            @ args = 0, pretend = 0, frame = 0
 375                            @ frame_needed = 0, uses_anonymous_args = 0
 376                            @ link register save eliminated.
  99:../libSerial/src/serial.c **** }
 377                            .loc 1 99 3 view .LVU109
 378 0000 0268                  ldr     r2, [r0]
 379 0002 D368                  ldr     r3, [r2, #12]
 380 0004 43F02003              orr     r3, r3, #32
 381 0008 D360                  str     r3, [r2, #12]
 100:../libSerial/src/serial.c **** 
 382                            .loc 1 100 1 is_stmt 0 view .LVU110
 383 000a 7047                  bx      lr
 384                            .cfi_endproc
 385                    .LFE68:
 387                            .section        .text.UART_IRQHandler,"ax",%progbits
 388                            .align  1
 389                            .global UART_IRQHandler
 390                            .syntax unified
 391                            .thumb
 392                            .thumb_func
 393                            .fpu softvfp
 395                    UART_IRQHandler:
 396                    .LVL23:
 397                    .LFB70:
 131:../libSerial/src/serial.c **** 
 132:../libSerial/src/serial.c **** void
 133:../libSerial/src/serial.c **** UART_IRQHandler (usart_ctl *instance)
 134:../libSerial/src/serial.c **** {
 398                            .loc 1 134 1 is_stmt 1 view -0
 399                            .cfi_startproc
 400                            @ args = 0, pretend = 0, frame = 0
 401                            @ frame_needed = 0, uses_anonymous_args = 0
 402                            @ link register save eliminated.
 403                            .loc 1 134 1 is_stmt 0 view .LVU112
 404 0000 30B4                  push    {r4, r5}
 405                    .LCFI0:
 406                            .cfi_def_cfa_offset 8
 407                            .cfi_offset 4, -8
 408                            .cfi_offset 5, -4
 135:../libSerial/src/serial.c **** 
 136:../libSerial/src/serial.c ****   __disable_irq ();
 409                            .loc 1 136 3 is_stmt 1 view .LVU113
 410                    .LBB7:
 411                    .LBI7:
 412                            .file 2 "Drivers/CMSIS/Include/cmsis_gcc.h"
ARM GAS  C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s                   page 12


   1:Drivers/CMSIS/Include/cmsis_gcc.h **** /**************************************************************************//**
   2:Drivers/CMSIS/Include/cmsis_gcc.h ****  * @file     cmsis_gcc.h
   3:Drivers/CMSIS/Include/cmsis_gcc.h ****  * @brief    CMSIS compiler GCC header file
   4:Drivers/CMSIS/Include/cmsis_gcc.h ****  * @version  V5.0.4
   5:Drivers/CMSIS/Include/cmsis_gcc.h ****  * @date     09. April 2018
   6:Drivers/CMSIS/Include/cmsis_gcc.h ****  ******************************************************************************/
   7:Drivers/CMSIS/Include/cmsis_gcc.h **** /*
   8:Drivers/CMSIS/Include/cmsis_gcc.h ****  * Copyright (c) 2009-2018 Arm Limited. All rights reserved.
   9:Drivers/CMSIS/Include/cmsis_gcc.h ****  *
  10:Drivers/CMSIS/Include/cmsis_gcc.h ****  * SPDX-License-Identifier: Apache-2.0
  11:Drivers/CMSIS/Include/cmsis_gcc.h ****  *
  12:Drivers/CMSIS/Include/cmsis_gcc.h ****  * Licensed under the Apache License, Version 2.0 (the License); you may
  13:Drivers/CMSIS/Include/cmsis_gcc.h ****  * not use this file except in compliance with the License.
  14:Drivers/CMSIS/Include/cmsis_gcc.h ****  * You may obtain a copy of the License at
  15:Drivers/CMSIS/Include/cmsis_gcc.h ****  *
  16:Drivers/CMSIS/Include/cmsis_gcc.h ****  * www.apache.org/licenses/LICENSE-2.0
  17:Drivers/CMSIS/Include/cmsis_gcc.h ****  *
  18:Drivers/CMSIS/Include/cmsis_gcc.h ****  * Unless required by applicable law or agreed to in writing, software
  19:Drivers/CMSIS/Include/cmsis_gcc.h ****  * distributed under the License is distributed on an AS IS BASIS, WITHOUT
  20:Drivers/CMSIS/Include/cmsis_gcc.h ****  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  21:Drivers/CMSIS/Include/cmsis_gcc.h ****  * See the License for the specific language governing permissions and
  22:Drivers/CMSIS/Include/cmsis_gcc.h ****  * limitations under the License.
  23:Drivers/CMSIS/Include/cmsis_gcc.h ****  */
  24:Drivers/CMSIS/Include/cmsis_gcc.h **** 
  25:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __CMSIS_GCC_H
  26:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_H
  27:Drivers/CMSIS/Include/cmsis_gcc.h **** 
  28:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ignore some GCC warnings */
  29:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
  30:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wsign-conversion"
  31:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wconversion"
  32:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wunused-parameter"
  33:Drivers/CMSIS/Include/cmsis_gcc.h **** 
  34:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Fallback for __has_builtin */
  35:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __has_builtin
  36:Drivers/CMSIS/Include/cmsis_gcc.h ****   #define __has_builtin(x) (0)
  37:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  38:Drivers/CMSIS/Include/cmsis_gcc.h **** 
  39:Drivers/CMSIS/Include/cmsis_gcc.h **** /* CMSIS compiler specific defines */
  40:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef   __ASM
  41:Drivers/CMSIS/Include/cmsis_gcc.h ****   #define __ASM                                  __asm
  42:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  43:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef   __INLINE
  44:Drivers/CMSIS/Include/cmsis_gcc.h ****   #define __INLINE                               inline
  45:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  46:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef   __STATIC_INLINE
  47:Drivers/CMSIS/Include/cmsis_gcc.h ****   #define __STATIC_INLINE                        static inline
  48:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  49:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef   __STATIC_FORCEINLINE                 
  50:Drivers/CMSIS/Include/cmsis_gcc.h ****   #define __STATIC_FORCEINLINE                   __attribute__((always_inline)) static inline
  51:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif                                           
  52:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef   __NO_RETURN
  53:Drivers/CMSIS/Include/cmsis_gcc.h ****   #define __NO_RETURN                            __attribute__((__noreturn__))
  54:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  55:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef   __USED
  56:Drivers/CMSIS/Include/cmsis_gcc.h ****   #define __USED                                 __attribute__((used))
  57:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
ARM GAS  C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s                   page 13


  58:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef   __WEAK
  59:Drivers/CMSIS/Include/cmsis_gcc.h ****   #define __WEAK                                 __attribute__((weak))
  60:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  61:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef   __PACKED
  62:Drivers/CMSIS/Include/cmsis_gcc.h ****   #define __PACKED                               __attribute__((packed, aligned(1)))
  63:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  64:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef   __PACKED_STRUCT
  65:Drivers/CMSIS/Include/cmsis_gcc.h ****   #define __PACKED_STRUCT                        struct __attribute__((packed, aligned(1)))
  66:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  67:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef   __PACKED_UNION
  68:Drivers/CMSIS/Include/cmsis_gcc.h ****   #define __PACKED_UNION                         union __attribute__((packed, aligned(1)))
  69:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  70:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef   __UNALIGNED_UINT32        /* deprecated */
  71:Drivers/CMSIS/Include/cmsis_gcc.h ****   #pragma GCC diagnostic push
  72:Drivers/CMSIS/Include/cmsis_gcc.h ****   #pragma GCC diagnostic ignored "-Wpacked"
  73:Drivers/CMSIS/Include/cmsis_gcc.h ****   #pragma GCC diagnostic ignored "-Wattributes"
  74:Drivers/CMSIS/Include/cmsis_gcc.h ****   struct __attribute__((packed)) T_UINT32 { uint32_t v; };
  75:Drivers/CMSIS/Include/cmsis_gcc.h ****   #pragma GCC diagnostic pop
  76:Drivers/CMSIS/Include/cmsis_gcc.h ****   #define __UNALIGNED_UINT32(x)                  (((struct T_UINT32 *)(x))->v)
  77:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  78:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef   __UNALIGNED_UINT16_WRITE
  79:Drivers/CMSIS/Include/cmsis_gcc.h ****   #pragma GCC diagnostic push
  80:Drivers/CMSIS/Include/cmsis_gcc.h ****   #pragma GCC diagnostic ignored "-Wpacked"
  81:Drivers/CMSIS/Include/cmsis_gcc.h ****   #pragma GCC diagnostic ignored "-Wattributes"
  82:Drivers/CMSIS/Include/cmsis_gcc.h ****   __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };
  83:Drivers/CMSIS/Include/cmsis_gcc.h ****   #pragma GCC diagnostic pop
  84:Drivers/CMSIS/Include/cmsis_gcc.h ****   #define __UNALIGNED_UINT16_WRITE(addr, val)    (void)((((struct T_UINT16_WRITE *)(void *)(addr))-
  85:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  86:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef   __UNALIGNED_UINT16_READ
  87:Drivers/CMSIS/Include/cmsis_gcc.h ****   #pragma GCC diagnostic push
  88:Drivers/CMSIS/Include/cmsis_gcc.h ****   #pragma GCC diagnostic ignored "-Wpacked"
  89:Drivers/CMSIS/Include/cmsis_gcc.h ****   #pragma GCC diagnostic ignored "-Wattributes"
  90:Drivers/CMSIS/Include/cmsis_gcc.h ****   __PACKED_STRUCT T_UINT16_READ { uint16_t v; };
  91:Drivers/CMSIS/Include/cmsis_gcc.h ****   #pragma GCC diagnostic pop
  92:Drivers/CMSIS/Include/cmsis_gcc.h ****   #define __UNALIGNED_UINT16_READ(addr)          (((const struct T_UINT16_READ *)(const void *)(add
  93:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  94:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef   __UNALIGNED_UINT32_WRITE
  95:Drivers/CMSIS/Include/cmsis_gcc.h ****   #pragma GCC diagnostic push
  96:Drivers/CMSIS/Include/cmsis_gcc.h ****   #pragma GCC diagnostic ignored "-Wpacked"
  97:Drivers/CMSIS/Include/cmsis_gcc.h ****   #pragma GCC diagnostic ignored "-Wattributes"
  98:Drivers/CMSIS/Include/cmsis_gcc.h ****   __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };
  99:Drivers/CMSIS/Include/cmsis_gcc.h ****   #pragma GCC diagnostic pop
 100:Drivers/CMSIS/Include/cmsis_gcc.h ****   #define __UNALIGNED_UINT32_WRITE(addr, val)    (void)((((struct T_UINT32_WRITE *)(void *)(addr))-
 101:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
 102:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef   __UNALIGNED_UINT32_READ
 103:Drivers/CMSIS/Include/cmsis_gcc.h ****   #pragma GCC diagnostic push
 104:Drivers/CMSIS/Include/cmsis_gcc.h ****   #pragma GCC diagnostic ignored "-Wpacked"
 105:Drivers/CMSIS/Include/cmsis_gcc.h ****   #pragma GCC diagnostic ignored "-Wattributes"
 106:Drivers/CMSIS/Include/cmsis_gcc.h ****   __PACKED_STRUCT T_UINT32_READ { uint32_t v; };
 107:Drivers/CMSIS/Include/cmsis_gcc.h ****   #pragma GCC diagnostic pop
 108:Drivers/CMSIS/Include/cmsis_gcc.h ****   #define __UNALIGNED_UINT32_READ(addr)          (((const struct T_UINT32_READ *)(const void *)(add
 109:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
 110:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef   __ALIGNED
 111:Drivers/CMSIS/Include/cmsis_gcc.h ****   #define __ALIGNED(x)                           __attribute__((aligned(x)))
 112:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
 113:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef   __RESTRICT
 114:Drivers/CMSIS/Include/cmsis_gcc.h ****   #define __RESTRICT                             __restrict
ARM GAS  C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s                   page 14


 115:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
 116:Drivers/CMSIS/Include/cmsis_gcc.h **** 
 117:Drivers/CMSIS/Include/cmsis_gcc.h **** 
 118:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ###########################  Core Function Access  ########################### */
 119:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \ingroup  CMSIS_Core_FunctionInterface
 120:Drivers/CMSIS/Include/cmsis_gcc.h ****     \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions
 121:Drivers/CMSIS/Include/cmsis_gcc.h ****   @{
 122:Drivers/CMSIS/Include/cmsis_gcc.h ****  */
 123:Drivers/CMSIS/Include/cmsis_gcc.h **** 
 124:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
 125:Drivers/CMSIS/Include/cmsis_gcc.h ****   \brief   Enable IRQ Interrupts
 126:Drivers/CMSIS/Include/cmsis_gcc.h ****   \details Enables IRQ interrupts by clearing the I-bit in the CPSR.
 127:Drivers/CMSIS/Include/cmsis_gcc.h ****            Can only be executed in Privileged modes.
 128:Drivers/CMSIS/Include/cmsis_gcc.h ****  */
 129:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __enable_irq(void)
 130:Drivers/CMSIS/Include/cmsis_gcc.h **** {
 131:Drivers/CMSIS/Include/cmsis_gcc.h ****   __ASM volatile ("cpsie i" : : : "memory");
 132:Drivers/CMSIS/Include/cmsis_gcc.h **** }
 133:Drivers/CMSIS/Include/cmsis_gcc.h **** 
 134:Drivers/CMSIS/Include/cmsis_gcc.h **** 
 135:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
 136:Drivers/CMSIS/Include/cmsis_gcc.h ****   \brief   Disable IRQ Interrupts
 137:Drivers/CMSIS/Include/cmsis_gcc.h ****   \details Disables IRQ interrupts by setting the I-bit in the CPSR.
 138:Drivers/CMSIS/Include/cmsis_gcc.h ****            Can only be executed in Privileged modes.
 139:Drivers/CMSIS/Include/cmsis_gcc.h ****  */
 140:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __disable_irq(void)
 413                            .loc 2 140 27 view .LVU114
 414                    .LBB8:
 141:Drivers/CMSIS/Include/cmsis_gcc.h **** {
 142:Drivers/CMSIS/Include/cmsis_gcc.h ****   __ASM volatile ("cpsid i" : : : "memory");
 415                            .loc 2 142 3 view .LVU115
 416                            .syntax unified
 417                    @ 142 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
 418 0002 72B6                  cpsid i
 419                    @ 0 "" 2
 420                            .thumb
 421                            .syntax unified
 422                    .LBE8:
 423                    .LBE7:
 137:../libSerial/src/serial.c ****   uint32_t rxStatus;        // status from USART receiver
 424                            .loc 1 137 3 view .LVU116
 138:../libSerial/src/serial.c **** 
 139:../libSerial/src/serial.c ****   rxStatus = instance->Instance->SR;// read the status bits - this resets all the hardware signalli
 425                            .loc 1 139 3 view .LVU117
 426                            .loc 1 139 22 is_stmt 0 view .LVU118
 427 0004 0368                  ldr     r3, [r0]
 428                            .loc 1 139 12 view .LVU119
 429 0006 1A68                  ldr     r2, [r3]
 430                    .LVL24:
 140:../libSerial/src/serial.c **** 
 141:../libSerial/src/serial.c ****   if (rxStatus & USART_SR_RXNE)
 431                            .loc 1 141 3 is_stmt 1 view .LVU120
 432                            .loc 1 141 6 is_stmt 0 view .LVU121
 433 0008 12F0200F              tst     r2, #32
 434 000c 1AD0                  beq     .L20
 435                    .LBB9:
 142:../libSerial/src/serial.c ****     {
ARM GAS  C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s                   page 15


 143:../libSerial/src/serial.c ****       // no error has occurred...
 144:../libSerial/src/serial.c ****       uint8_t rxChar = (uint8_t) (instance->Instance->DR & 0xff);// read the bottom 8-bits only
 436                            .loc 1 144 7 is_stmt 1 view .LVU122
 437                            .loc 1 144 53 is_stmt 0 view .LVU123
 438 000e 5968                  ldr     r1, [r3, #4]
 439                            .loc 1 144 15 view .LVU124
 440 0010 C9B2                  uxtb    r1, r1
 441                    .LVL25:
 145:../libSerial/src/serial.c **** 
 146:../libSerial/src/serial.c ****       if (!instance->rx_usart_buffer_full)
 442                            .loc 1 146 7 is_stmt 1 view .LVU125
 443                            .loc 1 146 20 is_stmt 0 view .LVU126
 444 0012 90F81C48              ldrb    r4, [r0, #2076] @ zero_extendqisi2
 445                            .loc 1 146 10 view .LVU127
 446 0016 ACB9                  cbnz    r4, .L20
 147:../libSerial/src/serial.c ****     {
 148:../libSerial/src/serial.c ****       instance->rx_usart_buff[instance->rx_usart_in_Ptr++] = rxChar;
 447                            .loc 1 148 4 is_stmt 1 view .LVU128
 448                            .loc 1 148 36 is_stmt 0 view .LVU129
 449 0018 D0F81448              ldr     r4, [r0, #2068]
 450                            .loc 1 148 53 view .LVU130
 451 001c 651C                  adds    r5, r4, #1
 452 001e C0F81458              str     r5, [r0, #2068]
 453                            .loc 1 148 57 view .LVU131
 454 0022 0444                  add     r4, r4, r0
 455 0024 84F81414              strb    r1, [r4, #1044]
 149:../libSerial/src/serial.c **** 
 150:../libSerial/src/serial.c ****       if (instance->rx_usart_in_Ptr >= RX_USART_BUFF_SIZ)
 456                            .loc 1 150 4 is_stmt 1 view .LVU132
 457                            .loc 1 150 16 is_stmt 0 view .LVU133
 458 0028 D0F81418              ldr     r1, [r0, #2068]
 459                    .LVL26:
 460                            .loc 1 150 7 view .LVU134
 461 002c B1F5806F              cmp     r1, #1024
 462 0030 02D3                  bcc     .L21
 151:../libSerial/src/serial.c ****         {
 152:../libSerial/src/serial.c ****           instance->rx_usart_in_Ptr = 0;
 463                            .loc 1 152 8 is_stmt 1 view .LVU135
 464                            .loc 1 152 34 is_stmt 0 view .LVU136
 465 0032 0021                  movs    r1, #0
 466 0034 C0F81418              str     r1, [r0, #2068]
 467                    .LVL27:
 468                    .L21:
 153:../libSerial/src/serial.c ****         }
 154:../libSerial/src/serial.c ****       if (instance->rx_usart_in_Ptr == instance->rx_usart_out_Ptr)
 469                            .loc 1 154 4 is_stmt 1 view .LVU137
 470                            .loc 1 154 16 is_stmt 0 view .LVU138
 471 0038 D0F81448              ldr     r4, [r0, #2068]
 472                            .loc 1 154 45 view .LVU139
 473 003c D0F81818              ldr     r1, [r0, #2072]
 474                            .loc 1 154 7 view .LVU140
 475 0040 8C42                  cmp     r4, r1
 476 0042 24D0                  beq     .L26
 477                    .L20:
 478                            .loc 1 154 7 view .LVU141
 479                    .LBE9:
 155:../libSerial/src/serial.c ****         {
ARM GAS  C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s                   page 16


 156:../libSerial/src/serial.c ****           instance->rx_usart_buffer_full = 1; /* buffer overrun */
 157:../libSerial/src/serial.c ****         }
 158:../libSerial/src/serial.c ****     }
 159:../libSerial/src/serial.c ****     }
 160:../libSerial/src/serial.c ****   /* check for transmitter interrupt : this code is used */
 161:../libSerial/src/serial.c ****   if ((rxStatus & USART_SR_TXE) != RESET)
 480                            .loc 1 161 3 is_stmt 1 view .LVU142
 481                            .loc 1 161 6 is_stmt 0 view .LVU143
 482 0044 12F0800F              tst     r2, #128
 483 0048 2CD0                  beq     .L22
 162:../libSerial/src/serial.c ****     {
 163:../libSerial/src/serial.c **** 
 164:../libSerial/src/serial.c ****       /* Only enable the transmitter when baud detect has completed or check expired.
 165:../libSerial/src/serial.c ****        * and the software is ready for it to be enabled as programming mode is wanting
 166:../libSerial/src/serial.c ****        * to receive a response and that can get blocked if we're streaming a lot of debug messages*
 167:../libSerial/src/serial.c ****       if (instance->tx_usart_in_Ptr != instance->tx_usart_out_Ptr)
 484                            .loc 1 167 7 is_stmt 1 view .LVU144
 485                            .loc 1 167 19 is_stmt 0 view .LVU145
 486 004a D0F80814              ldr     r1, [r0, #1032]
 487                            .loc 1 167 48 view .LVU146
 488 004e D0F80C24              ldr     r2, [r0, #1036]
 489                    .LVL28:
 490                            .loc 1 167 10 view .LVU147
 491 0052 9142                  cmp     r1, r2
 492 0054 1FD0                  beq     .L23
 168:../libSerial/src/serial.c ****     {
 169:../libSerial/src/serial.c ****       instance->Instance->DR =
 493                            .loc 1 169 4 is_stmt 1 view .LVU148
 170:../libSerial/src/serial.c ****           instance->tx_usart_buff[instance->tx_usart_out_Ptr++];
 494                            .loc 1 170 40 is_stmt 0 view .LVU149
 495 0056 D0F80C24              ldr     r2, [r0, #1036]
 496                            .loc 1 170 58 view .LVU150
 497 005a 511C                  adds    r1, r2, #1
 498 005c C0F80C14              str     r1, [r0, #1036]
 499                            .loc 1 170 31 view .LVU151
 500 0060 0244                  add     r2, r2, r0
 501 0062 127A                  ldrb    r2, [r2, #8]    @ zero_extendqisi2
 502 0064 D2B2                  uxtb    r2, r2
 169:../libSerial/src/serial.c ****           instance->tx_usart_buff[instance->tx_usart_out_Ptr++];
 503                            .loc 1 169 27 view .LVU152
 504 0066 5A60                  str     r2, [r3, #4]
 171:../libSerial/src/serial.c ****       if (instance->tx_usart_count != 0)
 505                            .loc 1 171 4 is_stmt 1 view .LVU153
 506                            .loc 1 171 16 is_stmt 0 view .LVU154
 507 0068 B0F81234              ldrh    r3, [r0, #1042]
 508 006c 9BB2                  uxth    r3, r3
 509                            .loc 1 171 7 view .LVU155
 510 006e 2BB1                  cbz     r3, .L24
 172:../libSerial/src/serial.c ****         instance->tx_usart_count -= 1;
 511                            .loc 1 172 6 is_stmt 1 view .LVU156
 512                            .loc 1 172 31 is_stmt 0 view .LVU157
 513 0070 B0F81234              ldrh    r3, [r0, #1042]
 514 0074 013B                  subs    r3, r3, #1
 515 0076 9BB2                  uxth    r3, r3
 516 0078 A0F81234              strh    r3, [r0, #1042] @ movhi
 517                    .L24:
 173:../libSerial/src/serial.c **** 
ARM GAS  C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s                   page 17


 174:../libSerial/src/serial.c ****       if (instance->tx_usart_out_Ptr >= TX_USART_BUFF_SIZ)
 518                            .loc 1 174 4 is_stmt 1 view .LVU158
 519                            .loc 1 174 16 is_stmt 0 view .LVU159
 520 007c D0F80C34              ldr     r3, [r0, #1036]
 521                            .loc 1 174 7 view .LVU160
 522 0080 B3F5806F              cmp     r3, #1024
 523 0084 0ED3                  bcc     .L22
 175:../libSerial/src/serial.c ****         {
 176:../libSerial/src/serial.c ****           instance->tx_usart_out_Ptr = 0;
 524                            .loc 1 176 8 is_stmt 1 view .LVU161
 525                            .loc 1 176 35 is_stmt 0 view .LVU162
 526 0086 0023                  movs    r3, #0
 527 0088 C0F80C34              str     r3, [r0, #1036]
 528 008c 0AE0                  b       .L22
 529                    .LVL29:
 530                    .L26:
 531                    .LBB10:
 156:../libSerial/src/serial.c ****         }
 532                            .loc 1 156 8 is_stmt 1 view .LVU163
 156:../libSerial/src/serial.c ****         }
 533                            .loc 1 156 39 is_stmt 0 view .LVU164
 534 008e 0121                  movs    r1, #1
 535 0090 80F81C18              strb    r1, [r0, #2076]
 536 0094 D6E7                  b       .L20
 537                    .LVL30:
 538                    .L23:
 156:../libSerial/src/serial.c ****         }
 539                            .loc 1 156 39 view .LVU165
 540                    .LBE10:
 177:../libSerial/src/serial.c ****         }
 178:../libSerial/src/serial.c ****     }
 179:../libSerial/src/serial.c ****       else
 180:../libSerial/src/serial.c ****     {
 181:../libSerial/src/serial.c ****       __HAL_UART_DISABLE_IT (instance, UART_IT_TXE);
 541                            .loc 1 181 4 is_stmt 1 view .LVU166
 542 0096 DA68                  ldr     r2, [r3, #12]
 543 0098 22F08002              bic     r2, r2, #128
 544 009c DA60                  str     r2, [r3, #12]
 182:../libSerial/src/serial.c ****       instance->tx_usart_running = 0;
 545                            .loc 1 182 4 view .LVU167
 546                            .loc 1 182 31 is_stmt 0 view .LVU168
 547 009e 0023                  movs    r3, #0
 548 00a0 80F81034              strb    r3, [r0, #1040]
 549                    .L22:
 183:../libSerial/src/serial.c ****     }
 184:../libSerial/src/serial.c ****     }
 185:../libSerial/src/serial.c **** 
 186:../libSerial/src/serial.c ****   __enable_irq ();
 550                            .loc 1 186 3 is_stmt 1 view .LVU169
 551                    .LBB11:
 552                    .LBI11:
 129:Drivers/CMSIS/Include/cmsis_gcc.h **** {
 553                            .loc 2 129 27 view .LVU170
 554                    .LBB12:
 131:Drivers/CMSIS/Include/cmsis_gcc.h **** }
 555                            .loc 2 131 3 view .LVU171
 556                            .syntax unified
ARM GAS  C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s                   page 18


 557                    @ 131 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
 558 00a4 62B6                  cpsie i
 559                    @ 0 "" 2
 560                            .thumb
 561                            .syntax unified
 562                    .LBE12:
 563                    .LBE11:
 187:../libSerial/src/serial.c **** }
 564                            .loc 1 187 1 is_stmt 0 view .LVU172
 565 00a6 30BC                  pop     {r4, r5}
 566                    .LCFI1:
 567                            .cfi_restore 5
 568                            .cfi_restore 4
 569                            .cfi_def_cfa_offset 0
 570 00a8 7047                  bx      lr
 571                            .cfi_endproc
 572                    .LFE70:
 574                            .section        .text.PutCharSerial,"ax",%progbits
 575                            .align  1
 576                            .global PutCharSerial
 577                            .syntax unified
 578                            .thumb
 579                            .thumb_func
 580                            .fpu softvfp
 582                    PutCharSerial:
 583                    .LVL31:
 584                    .LFB71:
 188:../libSerial/src/serial.c **** 
 189:../libSerial/src/serial.c **** void
 190:../libSerial/src/serial.c **** PutCharSerial (usart_ctl *instance, uint8_t c)
 191:../libSerial/src/serial.c **** {
 585                            .loc 1 191 1 is_stmt 1 view -0
 586                            .cfi_startproc
 587                            @ args = 0, pretend = 0, frame = 0
 588                            @ frame_needed = 0, uses_anonymous_args = 0
 589                            .loc 1 191 1 is_stmt 0 view .LVU174
 590 0000 08B5                  push    {r3, lr}
 591                    .LCFI2:
 592                            .cfi_def_cfa_offset 8
 593                            .cfi_offset 3, -8
 594                            .cfi_offset 14, -4
 192:../libSerial/src/serial.c ****   // Put character in Crayon/Pen interface
 193:../libSerial/src/serial.c ****   PutCharSerialFIFO (instance, c);
 595                            .loc 1 193 3 is_stmt 1 view .LVU175
 596 0002 FFF7FEFF              bl      PutCharSerialFIFO
 597                    .LVL32:
 194:../libSerial/src/serial.c **** }
 598                            .loc 1 194 1 is_stmt 0 view .LVU176
 599 0006 08BD                  pop     {r3, pc}
 600                            .cfi_endproc
 601                    .LFE71:
 603                            .section        .text.ResetTxBuffer,"ax",%progbits
 604                            .align  1
 605                            .global ResetTxBuffer
 606                            .syntax unified
 607                            .thumb
 608                            .thumb_func
ARM GAS  C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s                   page 19


 609                            .fpu softvfp
 611                    ResetTxBuffer:
 612                    .LVL33:
 613                    .LFB72:
 195:../libSerial/src/serial.c **** 
 196:../libSerial/src/serial.c **** /*
 197:../libSerial/src/serial.c ****  * \brief
 198:../libSerial/src/serial.c ****  * ResetTxBuffer(void) - resets the serial transmitter buffer
 199:../libSerial/src/serial.c ****  */
 200:../libSerial/src/serial.c **** void
 201:../libSerial/src/serial.c **** ResetTxBuffer (usart_ctl *instance)
 202:../libSerial/src/serial.c **** {
 614                            .loc 1 202 1 is_stmt 1 view -0
 615                            .cfi_startproc
 616                            @ args = 0, pretend = 0, frame = 0
 617                            @ frame_needed = 0, uses_anonymous_args = 0
 618                            @ link register save eliminated.
 203:../libSerial/src/serial.c **** 
 204:../libSerial/src/serial.c ****   instance->tx_usart_out_Ptr = 0;
 619                            .loc 1 204 3 view .LVU178
 620                            .loc 1 204 30 is_stmt 0 view .LVU179
 621 0000 0023                  movs    r3, #0
 622 0002 C0F80C34              str     r3, [r0, #1036]
 205:../libSerial/src/serial.c ****   instance->tx_usart_running = 0;
 623                            .loc 1 205 3 is_stmt 1 view .LVU180
 624                            .loc 1 205 30 is_stmt 0 view .LVU181
 625 0006 80F81034              strb    r3, [r0, #1040]
 206:../libSerial/src/serial.c ****   instance->tx_usart_in_Ptr = 0; /* setup in pointer last to drop any chars come in */
 626                            .loc 1 206 3 is_stmt 1 view .LVU182
 627                            .loc 1 206 29 is_stmt 0 view .LVU183
 628 000a C0F80834              str     r3, [r0, #1032]
 207:../libSerial/src/serial.c ****   instance->tx_usart_count = 0;
 629                            .loc 1 207 3 is_stmt 1 view .LVU184
 630                            .loc 1 207 28 is_stmt 0 view .LVU185
 631 000e A0F81234              strh    r3, [r0, #1042] @ movhi
 208:../libSerial/src/serial.c **** 
 209:../libSerial/src/serial.c **** }
 632                            .loc 1 209 1 view .LVU186
 633 0012 7047                  bx      lr
 634                            .cfi_endproc
 635                    .LFE72:
 637                            .section        .text.ResetRxBuffer,"ax",%progbits
 638                            .align  1
 639                            .global ResetRxBuffer
 640                            .syntax unified
 641                            .thumb
 642                            .thumb_func
 643                            .fpu softvfp
 645                    ResetRxBuffer:
 646                    .LVL34:
 647                    .LFB73:
 210:../libSerial/src/serial.c **** 
 211:../libSerial/src/serial.c **** /*
 212:../libSerial/src/serial.c ****  * \brief
 213:../libSerial/src/serial.c ****  * void ResetRxBuffer(void) - resets the serial receiver buffer
 214:../libSerial/src/serial.c ****  */
 215:../libSerial/src/serial.c **** void
ARM GAS  C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s                   page 20


 216:../libSerial/src/serial.c **** ResetRxBuffer (usart_ctl *instance)
 217:../libSerial/src/serial.c **** {
 648                            .loc 1 217 1 is_stmt 1 view -0
 649                            .cfi_startproc
 650                            @ args = 0, pretend = 0, frame = 0
 651                            @ frame_needed = 0, uses_anonymous_args = 0
 652                            @ link register save eliminated.
 218:../libSerial/src/serial.c **** 
 219:../libSerial/src/serial.c ****   instance->rx_usart_out_Ptr = 0;
 653                            .loc 1 219 3 view .LVU188
 654                            .loc 1 219 30 is_stmt 0 view .LVU189
 655 0000 0023                  movs    r3, #0
 656 0002 C0F81838              str     r3, [r0, #2072]
 220:../libSerial/src/serial.c ****   instance->rx_usart_buffer_full = 0;
 657                            .loc 1 220 3 is_stmt 1 view .LVU190
 658                            .loc 1 220 34 is_stmt 0 view .LVU191
 659 0006 80F81C38              strb    r3, [r0, #2076]
 221:../libSerial/src/serial.c ****   instance->rx_usart_in_Ptr = 0; /* setup in pointer last to drop any chars come in */
 660                            .loc 1 221 3 is_stmt 1 view .LVU192
 661                            .loc 1 221 29 is_stmt 0 view .LVU193
 662 000a C0F81438              str     r3, [r0, #2068]
 222:../libSerial/src/serial.c **** 
 223:../libSerial/src/serial.c **** }
 663                            .loc 1 223 1 view .LVU194
 664 000e 7047                  bx      lr
 665                            .cfi_endproc
 666                    .LFE73:
 668                            .section        .text.FlushSerial,"ax",%progbits
 669                            .align  1
 670                            .global FlushSerial
 671                            .syntax unified
 672                            .thumb
 673                            .thumb_func
 674                            .fpu softvfp
 676                    FlushSerial:
 677                    .LVL35:
 678                    .LFB74:
 224:../libSerial/src/serial.c **** 
 225:../libSerial/src/serial.c **** /***!
 226:../libSerial/src/serial.c ****  * @brief Flush Serial input and output buffers
 227:../libSerial/src/serial.c ****  */
 228:../libSerial/src/serial.c **** void
 229:../libSerial/src/serial.c **** FlushSerial (usart_ctl *instance)
 230:../libSerial/src/serial.c **** {
 679                            .loc 1 230 1 is_stmt 1 view -0
 680                            .cfi_startproc
 681                            @ args = 0, pretend = 0, frame = 0
 682                            @ frame_needed = 0, uses_anonymous_args = 0
 683                            .loc 1 230 1 is_stmt 0 view .LVU196
 684 0000 10B5                  push    {r4, lr}
 685                    .LCFI3:
 686                            .cfi_def_cfa_offset 8
 687                            .cfi_offset 4, -8
 688                            .cfi_offset 14, -4
 689 0002 0446                  mov     r4, r0
 231:../libSerial/src/serial.c ****   ResetRxBuffer (instance);
 690                            .loc 1 231 3 is_stmt 1 view .LVU197
ARM GAS  C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s                   page 21


 691 0004 FFF7FEFF              bl      ResetRxBuffer
 692                    .LVL36:
 232:../libSerial/src/serial.c ****   ResetTxBuffer (instance);
 693                            .loc 1 232 3 view .LVU198
 694 0008 2046                  mov     r0, r4
 695 000a FFF7FEFF              bl      ResetTxBuffer
 696                    .LVL37:
 233:../libSerial/src/serial.c **** }
 697                            .loc 1 233 1 is_stmt 0 view .LVU199
 698 000e 10BD                  pop     {r4, pc}
 699                            .loc 1 233 1 view .LVU200
 700                            .cfi_endproc
 701                    .LFE74:
 703                            .section        .text.TxBufferEmpty,"ax",%progbits
 704                            .align  1
 705                            .global TxBufferEmpty
 706                            .syntax unified
 707                            .thumb
 708                            .thumb_func
 709                            .fpu softvfp
 711                    TxBufferEmpty:
 712                    .LVL38:
 713                    .LFB75:
 234:../libSerial/src/serial.c **** 
 235:../libSerial/src/serial.c **** /***!
 236:../libSerial/src/serial.c ****  * @brief check if tx buffer is empty...
 237:../libSerial/src/serial.c ****  */
 238:../libSerial/src/serial.c **** uint8_t
 239:../libSerial/src/serial.c **** TxBufferEmpty (usart_ctl *instance)
 240:../libSerial/src/serial.c **** {
 714                            .loc 1 240 1 is_stmt 1 view -0
 715                            .cfi_startproc
 716                            @ args = 0, pretend = 0, frame = 0
 717                            @ frame_needed = 0, uses_anonymous_args = 0
 718                            @ link register save eliminated.
 241:../libSerial/src/serial.c ****   return (0 == instance->tx_usart_count );
 719                            .loc 1 241 3 view .LVU202
 720                            .loc 1 241 24 is_stmt 0 view .LVU203
 721 0000 B0F81204              ldrh    r0, [r0, #1042]
 722                    .LVL39:
 723                            .loc 1 241 24 view .LVU204
 724 0004 80B2                  uxth    r0, r0
 242:../libSerial/src/serial.c **** }
 725                            .loc 1 242 1 view .LVU205
 726 0006 B0FA80F0              clz     r0, r0
 727 000a 4009                  lsrs    r0, r0, #5
 728 000c 7047                  bx      lr
 729                            .cfi_endproc
 730                    .LFE75:
 732                            .section        .text.TxWaitEmpty,"ax",%progbits
 733                            .align  1
 734                            .global TxWaitEmpty
 735                            .syntax unified
 736                            .thumb
 737                            .thumb_func
 738                            .fpu softvfp
 740                    TxWaitEmpty:
ARM GAS  C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s                   page 22


 741                    .LFB76:
 243:../libSerial/src/serial.c **** 
 244:../libSerial/src/serial.c **** /***!
 245:../libSerial/src/serial.c ****  * @brief wait for transmission to finish
 246:../libSerial/src/serial.c ****  */
 247:../libSerial/src/serial.c **** 
 248:../libSerial/src/serial.c **** void TxWaitEmpty(usart_ctl *instance)
 249:../libSerial/src/serial.c **** {
 742                            .loc 1 249 1 is_stmt 1 view -0
 743                            .cfi_startproc
 744                            @ args = 0, pretend = 0, frame = 0
 745                            @ frame_needed = 0, uses_anonymous_args = 0
 746                            @ link register save eliminated.
 747                    .LVL40:
 748                    .L35:
 250:../libSerial/src/serial.c ****   while (instance->tx_usart_count ||
 251:../libSerial/src/serial.c ****        (instance->Instance->SR & USART_SR_TC) != RESET) {};
 749                            .loc 1 251 58 discriminator 3 view .LVU207
 250:../libSerial/src/serial.c ****   while (instance->tx_usart_count ||
 750                            .loc 1 250 18 is_stmt 0 discriminator 3 view .LVU208
 751 0000 B0F81234              ldrh    r3, [r0, #1042]
 752 0004 9BB2                  uxth    r3, r3
 250:../libSerial/src/serial.c ****   while (instance->tx_usart_count ||
 753                            .loc 1 250 9 discriminator 3 view .LVU209
 754 0006 002B                  cmp     r3, #0
 755 0008 FAD1                  bne     .L35
 756                            .loc 1 251 17 discriminator 2 view .LVU210
 757 000a 0368                  ldr     r3, [r0]
 758                            .loc 1 251 27 discriminator 2 view .LVU211
 759 000c 1B68                  ldr     r3, [r3]
 250:../libSerial/src/serial.c ****   while (instance->tx_usart_count ||
 760                            .loc 1 250 35 discriminator 2 view .LVU212
 761 000e 13F0400F              tst     r3, #64
 762 0012 F5D1                  bne     .L35
 252:../libSerial/src/serial.c **** }
 763                            .loc 1 252 1 view .LVU213
 764 0014 7047                  bx      lr
 765                            .cfi_endproc
 766                    .LFE76:
 768                            .section        .text.init_usart_ctl,"ax",%progbits
 769                            .align  1
 770                            .global init_usart_ctl
 771                            .syntax unified
 772                            .thumb
 773                            .thumb_func
 774                            .fpu softvfp
 776                    init_usart_ctl:
 777                    .LVL41:
 778                    .LFB77:
 253:../libSerial/src/serial.c **** 
 254:../libSerial/src/serial.c **** /****
 255:../libSerial/src/serial.c ****  * @brief Initialise control structure
 256:../libSerial/src/serial.c ****  */
 257:../libSerial/src/serial.c **** void
 258:../libSerial/src/serial.c **** init_usart_ctl (usart_ctl *instance, UART_HandleTypeDef *handle)
 259:../libSerial/src/serial.c **** {
 779                            .loc 1 259 1 is_stmt 1 view -0
ARM GAS  C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s                   page 23


 780                            .cfi_startproc
 781                            @ args = 0, pretend = 0, frame = 0
 782                            @ frame_needed = 0, uses_anonymous_args = 0
 783                            @ link register save eliminated.
 260:../libSerial/src/serial.c **** 
 261:../libSerial/src/serial.c ****   instance->handle = handle;
 784                            .loc 1 261 3 view .LVU215
 785                            .loc 1 261 20 is_stmt 0 view .LVU216
 786 0000 4160                  str     r1, [r0, #4]
 262:../libSerial/src/serial.c ****   instance->Instance = handle->Instance;
 787                            .loc 1 262 3 is_stmt 1 view .LVU217
 788                            .loc 1 262 30 is_stmt 0 view .LVU218
 789 0002 0B68                  ldr     r3, [r1]
 790                            .loc 1 262 22 view .LVU219
 791 0004 0360                  str     r3, [r0]
 263:../libSerial/src/serial.c **** 
 264:../libSerial/src/serial.c ****   instance->tx_usart_in_Ptr = 0;
 792                            .loc 1 264 3 is_stmt 1 view .LVU220
 793                            .loc 1 264 29 is_stmt 0 view .LVU221
 794 0006 0023                  movs    r3, #0
 795 0008 C0F80834              str     r3, [r0, #1032]
 265:../libSerial/src/serial.c ****   instance->tx_usart_out_Ptr = 0;
 796                            .loc 1 265 3 is_stmt 1 view .LVU222
 797                            .loc 1 265 30 is_stmt 0 view .LVU223
 798 000c C0F80C34              str     r3, [r0, #1036]
 266:../libSerial/src/serial.c ****   instance->tx_usart_running = 0;
 799                            .loc 1 266 3 is_stmt 1 view .LVU224
 800                            .loc 1 266 30 is_stmt 0 view .LVU225
 801 0010 80F81034              strb    r3, [r0, #1040]
 267:../libSerial/src/serial.c ****   instance->tx_usart_count = 0;
 802                            .loc 1 267 3 is_stmt 1 view .LVU226
 803                            .loc 1 267 28 is_stmt 0 view .LVU227
 804 0014 A0F81234              strh    r3, [r0, #1042] @ movhi
 268:../libSerial/src/serial.c **** 
 269:../libSerial/src/serial.c ****   instance->rx_usart_in_Ptr = 0;
 805                            .loc 1 269 3 is_stmt 1 view .LVU228
 806                            .loc 1 269 29 is_stmt 0 view .LVU229
 807 0018 C0F81438              str     r3, [r0, #2068]
 270:../libSerial/src/serial.c ****   instance->rx_usart_out_Ptr = 0;
 808                            .loc 1 270 3 is_stmt 1 view .LVU230
 809                            .loc 1 270 30 is_stmt 0 view .LVU231
 810 001c C0F81838              str     r3, [r0, #2072]
 271:../libSerial/src/serial.c ****   instance->rx_usart_buffer_full = 0;
 811                            .loc 1 271 3 is_stmt 1 view .LVU232
 812                            .loc 1 271 34 is_stmt 0 view .LVU233
 813 0020 80F81C38              strb    r3, [r0, #2076]
 272:../libSerial/src/serial.c **** 
 273:../libSerial/src/serial.c **** }
 814                            .loc 1 273 1 view .LVU234
 815 0024 7047                  bx      lr
 816                            .cfi_endproc
 817                    .LFE77:
 819                            .section        .text.USART1_IRQHandler,"ax",%progbits
 820                            .align  1
 821                            .global USART1_IRQHandler
 822                            .syntax unified
 823                            .thumb
ARM GAS  C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s                   page 24


 824                            .thumb_func
 825                            .fpu softvfp
 827                    USART1_IRQHandler:
 828                    .LFB78:
 274:../libSerial/src/serial.c **** 
 275:../libSerial/src/serial.c **** /////////////////////////////////////////////////////////
 276:../libSerial/src/serial.c **** /// Moved from generated code  to avoid crappy HAL handler
 277:../libSerial/src/serial.c **** #if defined SERIAL_UART1
 278:../libSerial/src/serial.c **** void USART1_IRQHandler(void)
 279:../libSerial/src/serial.c **** {
 829                            .loc 1 279 1 is_stmt 1 view -0
 830                            .cfi_startproc
 831                            @ args = 0, pretend = 0, frame = 0
 832                            @ frame_needed = 0, uses_anonymous_args = 0
 833 0000 08B5                  push    {r3, lr}
 834                    .LCFI4:
 835                            .cfi_def_cfa_offset 8
 836                            .cfi_offset 3, -8
 837                            .cfi_offset 14, -4
 280:../libSerial/src/serial.c ****     UART_IRQHandler(&uc1);
 838                            .loc 1 280 2 view .LVU236
 839 0002 0248                  ldr     r0, .L40
 840 0004 FFF7FEFF              bl      UART_IRQHandler
 841                    .LVL42:
 281:../libSerial/src/serial.c **** }
 842                            .loc 1 281 1 is_stmt 0 view .LVU237
 843 0008 08BD                  pop     {r3, pc}
 844                    .L41:
 845 000a 00BF                  .align  2
 846                    .L40:
 847 000c 00000000              .word   uc1
 848                            .cfi_endproc
 849                    .LFE78:
 851                            .comm   uc1,2080,4
 852                            .text
 853                    .Letext0:
 854                            .file 3 "c:\\users\\mike\\appdata\\roaming\\xpacks\\@gnu-mcu-eclipse\\arm-none-eabi-gcc\\8.2.1-1.7
 855                            .file 4 "c:\\users\\mike\\appdata\\roaming\\xpacks\\@gnu-mcu-eclipse\\arm-none-eabi-gcc\\8.2.1-1.7
 856                            .file 5 "Drivers/CMSIS/Include/core_cm3.h"
 857                            .file 6 "Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h"
 858                            .file 7 "Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h"
 859                            .file 8 "Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h"
 860                            .file 9 "Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h"
 861                            .file 10 "Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h"
 862                            .file 11 "Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_spi.h"
 863                            .file 12 "Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h"
 864                            .file 13 "Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h"
 865                            .file 14 "Core/Inc/main.h"
 866                            .file 15 "../libSerial/inc/libSerial/serial.h"
ARM GAS  C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s                   page 25


DEFINED SYMBOLS
                            *ABS*:0000000000000000 serial.c
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:16     .text.PutCharSerialFIFO:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:23     .text.PutCharSerialFIFO:0000000000000000 PutCharSerialFIFO
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:105    .text.SerialCharsReceived:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:112    .text.SerialCharsReceived:0000000000000000 SerialCharsReceived
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:195    .text.PollSerial:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:202    .text.PollSerial:0000000000000000 PollSerial
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:262    .text.GetCharSerial:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:269    .text.GetCharSerial:0000000000000000 GetCharSerial
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:362    .text.EnableSerialRxInterrupt:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:369    .text.EnableSerialRxInterrupt:0000000000000000 EnableSerialRxInterrupt
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:388    .text.UART_IRQHandler:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:395    .text.UART_IRQHandler:0000000000000000 UART_IRQHandler
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:575    .text.PutCharSerial:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:582    .text.PutCharSerial:0000000000000000 PutCharSerial
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:604    .text.ResetTxBuffer:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:611    .text.ResetTxBuffer:0000000000000000 ResetTxBuffer
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:638    .text.ResetRxBuffer:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:645    .text.ResetRxBuffer:0000000000000000 ResetRxBuffer
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:669    .text.FlushSerial:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:676    .text.FlushSerial:0000000000000000 FlushSerial
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:704    .text.TxBufferEmpty:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:711    .text.TxBufferEmpty:0000000000000000 TxBufferEmpty
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:733    .text.TxWaitEmpty:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:740    .text.TxWaitEmpty:0000000000000000 TxWaitEmpty
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:769    .text.init_usart_ctl:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:776    .text.init_usart_ctl:0000000000000000 init_usart_ctl
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:820    .text.USART1_IRQHandler:0000000000000000 $t
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:827    .text.USART1_IRQHandler:0000000000000000 USART1_IRQHandler
C:\Users\mike\AppData\Local\Temp\ccrAkAGc.s:847    .text.USART1_IRQHandler:000000000000000c $d
                            *COM*:0000000000000820 uc1

NO UNDEFINED SYMBOLS