1 .file "uart.c" 2 __SP_H__ = 0x3e 3 __SP_L__ = 0x3d 4 __SREG__ = 0x3f 5 __tmp_reg__ = 0 6 __zero_reg__ = 1 7 .text 8 .global __vector_11 10 __vector_11: 11 0000 1F92 push r1 12 0002 0F92 push r0 13 0004 0FB6 in r0,__SREG__ 14 0006 0F92 push r0 15 0008 1124 clr __zero_reg__ 16 000a 2F93 push r18 17 000c 8F93 push r24 18 000e 9F93 push r25 19 0010 EF93 push r30 20 0012 FF93 push r31 21 /* prologue: Signal */ 22 /* frame size = 0 */ 23 /* stack size = 8 */ 24 .L__stack_usage = 8 25 0014 8BB1 in r24,0xb 26 0016 9CB1 in r25,0xc 27 0018 8871 andi r24,lo8(24) 28 001a E091 0000 lds r30,UART_RxHead 29 001e EF5F subi r30,lo8(-(1)) 30 0020 EF71 andi r30,lo8(31) 31 0022 2091 0000 lds r18,UART_RxTail 32 0026 E217 cp r30,r18 33 0028 01F0 breq .L3 34 002a E093 0000 sts UART_RxHead,r30 35 002e F0E0 ldi r31,0 36 0030 E050 subi r30,lo8(-(UART_RxBuf)) 37 0032 F040 sbci r31,hi8(-(UART_RxBuf)) 38 0034 9083 st Z,r25 39 0036 00C0 rjmp .L2 40 .L3: 41 0038 82E0 ldi r24,lo8(2) 42 .L2: 43 003a 9091 0000 lds r25,UART_LastRxError 44 003e 982B or r25,r24 45 0040 9093 0000 sts UART_LastRxError,r25 46 /* epilogue start */ 47 0044 FF91 pop r31 48 0046 EF91 pop r30 49 0048 9F91 pop r25 50 004a 8F91 pop r24 51 004c 2F91 pop r18 52 004e 0F90 pop r0 53 0050 0FBE out __SREG__,r0 54 0052 0F90 pop r0 55 0054 1F90 pop r1 56 0056 1895 reti 58 .global __vector_12 60 __vector_12: 61 0058 1F92 push r1 62 005a 0F92 push r0 63 005c 0FB6 in r0,__SREG__ 64 005e 0F92 push r0 65 0060 1124 clr __zero_reg__ 66 0062 8F93 push r24 67 0064 9F93 push r25 68 0066 EF93 push r30 69 0068 FF93 push r31 70 /* prologue: Signal */ 71 /* frame size = 0 */ 72 /* stack size = 7 */ 73 .L__stack_usage = 7 74 006a 9091 0000 lds r25,UART_TxHead 75 006e 8091 0000 lds r24,UART_TxTail 76 0072 9817 cp r25,r24 77 0074 01F0 breq .L5 78 0076 E091 0000 lds r30,UART_TxTail 79 007a EF5F subi r30,lo8(-(1)) 80 007c EF71 andi r30,lo8(31) 81 007e E093 0000 sts UART_TxTail,r30 82 0082 F0E0 ldi r31,0 83 0084 E050 subi r30,lo8(-(UART_TxBuf)) 84 0086 F040 sbci r31,hi8(-(UART_TxBuf)) 85 0088 8081 ld r24,Z 86 008a 8CB9 out 0xc,r24 87 008c 00C0 rjmp .L4 88 .L5: 89 008e 5598 cbi 0xa,5 90 .L4: 91 /* epilogue start */ 92 0090 FF91 pop r31 93 0092 EF91 pop r30 94 0094 9F91 pop r25 95 0096 8F91 pop r24 96 0098 0F90 pop r0 97 009a 0FBE out __SREG__,r0 98 009c 0F90 pop r0 99 009e 1F90 pop r1 100 00a0 1895 reti 102 .global uart_init 104 uart_init: 105 /* prologue: function */ 106 /* frame size = 0 */ 107 /* stack size = 0 */ 108 .L__stack_usage = 0 109 00a2 1092 0000 sts UART_TxHead,__zero_reg__ 110 00a6 1092 0000 sts UART_TxTail,__zero_reg__ 111 00aa 1092 0000 sts UART_RxHead,__zero_reg__ 112 00ae 1092 0000 sts UART_RxTail,__zero_reg__ 113 00b2 97FF sbrs r25,7 114 00b4 00C0 rjmp .L8 115 00b6 22E0 ldi r18,lo8(2) 116 00b8 2BB9 out 0xb,r18 117 00ba 9F77 andi r25,127 118 .L8: 119 00bc 90BD out 0x20,r25 120 00be 89B9 out 0x9,r24 121 00c0 88E9 ldi r24,lo8(-104) 122 00c2 8AB9 out 0xa,r24 123 00c4 86E8 ldi r24,lo8(-122) 124 00c6 80BD out 0x20,r24 125 00c8 0895 ret 127 .global uart_getc 129 uart_getc: 130 /* prologue: function */ 131 /* frame size = 0 */ 132 /* stack size = 0 */ 133 .L__stack_usage = 0 134 00ca 9091 0000 lds r25,UART_RxHead 135 00ce 8091 0000 lds r24,UART_RxTail 136 00d2 9817 cp r25,r24 137 00d4 01F0 breq .L11 138 00d6 E091 0000 lds r30,UART_RxTail 139 00da EF5F subi r30,lo8(-(1)) 140 00dc EF71 andi r30,lo8(31) 141 00de E093 0000 sts UART_RxTail,r30 142 00e2 F0E0 ldi r31,0 143 00e4 E050 subi r30,lo8(-(UART_RxBuf)) 144 00e6 F040 sbci r31,hi8(-(UART_RxBuf)) 145 00e8 2081 ld r18,Z 146 00ea 8091 0000 lds r24,UART_LastRxError 147 00ee 1092 0000 sts UART_LastRxError,__zero_reg__ 148 00f2 30E0 ldi r19,0 149 00f4 00C0 rjmp .L10 150 .L11: 151 00f6 20E0 ldi r18,0 152 00f8 31E0 ldi r19,lo8(1) 153 .L10: 154 00fa C901 movw r24,r18 155 00fc 0895 ret 157 .global uart_putc 159 uart_putc: 160 /* prologue: function */ 161 /* frame size = 0 */ 162 /* stack size = 0 */ 163 .L__stack_usage = 0 164 00fe 9091 0000 lds r25,UART_TxHead 165 0102 9F5F subi r25,lo8(-(1)) 166 0104 9F71 andi r25,lo8(31) 167 .L13: 168 0106 2091 0000 lds r18,UART_TxTail 169 010a 9217 cp r25,r18 170 010c 01F0 breq .L13 171 010e E92F mov r30,r25 172 0110 F0E0 ldi r31,0 173 0112 E050 subi r30,lo8(-(UART_TxBuf)) 174 0114 F040 sbci r31,hi8(-(UART_TxBuf)) 175 0116 8083 st Z,r24 176 0118 9093 0000 sts UART_TxHead,r25 177 011c 559A sbi 0xa,5 178 011e 0895 ret 180 .global uart_puts 182 uart_puts: 183 0120 CF93 push r28 184 0122 DF93 push r29 185 /* prologue: function */ 186 /* frame size = 0 */ 187 /* stack size = 2 */ 188 .L__stack_usage = 2 189 0124 EC01 movw r28,r24 190 0126 00C0 rjmp .L16 191 .L17: 192 0128 00D0 rcall uart_putc 193 .L16: 194 012a 8991 ld r24,Y+ 195 012c 8111 cpse r24,__zero_reg__ 196 012e 00C0 rjmp .L17 197 /* epilogue start */ 198 0130 DF91 pop r29 199 0132 CF91 pop r28 200 0134 0895 ret 202 .global uart_puts_p 204 uart_puts_p: 205 0136 CF93 push r28 206 0138 DF93 push r29 207 /* prologue: function */ 208 /* frame size = 0 */ 209 /* stack size = 2 */ 210 .L__stack_usage = 2 211 013a EC01 movw r28,r24 212 013c 00C0 rjmp .L19 213 .L20: 214 013e 00D0 rcall uart_putc 215 .L19: 216 0140 FE01 movw r30,r28 217 0142 2196 adiw r28,1 218 /* #APP */ 219 ; 474 "src/uart.c" 1 220 0144 8491 lpm r24, Z 221 222 ; 0 "" 2 223 /* #NOAPP */ 224 0146 8111 cpse r24,__zero_reg__ 225 0148 00C0 rjmp .L20 226 /* epilogue start */ 227 014a DF91 pop r29 228 014c CF91 pop r28 229 014e 0895 ret 231 .local UART_LastRxError 232 .comm UART_LastRxError,1,1 233 .local UART_RxTail 234 .comm UART_RxTail,1,1 235 .local UART_RxHead 236 .comm UART_RxHead,1,1 237 .local UART_TxTail 238 .comm UART_TxTail,1,1 239 .local UART_TxHead 240 .comm UART_TxHead,1,1 241 .local UART_RxBuf 242 .comm UART_RxBuf,32,1 243 .local UART_TxBuf 244 .comm UART_TxBuf,32,1 245 .ident "GCC: (GNU) 4.7.2" 246 .global __do_clear_bss DEFINED SYMBOLS *ABS*:0000000000000000 uart.c /tmp/ccbMxLMX.s:2 *ABS*:000000000000003e __SP_H__ /tmp/ccbMxLMX.s:3 *ABS*:000000000000003d __SP_L__ /tmp/ccbMxLMX.s:4 *ABS*:000000000000003f __SREG__ /tmp/ccbMxLMX.s:5 *ABS*:0000000000000000 __tmp_reg__ /tmp/ccbMxLMX.s:6 *ABS*:0000000000000001 __zero_reg__ /tmp/ccbMxLMX.s:10 .text:0000000000000000 __vector_11 /tmp/ccbMxLMX.s:234 .bss:0000000000000002 UART_RxHead /tmp/ccbMxLMX.s:232 .bss:0000000000000001 UART_RxTail /tmp/ccbMxLMX.s:240 .bss:0000000000000005 UART_RxBuf .bss:0000000000000000 UART_LastRxError /tmp/ccbMxLMX.s:60 .text:0000000000000058 __vector_12 /tmp/ccbMxLMX.s:238 .bss:0000000000000004 UART_TxHead /tmp/ccbMxLMX.s:236 .bss:0000000000000003 UART_TxTail /tmp/ccbMxLMX.s:242 .bss:0000000000000025 UART_TxBuf /tmp/ccbMxLMX.s:104 .text:00000000000000a2 uart_init /tmp/ccbMxLMX.s:129 .text:00000000000000ca uart_getc /tmp/ccbMxLMX.s:159 .text:00000000000000fe uart_putc /tmp/ccbMxLMX.s:182 .text:0000000000000120 uart_puts /tmp/ccbMxLMX.s:204 .text:0000000000000136 uart_puts_p UNDEFINED SYMBOLS __do_clear_bss