Rev 410 | Blame | Compare with Previous | Last modification | View Log | Download
GAS LISTING /tmp/ccYEZtaB.s page 1
1 .file "Executive.c"
2 __SREG__ = 0x3f
3 __SP_H__ = 0x3e
4 __SP_L__ = 0x3d
5 __tmp_reg__ = 0
6 __zero_reg__ = 1
7 .global __do_copy_data
8 .global __do_clear_bss
9 .stabs "/home/kaklik/projects/programy/C/avr/AVRcam/",100,0,2,.Ltext0
10 .stabs "Executive.c",100,0,2,.Ltext0
11 .text
12 .Ltext0:
13 .stabs "gcc2_compiled.",60,0,0,0
14 .stabs "int:t(0,1)=r(0,1);-32768;32767;",128,0,0,0
15 .stabs "char:t(0,2)=@s8;r(0,2);0;255;",128,0,0,0
16 .stabs "long int:t(0,3)=@s32;r(0,3);020000000000;017777777777;",128,0,0,0
17 .stabs "unsigned int:t(0,4)=r(0,4);0;0177777;",128,0,0,0
18 .stabs "long unsigned int:t(0,5)=@s32;r(0,5);0;037777777777;",128,0,0,0
19 .stabs "long long int:t(0,6)=@s64;r(0,6);01000000000000000000000;0777777777777777777777;",128,0,0,
20 .stabs "long long unsigned int:t(0,7)=@s64;r(0,7);0;01777777777777777777777;",128,0,0,0
21 .stabs "short int:t(0,8)=r(0,8);-32768;32767;",128,0,0,0
22 .stabs "short unsigned int:t(0,9)=r(0,9);0;0177777;",128,0,0,0
23 .stabs "signed char:t(0,10)=@s8;r(0,10);-128;127;",128,0,0,0
24 .stabs "unsigned char:t(0,11)=@s8;r(0,11);0;255;",128,0,0,0
25 .stabs "float:t(0,12)=r(0,1);4;0;",128,0,0,0
26 .stabs "double:t(0,13)=r(0,1);4;0;",128,0,0,0
27 .stabs "long double:t(0,14)=r(0,1);4;0;",128,0,0,0
28 .stabs "void:t(0,15)=(0,15)",128,0,0,0
29 .stabs "/usr/lib/gcc/avr/4.2.1/../../../../avr/include/stdlib.h",130,0,0,0
30 .stabs "/usr/lib/gcc/avr/4.2.1/include/stddef.h",130,0,0,0
31 .stabs "size_t:t(2,1)=(0,4)",128,0,214,0
32 .stabs "wchar_t:t(2,2)=(0,1)",128,0,326,0
33 .stabn 162,0,0,0
34 .stabs "div_t:t(1,1)=(1,2)=s4quot:(0,1),0,16;rem:(0,1),16,16;;",128,0,69,0
35 .stabs "ldiv_t:t(1,3)=(1,4)=s8quot:(0,3),0,32;rem:(0,3),32,32;;",128,0,75,0
36 .stabs "__compar_fn_t:t(1,5)=(1,6)=*(1,7)=f(0,1)",128,0,78,0
37 .stabn 162,0,0,0
38 .stabs "CommonDefs.h",130,0,0,0
39 .stabs "/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/interrupt.h",130,0,0,0
40 .stabs "/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/io.h",130,0,0,0
41 .stabs "/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/sfr_defs.h",130,0,0,0
42 .stabs "/usr/lib/gcc/avr/4.2.1/../../../../avr/include/inttypes.h",130,0,0,0
43 .stabs "/usr/lib/gcc/avr/4.2.1/../../../../avr/include/stdint.h",130,0,0,0
44 .stabs "int8_t:t(8,1)=(0,10)",128,0,116,0
45 .stabs "uint8_t:t(8,2)=(0,11)",128,0,117,0
46 .stabs "int16_t:t(8,3)=(0,1)",128,0,118,0
47 .stabs "uint16_t:t(8,4)=(0,4)",128,0,119,0
48 .stabs "int32_t:t(8,5)=(0,3)",128,0,120,0
49 .stabs "uint32_t:t(8,6)=(0,5)",128,0,121,0
50 .stabs "int64_t:t(8,7)=(0,6)",128,0,122,0
51 .stabs "uint64_t:t(8,8)=(0,7)",128,0,123,0
52 .stabs "intptr_t:t(8,9)=(8,3)",128,0,135,0
53 .stabs "uintptr_t:t(8,10)=(8,4)",128,0,140,0
54 .stabs "int_least8_t:t(8,11)=(8,1)",128,0,152,0
55 .stabs "uint_least8_t:t(8,12)=(8,2)",128,0,157,0
56 .stabs "int_least16_t:t(8,13)=(8,3)",128,0,162,0
57 .stabs "uint_least16_t:t(8,14)=(8,4)",128,0,167,0
GAS LISTING /tmp/ccYEZtaB.s page 2
58 .stabs "int_least32_t:t(8,15)=(8,5)",128,0,172,0
59 .stabs "uint_least32_t:t(8,16)=(8,6)",128,0,177,0
60 .stabs "int_least64_t:t(8,17)=(8,7)",128,0,182,0
61 .stabs "uint_least64_t:t(8,18)=(8,8)",128,0,187,0
62 .stabs "int_fast8_t:t(8,19)=(8,1)",128,0,200,0
63 .stabs "uint_fast8_t:t(8,20)=(8,2)",128,0,205,0
64 .stabs "int_fast16_t:t(8,21)=(8,3)",128,0,210,0
65 .stabs "uint_fast16_t:t(8,22)=(8,4)",128,0,215,0
66 .stabs "int_fast32_t:t(8,23)=(8,5)",128,0,220,0
67 .stabs "uint_fast32_t:t(8,24)=(8,6)",128,0,225,0
68 .stabs "int_fast64_t:t(8,25)=(8,7)",128,0,230,0
69 .stabs "uint_fast64_t:t(8,26)=(8,8)",128,0,235,0
70 .stabs "intmax_t:t(8,27)=(8,7)",128,0,249,0
71 .stabs "uintmax_t:t(8,28)=(8,8)",128,0,254,0
72 .stabn 162,0,0,0
73 .stabs "int_farptr_t:t(7,1)=(8,5)",128,0,76,0
74 .stabs "uint_farptr_t:t(7,2)=(8,6)",128,0,80,0
75 .stabn 162,0,0,0
76 .stabn 162,0,0,0
77 .stabn 162,0,0,0
78 .stabn 162,0,0,0
79 .stabs "bool_t:t(3,1)=(0,11)",128,0,56,0
80 .stabn 162,0,0,0
81 .stabs "CamConfig.h",130,0,0,0
82 .stabs "I2CInterface.h",130,0,0,0
83 .stabs "i2cCmd_t:t(10,1)=(10,2)=s2configReg:(0,11),0,8;data:(0,11),8,8;;",128,0,53,0
84 .stabn 162,0,0,0
85 .stabn 162,0,0,0
86 .stabs "Exec_writeEventFifo:F(0,15)",36,0,208,Exec_writeEventFifo
87 .stabs "event:P(0,11)",64,0,207,24
88 .global Exec_writeEventFifo
89 .type Exec_writeEventFifo, @function
90 Exec_writeEventFifo:
91 .stabd 46,0,0
1:Executive.c **** /*
2:Executive.c **** Copyright (C) 2004 John Orlando
3:Executive.c ****
4:Executive.c **** AVRcam: a small real-time image processing engine.
5:Executive.c ****
6:Executive.c **** This program is free software; you can redistribute it and/or
7:Executive.c **** modify it under the terms of the GNU General Public
8:Executive.c **** License as published by the Free Software Foundation; either
9:Executive.c **** version 2 of the License, or (at your option) any later version.
10:Executive.c ****
11:Executive.c **** This program is distributed in the hope that it will be useful,
12:Executive.c **** but WITHOUT ANY WARRANTY; without even the implied warranty of
13:Executive.c **** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14:Executive.c **** General Public License for more details.
15:Executive.c ****
16:Executive.c **** You should have received a copy of the GNU General Public
17:Executive.c **** License along with this program; if not, write to the Free Software
18:Executive.c **** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19:Executive.c ****
20:Executive.c **** For more information on the AVRcam, please contact:
21:Executive.c ****
22:Executive.c **** john@jrobot.net
23:Executive.c ****
GAS LISTING /tmp/ccYEZtaB.s page 3
24:Executive.c **** or go to www.jrobot.net for more details regarding the system.
25:Executive.c **** */
26:Executive.c **** /***********************************************************
27:Executive.c **** Module Name: Executive.c
28:Executive.c **** Module Date: 04/12/2004
29:Executive.c **** Module Auth: John Orlando
30:Executive.c ****
31:Executive.c **** Description: This file is responsible for implementing a
32:Executive.c **** minimalist event dispatcher. It keeps track of an event
33:Executive.c **** fifo that waits for new events to come in, and dispatches
34:Executive.c **** them to any entities that care about them.
35:Executive.c ****
36:Executive.c **** Revision History:
37:Executive.c **** Date Rel Ver. Notes
38:Executive.c **** 4/10/2004 0.1 Module created
39:Executive.c **** 6/30/2004 1.0 Initial release for Circuit Cellar
40:Executive.c **** contest.
41:Executive.c **** 1/16/2005 1.4 Fixed issue where the interrupts weren't
42:Executive.c **** being turned off when the fastEventBitmask
43:Executive.c **** was being accessed. Also removed redundant
44:Executive.c **** interrupt masking when accessing the
45:Executive.c **** main event fifo. Also fixed issue where
46:Executive.c **** the main event fifo wasn't being checked
47:Executive.c **** for events if an event was pending in
48:Executive.c **** the fast event fifo.
49:Executive.c **** ***********************************************************/
50:Executive.c ****
51:Executive.c **** /* Includes */
52:Executive.c **** #include <stdlib.h>
53:Executive.c **** #include "CommonDefs.h"
54:Executive.c **** #include "Executive.h"
55:Executive.c **** #include "FrameMgr.h"
56:Executive.c **** #include "CamInterface.h"
57:Executive.c **** #include "UIMgr.h"
58:Executive.c **** #include "UartInterface.h"
59:Executive.c **** #include "CamConfig.h"
60:Executive.c **** #include "Utility.h"
61:Executive.c ****
62:Executive.c **** /* Local Variables */
63:Executive.c **** unsigned char Exec_eventFifo[EXEC_EVENT_FIFO_SIZE];
64:Executive.c **** unsigned char Exec_eventFifoHead=0;
65:Executive.c **** unsigned char Exec_eventFifoTail=0;
66:Executive.c ****
67:Executive.c **** /* Local Function Definitions */
68:Executive.c **** static unsigned char Exec_readEventFifo(void);
69:Executive.c ****
70:Executive.c **** /* Local Structures and Typedefs */
71:Executive.c ****
72:Executive.c **** /* Extern Variables */
73:Executive.c **** /* This bitmask holds events that need to be processed as fast as possible */
74:Executive.c **** unsigned char fastEventBitmask = 0x00;
75:Executive.c ****
76:Executive.c **** /* Definitions */
77:Executive.c **** #define IS_DATA_IN_EVENT_FIFO() (!(Exec_eventFifoHead == Exec_eventFifoTail))
78:Executive.c **** /***********************************************************
79:Executive.c **** Function Name: Exec_run
80:Executive.c **** Function Description: This function is responsible for
GAS LISTING /tmp/ccYEZtaB.s page 4
81:Executive.c **** running the main control loop. The control loop is
82:Executive.c **** based on checking both the fast-event bitmask (for high
83:Executive.c **** priority events) and the event FIFO to determine if an
84:Executive.c **** event needs to be handled. The event is then dispatched
85:Executive.c **** to the appropriate handler.
86:Executive.c **** Inputs: none
87:Executive.c **** Outputs: none
88:Executive.c **** ***********************************************************/
89:Executive.c **** void Exec_run(void)
90:Executive.c **** {
91:Executive.c **** unsigned char eventGenerated;
92:Executive.c ****
93:Executive.c **** while(1)
94:Executive.c **** {
95:Executive.c **** if (fastEventBitmask)
96:Executive.c **** {
97:Executive.c **** /* an event needing fast processing has been received */
98:Executive.c **** /* a received line needs to be processed...this
99:Executive.c **** needs to be processed as quickly as possible */
100:Executive.c **** if (fastEventBitmask & FEV_ACQUIRE_LINE_COMPLETE)
101:Executive.c **** {
102:Executive.c **** DISABLE_INTS();
103:Executive.c **** fastEventBitmask &= ~FEV_ACQUIRE_LINE_COMPLETE;
104:Executive.c **** ENABLE_INTS();
105:Executive.c **** FrameMgr_processLine();
106:Executive.c ****
107:Executive.c **** /* also check if serial data needs to be sent
108:Executive.c **** out through UIMgr */
109:Executive.c **** UIMgr_transmitPendingData();
110:Executive.c ****
111:Executive.c **** /* we can't just call acquire line again here,
112:Executive.c **** since we don't know if we need to acquire another
113:Executive.c **** line or not (it depends on the FrameMgr to figure
114:Executive.c **** this out) */
115:Executive.c **** }
116:Executive.c **** if (fastEventBitmask & FEV_PROCESS_LINE_COMPLETE)
117:Executive.c **** {
118:Executive.c **** DISABLE_INTS();
119:Executive.c **** fastEventBitmask &= ~FEV_PROCESS_LINE_COMPLETE;
120:Executive.c **** ENABLE_INTS();
121:Executive.c **** FrameMgr_acquireLine();
122:Executive.c **** }
123:Executive.c **** }
124:Executive.c ****
125:Executive.c **** if (IS_DATA_IN_EVENT_FIFO() == TRUE)
126:Executive.c **** {
127:Executive.c **** eventGenerated = Exec_readEventFifo();
128:Executive.c **** switch(eventGenerated)
129:Executive.c **** {
130:Executive.c **** case (EV_DUMP_FRAME):
131:Executive.c **** FrameMgr_dispatchEvent(eventGenerated);
132:Executive.c **** break;
133:Executive.c ****
134:Executive.c **** case (EV_ENABLE_TRACKING):
135:Executive.c **** FrameMgr_dispatchEvent(eventGenerated);
136:Executive.c **** break;
137:Executive.c ****
GAS LISTING /tmp/ccYEZtaB.s page 5
138:Executive.c **** case (EV_DISABLE_TRACKING):
139:Executive.c **** FrameMgr_dispatchEvent(eventGenerated);
140:Executive.c **** break;
141:Executive.c ****
142:Executive.c **** case (EV_ACQUIRE_LINE_COMPLETE):
143:Executive.c **** FrameMgr_dispatchEvent(eventGenerated);
144:Executive.c **** UIMgr_dispatchEvent(eventGenerated);
145:Executive.c **** break;
146:Executive.c ****
147:Executive.c **** case (EV_ACQUIRE_FRAME_COMPLETE):
148:Executive.c **** FrameMgr_dispatchEvent(eventGenerated);
149:Executive.c **** break;
150:Executive.c ****
151:Executive.c **** case (EV_PROCESS_LINE_COMPLETE):
152:Executive.c **** FrameMgr_dispatchEvent(eventGenerated);
153:Executive.c **** break;
154:Executive.c ****
155:Executive.c **** case (EV_PROCESS_FRAME_COMPLETE):
156:Executive.c **** FrameMgr_dispatchEvent(eventGenerated);
157:Executive.c **** break;
158:Executive.c ****
159:Executive.c **** case (EV_SERIAL_DATA_RECEIVED):
160:Executive.c **** UIMgr_dispatchEvent(eventGenerated);
161:Executive.c **** FrameMgr_dispatchEvent(eventGenerated);
162:Executive.c **** break;
163:Executive.c ****
164:Executive.c **** case (EV_SERIAL_DATA_PENDING_TX):
165:Executive.c **** UIMgr_dispatchEvent(eventGenerated);
166:Executive.c **** break;
167:Executive.c ****
168:Executive.c **** default:
169:Executive.c **** break;
170:Executive.c **** }
171:Executive.c **** }
172:Executive.c ****
173:Executive.c **** /* toggle the debug line */
174:Executive.c ****
175:Executive.c **** }
176:Executive.c **** }
177:Executive.c ****
178:Executive.c **** /***********************************************************
179:Executive.c **** Function Name: Exec_readEventFifo
180:Executive.c **** Function Description: This function is responsible for
181:Executive.c **** reading a single event out of the event fifo.
182:Executive.c **** Inputs: none
183:Executive.c **** Outputs: unsigned char-the data read
184:Executive.c **** ***********************************************************/
185:Executive.c **** static unsigned char Exec_readEventFifo(void)
186:Executive.c **** {
187:Executive.c **** unsigned char dataByte, tmpTail;
188:Executive.c ****
189:Executive.c **** DISABLE_INTS();
190:Executive.c **** /* just return the current tail from the tx fifo */
191:Executive.c **** dataByte = Exec_eventFifo[Exec_eventFifoTail];
192:Executive.c **** tmpTail = (Exec_eventFifoTail+1) & (EXEC_EVENT_FIFO_MASK);
193:Executive.c **** Exec_eventFifoTail = tmpTail;
194:Executive.c **** ENABLE_INTS();
GAS LISTING /tmp/ccYEZtaB.s page 6
195:Executive.c ****
196:Executive.c **** return(dataByte);
197:Executive.c **** }
198:Executive.c ****
199:Executive.c **** /***********************************************************
200:Executive.c **** Function Name: Exec_writeEventFifo
201:Executive.c **** Function Description: This function is responsible for
202:Executive.c **** writing a single event to the event fifo and
203:Executive.c **** updating the appropriate pointers.
204:Executive.c **** Inputs: data - the byte to write to the Fifo
205:Executive.c **** Outputs: none
206:Executive.c **** ***********************************************************/
207:Executive.c **** void Exec_writeEventFifo(unsigned char event)
208:Executive.c **** {
92 .stabn 68,0,208,.LM0-.LFBB1
93 .LM0:
94 .LFBB1:
95 /* prologue: frame size=0 */
96 /* prologue end (size=0) */
209:Executive.c **** unsigned char tmpHead;
210:Executive.c ****
211:Executive.c **** DISABLE_INTS();
97 .stabn 68,0,211,.LM1-.LFBB1
98 .LM1:
99 /* #APP */
100 0000 F894 cli
212:Executive.c **** Exec_eventFifo[Exec_eventFifoHead] = event;
101 .stabn 68,0,212,.LM2-.LFBB1
102 .LM2:
103 /* #NOAPP */
104 0002 9091 0000 lds r25,Exec_eventFifoHead
105 0006 E0E0 ldi r30,lo8(Exec_eventFifo)
106 0008 F0E0 ldi r31,hi8(Exec_eventFifo)
107 000a E90F add r30,r25
108 000c F11D adc r31,__zero_reg__
109 000e 8083 st Z,r24
213:Executive.c ****
214:Executive.c **** /* now move the head up */
215:Executive.c **** tmpHead = (Exec_eventFifoHead + 1) & (EXEC_EVENT_FIFO_MASK);
216:Executive.c **** Exec_eventFifoHead = tmpHead;
110 .stabn 68,0,216,.LM3-.LFBB1
111 .LM3:
112 0010 9F5F subi r25,lo8(-(1))
113 0012 9770 andi r25,lo8(7)
114 0014 9093 0000 sts Exec_eventFifoHead,r25
217:Executive.c **** ENABLE_INTS();
115 .stabn 68,0,217,.LM4-.LFBB1
116 .LM4:
117 /* #APP */
118 0018 7894 sei
119 /* #NOAPP */
120 /* epilogue: frame size=0 */
121 001a 0895 ret
122 /* epilogue end (size=1) */
123 /* function Exec_writeEventFifo size 16 (15) */
124 .size Exec_writeEventFifo, .-Exec_writeEventFifo
125 .Lscope1:
GAS LISTING /tmp/ccYEZtaB.s page 7
126 .stabs "",36,0,0,.Lscope1-.LFBB1
127 .stabd 78,0,0
128 .stabs "Exec_run:F(0,15)",36,0,90,Exec_run
129 .global Exec_run
130 .type Exec_run, @function
131 Exec_run:
132 .stabd 46,0,0
133 .stabn 68,0,90,.LM5-.LFBB2
134 .LM5:
135 .LFBB2:
136 /* prologue: frame size=0 */
137 001c CF93 push r28
138 001e DF93 push r29
139 /* prologue end (size=2) */
140 .LBB4:
141 .LBB5:
142 .stabn 68,0,191,.LM6-.LFBB2
143 .LM6:
144 0020 C0E0 ldi r28,lo8(Exec_eventFifo)
145 0022 D0E0 ldi r29,hi8(Exec_eventFifo)
146 .L28:
147 .LBE5:
148 .LBE4:
149 .stabn 68,0,95,.LM7-.LFBB2
150 .LM7:
151 0024 8091 0000 lds r24,fastEventBitmask
152 0028 8823 tst r24
153 002a 01F0 breq .L6
154 .stabn 68,0,100,.LM8-.LFBB2
155 .LM8:
156 002c 80FF sbrs r24,0
157 002e 00C0 rjmp .L8
158 .stabn 68,0,102,.LM9-.LFBB2
159 .LM9:
160 /* #APP */
161 0030 F894 cli
162 .stabn 68,0,103,.LM10-.LFBB2
163 .LM10:
164 /* #NOAPP */
165 0032 8E7F andi r24,lo8(-2)
166 0034 8093 0000 sts fastEventBitmask,r24
167 .stabn 68,0,104,.LM11-.LFBB2
168 .LM11:
169 /* #APP */
170 0038 7894 sei
171 .stabn 68,0,105,.LM12-.LFBB2
172 .LM12:
173 /* #NOAPP */
174 003a 00D0 rcall FrameMgr_processLine
175 .stabn 68,0,109,.LM13-.LFBB2
176 .LM13:
177 003c 00D0 rcall UIMgr_transmitPendingData
178 .L8:
179 .stabn 68,0,116,.LM14-.LFBB2
180 .LM14:
181 003e 8091 0000 lds r24,fastEventBitmask
182 0042 81FF sbrs r24,1
GAS LISTING /tmp/ccYEZtaB.s page 8
183 0044 00C0 rjmp .L6
184 .stabn 68,0,118,.LM15-.LFBB2
185 .LM15:
186 /* #APP */
187 0046 F894 cli
188 .stabn 68,0,119,.LM16-.LFBB2
189 .LM16:
190 /* #NOAPP */
191 0048 8D7F andi r24,lo8(-3)
192 004a 8093 0000 sts fastEventBitmask,r24
193 .stabn 68,0,120,.LM17-.LFBB2
194 .LM17:
195 /* #APP */
196 004e 7894 sei
197 .stabn 68,0,121,.LM18-.LFBB2
198 .LM18:
199 /* #NOAPP */
200 0050 00D0 rcall FrameMgr_acquireLine
201 .L6:
202 .stabn 68,0,125,.LM19-.LFBB2
203 .LM19:
204 0052 9091 0000 lds r25,Exec_eventFifoTail
205 0056 8091 0000 lds r24,Exec_eventFifoHead
206 005a 8917 cp r24,r25
207 005c 01F0 breq .L28
208 .LBB7:
209 .LBB6:
210 .stabn 68,0,189,.LM20-.LFBB2
211 .LM20:
212 /* #APP */
213 005e F894 cli
214 .stabn 68,0,191,.LM21-.LFBB2
215 .LM21:
216 /* #NOAPP */
217 0060 FE01 movw r30,r28
218 0062 E90F add r30,r25
219 0064 F11D adc r31,__zero_reg__
220 0066 E081 ld r30,Z
221 .stabn 68,0,193,.LM22-.LFBB2
222 .LM22:
223 0068 892F mov r24,r25
224 006a 8F5F subi r24,lo8(-(1))
225 006c 8770 andi r24,lo8(7)
226 006e 8093 0000 sts Exec_eventFifoTail,r24
227 .stabn 68,0,194,.LM23-.LFBB2
228 .LM23:
229 /* #APP */
230 0072 7894 sei
231 /* #NOAPP */
232 .LBE6:
233 .LBE7:
234 .stabn 68,0,128,.LM24-.LFBB2
235 .LM24:
236 0074 E031 cpi r30,lo8(16)
237 0076 01F0 breq .L16
238 0078 E131 cpi r30,lo8(17)
239 007a 00F4 brsh .L21
GAS LISTING /tmp/ccYEZtaB.s page 9
240 007c E230 cpi r30,lo8(2)
241 007e 01F0 breq .L13
242 0080 E330 cpi r30,lo8(3)
243 0082 00F4 brsh .L22
244 0084 E130 cpi r30,lo8(1)
245 0086 01F4 brne .L28
246 0088 00C0 rjmp .L12
247 .L22:
248 008a E430 cpi r30,lo8(4)
249 008c 01F0 breq .L14
250 008e E830 cpi r30,lo8(8)
251 0090 01F4 brne .L28
252 0092 00C0 rjmp .L15
253 .L21:
254 0094 E038 cpi r30,lo8(-128)
255 0096 01F0 breq .L18
256 0098 E138 cpi r30,lo8(-127)
257 009a 00F4 brsh .L23
258 009c E032 cpi r30,lo8(32)
259 009e 01F0 breq .+2
260 00a0 00C0 rjmp .L28
261 00a2 00C0 rjmp .L17
262 .L23:
263 00a4 E138 cpi r30,lo8(-127)
264 00a6 01F0 breq .L19
265 00a8 E039 cpi r30,lo8(-112)
266 00aa 01F0 breq .+2
267 00ac 00C0 rjmp .L28
268 00ae 00C0 rjmp .L20
269 .L13:
270 .stabn 68,0,131,.LM25-.LFBB2
271 .LM25:
272 00b0 82E0 ldi r24,lo8(2)
273 00b2 00D0 rcall FrameMgr_dispatchEvent
274 00b4 00C0 rjmp .L28
275 .L18:
276 .stabn 68,0,135,.LM26-.LFBB2
277 .LM26:
278 00b6 80E8 ldi r24,lo8(-128)
279 00b8 00D0 rcall FrameMgr_dispatchEvent
280 00ba 00C0 rjmp .L28
281 .L19:
282 .stabn 68,0,139,.LM27-.LFBB2
283 .LM27:
284 00bc 81E8 ldi r24,lo8(-127)
285 00be 00D0 rcall FrameMgr_dispatchEvent
286 00c0 00C0 rjmp .L28
287 .L16:
288 .stabn 68,0,143,.LM28-.LFBB2
289 .LM28:
290 00c2 80E1 ldi r24,lo8(16)
291 00c4 00D0 rcall FrameMgr_dispatchEvent
292 .stabn 68,0,144,.LM29-.LFBB2
293 .LM29:
294 00c6 80E1 ldi r24,lo8(16)
295 00c8 00D0 rcall UIMgr_dispatchEvent
296 00ca 00C0 rjmp .L28
GAS LISTING /tmp/ccYEZtaB.s page 10
297 .L17:
298 .stabn 68,0,148,.LM30-.LFBB2
299 .LM30:
300 00cc 80E2 ldi r24,lo8(32)
301 00ce 00D0 rcall FrameMgr_dispatchEvent
302 00d0 00C0 rjmp .L28
303 .L15:
304 .stabn 68,0,152,.LM31-.LFBB2
305 .LM31:
306 00d2 88E0 ldi r24,lo8(8)
307 00d4 00D0 rcall FrameMgr_dispatchEvent
308 00d6 00C0 rjmp .L28
309 .L14:
310 .stabn 68,0,156,.LM32-.LFBB2
311 .LM32:
312 00d8 84E0 ldi r24,lo8(4)
313 00da 00D0 rcall FrameMgr_dispatchEvent
314 00dc 00C0 rjmp .L28
315 .L12:
316 .stabn 68,0,160,.LM33-.LFBB2
317 .LM33:
318 00de 81E0 ldi r24,lo8(1)
319 00e0 00D0 rcall UIMgr_dispatchEvent
320 .stabn 68,0,161,.LM34-.LFBB2
321 .LM34:
322 00e2 81E0 ldi r24,lo8(1)
323 00e4 00D0 rcall FrameMgr_dispatchEvent
324 00e6 00C0 rjmp .L28
325 .L20:
326 .stabn 68,0,165,.LM35-.LFBB2
327 .LM35:
328 00e8 80E9 ldi r24,lo8(-112)
329 00ea 00D0 rcall UIMgr_dispatchEvent
330 00ec 00C0 rjmp .L28
331 /* epilogue: frame size=0 */
332 /* epilogue: noreturn */
333 /* epilogue end (size=0) */
334 /* function Exec_run size 111 (109) */
335 .size Exec_run, .-Exec_run
336 .stabs "dataByte:r(0,11)",64,0,187,30
337 .stabn 192,0,0,.LBB5-.LFBB2
338 .stabn 224,0,0,.LBE5-.LFBB2
339 .stabs "dataByte:r(0,11)",64,0,187,30
340 .stabn 192,0,0,.LBB6-.LFBB2
341 .stabn 224,0,0,.LBE6-.LFBB2
342 .Lscope2:
343 .stabs "",36,0,0,.Lscope2-.LFBB2
344 .stabd 78,0,0
345 .global Exec_eventFifoHead
346 .global Exec_eventFifoHead
347 .section .bss
348 .type Exec_eventFifoHead, @object
349 .size Exec_eventFifoHead, 1
350 Exec_eventFifoHead:
351 0000 00 .skip 1,0
352 .global Exec_eventFifoTail
353 .global Exec_eventFifoTail
GAS LISTING /tmp/ccYEZtaB.s page 11
354 .type Exec_eventFifoTail, @object
355 .size Exec_eventFifoTail, 1
356 Exec_eventFifoTail:
357 0001 00 .skip 1,0
358 .global fastEventBitmask
359 .global fastEventBitmask
360 .type fastEventBitmask, @object
361 .size fastEventBitmask, 1
362 fastEventBitmask:
363 0002 00 .skip 1,0
364 .comm Exec_eventFifo,8,1
365 .stabs "fastEventBitmask:G(0,11)",32,0,74,0
366 .stabs "Exec_eventFifo:G(0,16)=ar(0,17)=r(0,17);0;0177777;;0;7;(0,11)",32,0,63,0
367 .stabs "Exec_eventFifoHead:G(0,11)",32,0,64,0
368 .stabs "Exec_eventFifoTail:G(0,11)",32,0,65,0
369 .text
370 .stabs "",100,0,0,.Letext0
371 .Letext0:
372 /* File "Executive.c": code 127 = 0x007f ( 124), prologues 2, epilogues 1 */
GAS LISTING /tmp/ccYEZtaB.s page 12
DEFINED SYMBOLS
*ABS*:00000000 Executive.c
/tmp/ccYEZtaB.s:2 *ABS*:0000003f __SREG__
/tmp/ccYEZtaB.s:3 *ABS*:0000003e __SP_H__
/tmp/ccYEZtaB.s:4 *ABS*:0000003d __SP_L__
/tmp/ccYEZtaB.s:5 *ABS*:00000000 __tmp_reg__
/tmp/ccYEZtaB.s:6 *ABS*:00000001 __zero_reg__
/tmp/ccYEZtaB.s:90 .text:00000000 Exec_writeEventFifo
/tmp/ccYEZtaB.s:350 .bss:00000000 Exec_eventFifoHead
*COM*:00000008 Exec_eventFifo
/tmp/ccYEZtaB.s:131 .text:0000001c Exec_run
/tmp/ccYEZtaB.s:362 .bss:00000002 fastEventBitmask
/tmp/ccYEZtaB.s:356 .bss:00000001 Exec_eventFifoTail
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
FrameMgr_processLine
UIMgr_transmitPendingData
FrameMgr_acquireLine
FrameMgr_dispatchEvent
UIMgr_dispatchEvent