Subversion Repositories svnkaklik

Rev

Rev 410 | Details | Compare with Previous | Last modification | View Log

Rev Author Line No. Line
484 kaklik 1
GAS LISTING /tmp/ccYEZtaB.s 			page 1
151 kaklik 2
 
3
 
4
   1               		.file	"Executive.c"
484 kaklik 5
   2               	__SREG__ = 0x3f
6
   3               	__SP_H__ = 0x3e
7
   4               	__SP_L__ = 0x3d
8
   5               	__tmp_reg__ = 0
9
   6               	__zero_reg__ = 1
10
   7               		.global __do_copy_data
11
   8               		.global __do_clear_bss
12
   9               		.stabs	"/home/kaklik/projects/programy/C/avr/AVRcam/",100,0,2,.Ltext0
13
  10               		.stabs	"Executive.c",100,0,2,.Ltext0
14
  11               		.text
15
  12               	.Ltext0:
16
  13               		.stabs	"gcc2_compiled.",60,0,0,0
17
  14               		.stabs	"int:t(0,1)=r(0,1);-32768;32767;",128,0,0,0
18
  15               		.stabs	"char:t(0,2)=@s8;r(0,2);0;255;",128,0,0,0
19
  16               		.stabs	"long int:t(0,3)=@s32;r(0,3);020000000000;017777777777;",128,0,0,0
20
  17               		.stabs	"unsigned int:t(0,4)=r(0,4);0;0177777;",128,0,0,0
21
  18               		.stabs	"long unsigned int:t(0,5)=@s32;r(0,5);0;037777777777;",128,0,0,0
22
  19               		.stabs	"long long int:t(0,6)=@s64;r(0,6);01000000000000000000000;0777777777777777777777;",128,0,0,
23
  20               		.stabs	"long long unsigned int:t(0,7)=@s64;r(0,7);0;01777777777777777777777;",128,0,0,0
24
  21               		.stabs	"short int:t(0,8)=r(0,8);-32768;32767;",128,0,0,0
25
  22               		.stabs	"short unsigned int:t(0,9)=r(0,9);0;0177777;",128,0,0,0
26
  23               		.stabs	"signed char:t(0,10)=@s8;r(0,10);-128;127;",128,0,0,0
27
  24               		.stabs	"unsigned char:t(0,11)=@s8;r(0,11);0;255;",128,0,0,0
28
  25               		.stabs	"float:t(0,12)=r(0,1);4;0;",128,0,0,0
29
  26               		.stabs	"double:t(0,13)=r(0,1);4;0;",128,0,0,0
30
  27               		.stabs	"long double:t(0,14)=r(0,1);4;0;",128,0,0,0
31
  28               		.stabs	"void:t(0,15)=(0,15)",128,0,0,0
32
  29               		.stabs	"/usr/lib/gcc/avr/4.2.1/../../../../avr/include/stdlib.h",130,0,0,0
33
  30               		.stabs	"/usr/lib/gcc/avr/4.2.1/include/stddef.h",130,0,0,0
34
  31               		.stabs	"size_t:t(2,1)=(0,4)",128,0,214,0
35
  32               		.stabs	"wchar_t:t(2,2)=(0,1)",128,0,326,0
36
  33               		.stabn	162,0,0,0
37
  34               		.stabs	"div_t:t(1,1)=(1,2)=s4quot:(0,1),0,16;rem:(0,1),16,16;;",128,0,69,0
38
  35               		.stabs	"ldiv_t:t(1,3)=(1,4)=s8quot:(0,3),0,32;rem:(0,3),32,32;;",128,0,75,0
39
  36               		.stabs	"__compar_fn_t:t(1,5)=(1,6)=*(1,7)=f(0,1)",128,0,78,0
40
  37               		.stabn	162,0,0,0
41
  38               		.stabs	"CommonDefs.h",130,0,0,0
42
  39               		.stabs	"/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/interrupt.h",130,0,0,0
43
  40               		.stabs	"/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/io.h",130,0,0,0
44
  41               		.stabs	"/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/sfr_defs.h",130,0,0,0
45
  42               		.stabs	"/usr/lib/gcc/avr/4.2.1/../../../../avr/include/inttypes.h",130,0,0,0
46
  43               		.stabs	"/usr/lib/gcc/avr/4.2.1/../../../../avr/include/stdint.h",130,0,0,0
47
  44               		.stabs	"int8_t:t(8,1)=(0,10)",128,0,116,0
48
  45               		.stabs	"uint8_t:t(8,2)=(0,11)",128,0,117,0
49
  46               		.stabs	"int16_t:t(8,3)=(0,1)",128,0,118,0
50
  47               		.stabs	"uint16_t:t(8,4)=(0,4)",128,0,119,0
51
  48               		.stabs	"int32_t:t(8,5)=(0,3)",128,0,120,0
52
  49               		.stabs	"uint32_t:t(8,6)=(0,5)",128,0,121,0
53
  50               		.stabs	"int64_t:t(8,7)=(0,6)",128,0,122,0
54
  51               		.stabs	"uint64_t:t(8,8)=(0,7)",128,0,123,0
55
  52               		.stabs	"intptr_t:t(8,9)=(8,3)",128,0,135,0
56
  53               		.stabs	"uintptr_t:t(8,10)=(8,4)",128,0,140,0
57
  54               		.stabs	"int_least8_t:t(8,11)=(8,1)",128,0,152,0
58
  55               		.stabs	"uint_least8_t:t(8,12)=(8,2)",128,0,157,0
59
  56               		.stabs	"int_least16_t:t(8,13)=(8,3)",128,0,162,0
60
  57               		.stabs	"uint_least16_t:t(8,14)=(8,4)",128,0,167,0
61
GAS LISTING /tmp/ccYEZtaB.s 			page 2
151 kaklik 62
 
63
 
484 kaklik 64
  58               		.stabs	"int_least32_t:t(8,15)=(8,5)",128,0,172,0
65
  59               		.stabs	"uint_least32_t:t(8,16)=(8,6)",128,0,177,0
66
  60               		.stabs	"int_least64_t:t(8,17)=(8,7)",128,0,182,0
67
  61               		.stabs	"uint_least64_t:t(8,18)=(8,8)",128,0,187,0
68
  62               		.stabs	"int_fast8_t:t(8,19)=(8,1)",128,0,200,0
69
  63               		.stabs	"uint_fast8_t:t(8,20)=(8,2)",128,0,205,0
70
  64               		.stabs	"int_fast16_t:t(8,21)=(8,3)",128,0,210,0
71
  65               		.stabs	"uint_fast16_t:t(8,22)=(8,4)",128,0,215,0
72
  66               		.stabs	"int_fast32_t:t(8,23)=(8,5)",128,0,220,0
73
  67               		.stabs	"uint_fast32_t:t(8,24)=(8,6)",128,0,225,0
74
  68               		.stabs	"int_fast64_t:t(8,25)=(8,7)",128,0,230,0
75
  69               		.stabs	"uint_fast64_t:t(8,26)=(8,8)",128,0,235,0
76
  70               		.stabs	"intmax_t:t(8,27)=(8,7)",128,0,249,0
77
  71               		.stabs	"uintmax_t:t(8,28)=(8,8)",128,0,254,0
78
  72               		.stabn	162,0,0,0
79
  73               		.stabs	"int_farptr_t:t(7,1)=(8,5)",128,0,76,0
80
  74               		.stabs	"uint_farptr_t:t(7,2)=(8,6)",128,0,80,0
81
  75               		.stabn	162,0,0,0
151 kaklik 82
  76               		.stabn	162,0,0,0
83
  77               		.stabn	162,0,0,0
84
  78               		.stabn	162,0,0,0
484 kaklik 85
  79               		.stabs	"bool_t:t(3,1)=(0,11)",128,0,56,0
86
  80               		.stabn	162,0,0,0
87
  81               		.stabs	"CamConfig.h",130,0,0,0
88
  82               		.stabs	"I2CInterface.h",130,0,0,0
89
  83               		.stabs	"i2cCmd_t:t(10,1)=(10,2)=s2configReg:(0,11),0,8;data:(0,11),8,8;;",128,0,53,0
90
  84               		.stabn	162,0,0,0
151 kaklik 91
  85               		.stabn	162,0,0,0
484 kaklik 92
  86               		.stabs	"Exec_writeEventFifo:F(0,15)",36,0,208,Exec_writeEventFifo
93
  87               		.stabs	"event:P(0,11)",64,0,207,24
94
  88               	.global	Exec_writeEventFifo
95
  89               		.type	Exec_writeEventFifo, @function
96
  90               	Exec_writeEventFifo:
97
  91               		.stabd	46,0,0
151 kaklik 98
   1:Executive.c   **** /*
99
   2:Executive.c   ****     Copyright (C) 2004    John Orlando
100
   3:Executive.c   ****     
101
   4:Executive.c   ****    AVRcam: a small real-time image processing engine.
102
   5:Executive.c   **** 
103
   6:Executive.c   ****     This program is free software; you can redistribute it and/or
104
   7:Executive.c   ****     modify it under the terms of the GNU General Public
105
   8:Executive.c   ****     License as published by the Free Software Foundation; either
106
   9:Executive.c   ****     version 2 of the License, or (at your option) any later version.
107
  10:Executive.c   **** 
108
  11:Executive.c   ****     This program is distributed in the hope that it will be useful,
109
  12:Executive.c   ****     but WITHOUT ANY WARRANTY; without even the implied warranty of
110
  13:Executive.c   ****     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
111
  14:Executive.c   ****     General Public License for more details.
112
  15:Executive.c   **** 
113
  16:Executive.c   ****     You should have received a copy of the GNU General Public
114
  17:Executive.c   ****     License along with this program; if not, write to the Free Software
115
  18:Executive.c   ****     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
116
  19:Executive.c   **** 
117
  20:Executive.c   ****    For more information on the AVRcam, please contact:
118
  21:Executive.c   **** 
119
  22:Executive.c   ****    john@jrobot.net
484 kaklik 120
  23:Executive.c   **** 
121
GAS LISTING /tmp/ccYEZtaB.s 			page 3
151 kaklik 122
 
123
 
124
  24:Executive.c   ****    or go to www.jrobot.net for more details regarding the system.
125
  25:Executive.c   **** */
126
  26:Executive.c   **** /***********************************************************
127
  27:Executive.c   **** 	Module Name: Executive.c
128
  28:Executive.c   **** 	Module Date: 04/12/2004
129
  29:Executive.c   **** 	Module Auth: John Orlando
130
  30:Executive.c   **** 	
131
  31:Executive.c   **** 	Description: This file is responsible for implementing a
132
  32:Executive.c   **** 	minimalist event dispatcher.  It keeps track of an event
133
  33:Executive.c   **** 	fifo that waits for new events to come in, and dispatches
134
  34:Executive.c   **** 	them to any entities that care about them.
135
  35:Executive.c   ****     
136
  36:Executive.c   ****     Revision History:
137
  37:Executive.c   ****     Date        Rel Ver.    Notes
138
  38:Executive.c   ****     4/10/2004      0.1     Module created
139
  39:Executive.c   ****     6/30/2004      1.0     Initial release for Circuit Cellar
140
  40:Executive.c   ****                            contest.
141
  41:Executive.c   ****     1/16/2005      1.4     Fixed issue where the interrupts weren't
142
  42:Executive.c   ****                            being turned off when the fastEventBitmask
143
  43:Executive.c   ****                            was being accessed.  Also removed redundant
144
  44:Executive.c   ****                            interrupt masking when accessing the
145
  45:Executive.c   ****                            main event fifo.  Also fixed issue where
146
  46:Executive.c   ****                            the main event fifo wasn't being checked
147
  47:Executive.c   ****                            for events if an event was pending in
148
  48:Executive.c   ****                            the fast event fifo.
149
  49:Executive.c   **** ***********************************************************/
150
  50:Executive.c   **** 
151
  51:Executive.c   **** /*	Includes */
152
  52:Executive.c   **** #include <stdlib.h>
153
  53:Executive.c   **** #include "CommonDefs.h"
154
  54:Executive.c   **** #include "Executive.h"
155
  55:Executive.c   **** #include "FrameMgr.h"
156
  56:Executive.c   **** #include "CamInterface.h"
157
  57:Executive.c   **** #include "UIMgr.h"
158
  58:Executive.c   **** #include "UartInterface.h"
159
  59:Executive.c   **** #include "CamConfig.h"
160
  60:Executive.c   **** #include "Utility.h"
161
  61:Executive.c   **** 
162
  62:Executive.c   **** /*  Local Variables */
163
  63:Executive.c   **** unsigned char Exec_eventFifo[EXEC_EVENT_FIFO_SIZE];
164
  64:Executive.c   **** unsigned char Exec_eventFifoHead=0;
165
  65:Executive.c   **** unsigned char Exec_eventFifoTail=0;
166
  66:Executive.c   **** 
167
  67:Executive.c   **** /*  Local Function Definitions */
168
  68:Executive.c   **** static unsigned char Exec_readEventFifo(void);
169
  69:Executive.c   **** 
170
  70:Executive.c   **** /* 	Local Structures and Typedefs */
171
  71:Executive.c   **** 
172
  72:Executive.c   **** /*  Extern Variables */
173
  73:Executive.c   **** /* This bitmask holds events that need to be processed as fast as possible */
174
  74:Executive.c   **** unsigned char fastEventBitmask = 0x00;
175
  75:Executive.c   **** 
176
  76:Executive.c   **** /*  Definitions */
177
  77:Executive.c   **** #define IS_DATA_IN_EVENT_FIFO() (!(Exec_eventFifoHead == Exec_eventFifoTail))
178
  78:Executive.c   **** /***********************************************************
179
  79:Executive.c   **** 	Function Name: Exec_run
484 kaklik 180
  80:Executive.c   **** 	Function Description: This function is responsible for
181
GAS LISTING /tmp/ccYEZtaB.s 			page 4
151 kaklik 182
 
183
 
184
  81:Executive.c   **** 	running the main control loop.  The control loop is 
185
  82:Executive.c   **** 	based on checking both the fast-event bitmask (for high
186
  83:Executive.c   ****     priority events) and the event FIFO to determine if an
187
  84:Executive.c   ****     event needs to be handled.  The event is then dispatched
188
  85:Executive.c   ****     to the appropriate handler.
189
  86:Executive.c   **** 	Inputs:  none
190
  87:Executive.c   **** 	Outputs: none
191
  88:Executive.c   **** ***********************************************************/	
192
  89:Executive.c   **** void Exec_run(void)
193
  90:Executive.c   **** {
194
  91:Executive.c   **** 	unsigned char eventGenerated;
195
  92:Executive.c   **** 	
196
  93:Executive.c   **** 	while(1)
197
  94:Executive.c   **** 	{
198
  95:Executive.c   **** 		if (fastEventBitmask)
199
  96:Executive.c   **** 		{
200
  97:Executive.c   **** 			/* an event needing fast processing has been received */
201
  98:Executive.c   **** 			/* a received line needs to be processed...this
202
  99:Executive.c   **** 			needs to be processed as quickly as possible */
203
 100:Executive.c   **** 			if (fastEventBitmask & FEV_ACQUIRE_LINE_COMPLETE)
204
 101:Executive.c   **** 			{
205
 102:Executive.c   ****                 DISABLE_INTS();
206
 103:Executive.c   **** 				fastEventBitmask &= ~FEV_ACQUIRE_LINE_COMPLETE;	
207
 104:Executive.c   ****                 ENABLE_INTS();
208
 105:Executive.c   **** 				FrameMgr_processLine();				
209
 106:Executive.c   **** 			
210
 107:Executive.c   **** 				/* also check if serial data needs to be sent
211
 108:Executive.c   **** 				out through UIMgr */
212
 109:Executive.c   **** 				UIMgr_transmitPendingData();	
213
 110:Executive.c   **** 
214
 111:Executive.c   **** 				/* we can't just call acquire line again here,
215
 112:Executive.c   **** 				since we don't know if we need to acquire another
216
 113:Executive.c   **** 				line or not (it depends on the FrameMgr to figure
217
 114:Executive.c   **** 				this out) */
218
 115:Executive.c   **** 			}
219
 116:Executive.c   **** 			if (fastEventBitmask & FEV_PROCESS_LINE_COMPLETE)
220
 117:Executive.c   **** 			{
221
 118:Executive.c   ****                 DISABLE_INTS();
222
 119:Executive.c   **** 				fastEventBitmask &= ~FEV_PROCESS_LINE_COMPLETE;
223
 120:Executive.c   ****                 ENABLE_INTS();
224
 121:Executive.c   **** 				FrameMgr_acquireLine();
225
 122:Executive.c   **** 			}
226
 123:Executive.c   **** 		}		
227
 124:Executive.c   **** 		
228
 125:Executive.c   ****         if (IS_DATA_IN_EVENT_FIFO() == TRUE)		
229
 126:Executive.c   **** 		{			
230
 127:Executive.c   ****             eventGenerated = Exec_readEventFifo();
231
 128:Executive.c   **** 			switch(eventGenerated)
232
 129:Executive.c   **** 			{
233
 130:Executive.c   **** 				case (EV_DUMP_FRAME):
234
 131:Executive.c   **** 					FrameMgr_dispatchEvent(eventGenerated);
235
 132:Executive.c   **** 					break;
236
 133:Executive.c   **** 					
237
 134:Executive.c   **** 				case (EV_ENABLE_TRACKING):
238
 135:Executive.c   **** 					FrameMgr_dispatchEvent(eventGenerated);
239
 136:Executive.c   **** 					break;
484 kaklik 240
 137:Executive.c   **** 					
241
GAS LISTING /tmp/ccYEZtaB.s 			page 5
151 kaklik 242
 
243
 
244
 138:Executive.c   **** 				case (EV_DISABLE_TRACKING):
245
 139:Executive.c   **** 					FrameMgr_dispatchEvent(eventGenerated);
246
 140:Executive.c   **** 					break;
247
 141:Executive.c   **** 					
248
 142:Executive.c   **** 				case (EV_ACQUIRE_LINE_COMPLETE):
249
 143:Executive.c   **** 					FrameMgr_dispatchEvent(eventGenerated);
250
 144:Executive.c   **** 					UIMgr_dispatchEvent(eventGenerated);
251
 145:Executive.c   **** 					break;
252
 146:Executive.c   **** 					
253
 147:Executive.c   **** 				case (EV_ACQUIRE_FRAME_COMPLETE):				
254
 148:Executive.c   **** 					FrameMgr_dispatchEvent(eventGenerated);
255
 149:Executive.c   **** 					break;
256
 150:Executive.c   **** 					
257
 151:Executive.c   **** 				case (EV_PROCESS_LINE_COMPLETE):
258
 152:Executive.c   **** 					FrameMgr_dispatchEvent(eventGenerated);
259
 153:Executive.c   **** 					break;
260
 154:Executive.c   **** 				
261
 155:Executive.c   **** 				case (EV_PROCESS_FRAME_COMPLETE):
262
 156:Executive.c   **** 					FrameMgr_dispatchEvent(eventGenerated);
263
 157:Executive.c   **** 					break;
264
 158:Executive.c   **** 					
265
 159:Executive.c   **** 				case (EV_SERIAL_DATA_RECEIVED):
266
 160:Executive.c   **** 					UIMgr_dispatchEvent(eventGenerated);
267
 161:Executive.c   **** 					FrameMgr_dispatchEvent(eventGenerated);
268
 162:Executive.c   **** 					break;																
269
 163:Executive.c   **** 
270
 164:Executive.c   **** 				case (EV_SERIAL_DATA_PENDING_TX):
271
 165:Executive.c   **** 					UIMgr_dispatchEvent(eventGenerated);
272
 166:Executive.c   **** 					break;
273
 167:Executive.c   **** 								
274
 168:Executive.c   **** 				default:		
275
 169:Executive.c   **** 					break;
276
 170:Executive.c   **** 			}			
277
 171:Executive.c   **** 		}
278
 172:Executive.c   ****         
279
 173:Executive.c   ****         /* toggle the debug line */
280
 174:Executive.c   **** 
281
 175:Executive.c   **** 	}
282
 176:Executive.c   **** }
283
 177:Executive.c   **** 
284
 178:Executive.c   **** /***********************************************************
285
 179:Executive.c   **** 	Function Name: Exec_readEventFifo
286
 180:Executive.c   **** 	Function Description: This function is responsible for
287
 181:Executive.c   **** 	reading a single event out of the event fifo.
288
 182:Executive.c   **** 	Inputs:  none 
289
 183:Executive.c   **** 	Outputs: unsigned char-the data read
290
 184:Executive.c   **** ***********************************************************/	
291
 185:Executive.c   **** static unsigned char Exec_readEventFifo(void)
292
 186:Executive.c   **** {
293
 187:Executive.c   **** 	unsigned char dataByte, tmpTail;
294
 188:Executive.c   **** 	
295
 189:Executive.c   **** 	DISABLE_INTS();
296
 190:Executive.c   **** 	/* just return the current tail from the tx fifo */
297
 191:Executive.c   **** 	dataByte = Exec_eventFifo[Exec_eventFifoTail];	
298
 192:Executive.c   **** 	tmpTail = (Exec_eventFifoTail+1) & (EXEC_EVENT_FIFO_MASK);
299
 193:Executive.c   **** 	Exec_eventFifoTail = tmpTail;
484 kaklik 300
 194:Executive.c   **** 	ENABLE_INTS();
301
GAS LISTING /tmp/ccYEZtaB.s 			page 6
151 kaklik 302
 
303
 
304
 195:Executive.c   **** 	
305
 196:Executive.c   **** 	return(dataByte);
306
 197:Executive.c   **** }
307
 198:Executive.c   **** 
308
 199:Executive.c   **** /***********************************************************
309
 200:Executive.c   **** 	Function Name: Exec_writeEventFifo
310
 201:Executive.c   **** 	Function Description: This function is responsible for
311
 202:Executive.c   **** 	writing a single event to the event fifo and
312
 203:Executive.c   **** 	updating the appropriate pointers.
313
 204:Executive.c   **** 	Inputs:  data - the byte to write to the Fifo 
314
 205:Executive.c   **** 	Outputs: none
315
 206:Executive.c   **** ***********************************************************/	
316
 207:Executive.c   **** void Exec_writeEventFifo(unsigned char event)
317
 208:Executive.c   **** {
484 kaklik 318
  92               		.stabn	68,0,208,.LM0-.LFBB1
319
  93               	.LM0:
320
  94               	.LFBB1:
151 kaklik 321
  95               	/* prologue: frame size=0 */
322
  96               	/* prologue end (size=0) */
323
 209:Executive.c   **** 	unsigned char tmpHead;
324
 210:Executive.c   **** 
325
 211:Executive.c   **** 	DISABLE_INTS();
484 kaklik 326
  97               		.stabn	68,0,211,.LM1-.LFBB1
151 kaklik 327
  98               	.LM1:
328
  99               	/* #APP */
329
 100 0000 F894      		cli
330
 212:Executive.c   **** 	Exec_eventFifo[Exec_eventFifoHead] = event;
484 kaklik 331
 101               		.stabn	68,0,212,.LM2-.LFBB1
151 kaklik 332
 102               	.LM2:
333
 103               	/* #NOAPP */
334
 104 0002 9091 0000 		lds r25,Exec_eventFifoHead
335
 105 0006 E0E0      		ldi r30,lo8(Exec_eventFifo)
336
 106 0008 F0E0      		ldi r31,hi8(Exec_eventFifo)
337
 107 000a E90F      		add r30,r25
338
 108 000c F11D      		adc r31,__zero_reg__
339
 109 000e 8083      		st Z,r24
340
 213:Executive.c   **** 
341
 214:Executive.c   ****     /* now move the head up */
342
 215:Executive.c   ****     tmpHead = (Exec_eventFifoHead + 1) & (EXEC_EVENT_FIFO_MASK);
343
 216:Executive.c   ****     Exec_eventFifoHead = tmpHead;
484 kaklik 344
 110               		.stabn	68,0,216,.LM3-.LFBB1
151 kaklik 345
 111               	.LM3:
346
 112 0010 9F5F      		subi r25,lo8(-(1))
347
 113 0012 9770      		andi r25,lo8(7)
348
 114 0014 9093 0000 		sts Exec_eventFifoHead,r25
349
 217:Executive.c   **** 	ENABLE_INTS();
484 kaklik 350
 115               		.stabn	68,0,217,.LM4-.LFBB1
151 kaklik 351
 116               	.LM4:
352
 117               	/* #APP */
353
 118 0018 7894      		sei
354
 119               	/* #NOAPP */
355
 120               	/* epilogue: frame size=0 */
356
 121 001a 0895      		ret
357
 122               	/* epilogue end (size=1) */
358
 123               	/* function Exec_writeEventFifo size 16 (15) */
359
 124               		.size	Exec_writeEventFifo, .-Exec_writeEventFifo
484 kaklik 360
 125               	.Lscope1:
361
GAS LISTING /tmp/ccYEZtaB.s 			page 7
151 kaklik 362
 
363
 
484 kaklik 364
 126               		.stabs	"",36,0,0,.Lscope1-.LFBB1
151 kaklik 365
 127               		.stabd	78,0,0
366
 128               		.stabs	"Exec_run:F(0,15)",36,0,90,Exec_run
367
 129               	.global	Exec_run
368
 130               		.type	Exec_run, @function
369
 131               	Exec_run:
370
 132               		.stabd	46,0,0
484 kaklik 371
 133               		.stabn	68,0,90,.LM5-.LFBB2
151 kaklik 372
 134               	.LM5:
484 kaklik 373
 135               	.LFBB2:
374
 136               	/* prologue: frame size=0 */
375
 137 001c CF93      		push r28
376
 138 001e DF93      		push r29
377
 139               	/* prologue end (size=2) */
378
 140               	.LBB4:
379
 141               	.LBB5:
380
 142               		.stabn	68,0,191,.LM6-.LFBB2
381
 143               	.LM6:
382
 144 0020 C0E0      		ldi r28,lo8(Exec_eventFifo)
383
 145 0022 D0E0      		ldi r29,hi8(Exec_eventFifo)
384
 146               	.L28:
385
 147               	.LBE5:
386
 148               	.LBE4:
387
 149               		.stabn	68,0,95,.LM7-.LFBB2
388
 150               	.LM7:
389
 151 0024 8091 0000 		lds r24,fastEventBitmask
390
 152 0028 8823      		tst r24
391
 153 002a 01F0      		breq .L6
392
 154               		.stabn	68,0,100,.LM8-.LFBB2
393
 155               	.LM8:
394
 156 002c 80FF      		sbrs r24,0
395
 157 002e 00C0      		rjmp .L8
396
 158               		.stabn	68,0,102,.LM9-.LFBB2
397
 159               	.LM9:
398
 160               	/* #APP */
399
 161 0030 F894      		cli
400
 162               		.stabn	68,0,103,.LM10-.LFBB2
401
 163               	.LM10:
402
 164               	/* #NOAPP */
403
 165 0032 8E7F      		andi r24,lo8(-2)
404
 166 0034 8093 0000 		sts fastEventBitmask,r24
405
 167               		.stabn	68,0,104,.LM11-.LFBB2
406
 168               	.LM11:
407
 169               	/* #APP */
408
 170 0038 7894      		sei
409
 171               		.stabn	68,0,105,.LM12-.LFBB2
410
 172               	.LM12:
411
 173               	/* #NOAPP */
412
 174 003a 00D0      		rcall FrameMgr_processLine
413
 175               		.stabn	68,0,109,.LM13-.LFBB2
414
 176               	.LM13:
415
 177 003c 00D0      		rcall UIMgr_transmitPendingData
416
 178               	.L8:
417
 179               		.stabn	68,0,116,.LM14-.LFBB2
418
 180               	.LM14:
419
 181 003e 8091 0000 		lds r24,fastEventBitmask
420
 182 0042 81FF      		sbrs r24,1
421
GAS LISTING /tmp/ccYEZtaB.s 			page 8
151 kaklik 422
 
423
 
484 kaklik 424
 183 0044 00C0      		rjmp .L6
425
 184               		.stabn	68,0,118,.LM15-.LFBB2
426
 185               	.LM15:
427
 186               	/* #APP */
428
 187 0046 F894      		cli
429
 188               		.stabn	68,0,119,.LM16-.LFBB2
430
 189               	.LM16:
431
 190               	/* #NOAPP */
432
 191 0048 8D7F      		andi r24,lo8(-3)
433
 192 004a 8093 0000 		sts fastEventBitmask,r24
434
 193               		.stabn	68,0,120,.LM17-.LFBB2
435
 194               	.LM17:
436
 195               	/* #APP */
437
 196 004e 7894      		sei
438
 197               		.stabn	68,0,121,.LM18-.LFBB2
439
 198               	.LM18:
440
 199               	/* #NOAPP */
441
 200 0050 00D0      		rcall FrameMgr_acquireLine
442
 201               	.L6:
443
 202               		.stabn	68,0,125,.LM19-.LFBB2
444
 203               	.LM19:
445
 204 0052 9091 0000 		lds r25,Exec_eventFifoTail
446
 205 0056 8091 0000 		lds r24,Exec_eventFifoHead
447
 206 005a 8917      		cp r24,r25
448
 207 005c 01F0      		breq .L28
449
 208               	.LBB7:
450
 209               	.LBB6:
451
 210               		.stabn	68,0,189,.LM20-.LFBB2
452
 211               	.LM20:
453
 212               	/* #APP */
454
 213 005e F894      		cli
455
 214               		.stabn	68,0,191,.LM21-.LFBB2
456
 215               	.LM21:
457
 216               	/* #NOAPP */
458
 217 0060 FE01      		movw r30,r28
459
 218 0062 E90F      		add r30,r25
460
 219 0064 F11D      		adc r31,__zero_reg__
461
 220 0066 E081      		ld r30,Z
462
 221               		.stabn	68,0,193,.LM22-.LFBB2
463
 222               	.LM22:
464
 223 0068 892F      		mov r24,r25
465
 224 006a 8F5F      		subi r24,lo8(-(1))
466
 225 006c 8770      		andi r24,lo8(7)
467
 226 006e 8093 0000 		sts Exec_eventFifoTail,r24
468
 227               		.stabn	68,0,194,.LM23-.LFBB2
469
 228               	.LM23:
470
 229               	/* #APP */
471
 230 0072 7894      		sei
472
 231               	/* #NOAPP */
473
 232               	.LBE6:
474
 233               	.LBE7:
475
 234               		.stabn	68,0,128,.LM24-.LFBB2
476
 235               	.LM24:
477
 236 0074 E031      		cpi r30,lo8(16)
478
 237 0076 01F0      		breq .L16
479
 238 0078 E131      		cpi r30,lo8(17)
480
 239 007a 00F4      		brsh .L21
481
GAS LISTING /tmp/ccYEZtaB.s 			page 9
151 kaklik 482
 
483
 
484 kaklik 484
 240 007c E230      		cpi r30,lo8(2)
485
 241 007e 01F0      		breq .L13
486
 242 0080 E330      		cpi r30,lo8(3)
487
 243 0082 00F4      		brsh .L22
488
 244 0084 E130      		cpi r30,lo8(1)
489
 245 0086 01F4      		brne .L28
490
 246 0088 00C0      		rjmp .L12
491
 247               	.L22:
492
 248 008a E430      		cpi r30,lo8(4)
493
 249 008c 01F0      		breq .L14
494
 250 008e E830      		cpi r30,lo8(8)
495
 251 0090 01F4      		brne .L28
496
 252 0092 00C0      		rjmp .L15
497
 253               	.L21:
498
 254 0094 E038      		cpi r30,lo8(-128)
499
 255 0096 01F0      		breq .L18
500
 256 0098 E138      		cpi r30,lo8(-127)
501
 257 009a 00F4      		brsh .L23
502
 258 009c E032      		cpi r30,lo8(32)
503
 259 009e 01F0      		breq .+2
504
 260 00a0 00C0      		rjmp .L28
505
 261 00a2 00C0      		rjmp .L17
506
 262               	.L23:
507
 263 00a4 E138      		cpi r30,lo8(-127)
508
 264 00a6 01F0      		breq .L19
509
 265 00a8 E039      		cpi r30,lo8(-112)
510
 266 00aa 01F0      		breq .+2
511
 267 00ac 00C0      		rjmp .L28
512
 268 00ae 00C0      		rjmp .L20
513
 269               	.L13:
514
 270               		.stabn	68,0,131,.LM25-.LFBB2
515
 271               	.LM25:
516
 272 00b0 82E0      		ldi r24,lo8(2)
517
 273 00b2 00D0      		rcall FrameMgr_dispatchEvent
518
 274 00b4 00C0      		rjmp .L28
519
 275               	.L18:
520
 276               		.stabn	68,0,135,.LM26-.LFBB2
521
 277               	.LM26:
522
 278 00b6 80E8      		ldi r24,lo8(-128)
523
 279 00b8 00D0      		rcall FrameMgr_dispatchEvent
524
 280 00ba 00C0      		rjmp .L28
525
 281               	.L19:
526
 282               		.stabn	68,0,139,.LM27-.LFBB2
527
 283               	.LM27:
528
 284 00bc 81E8      		ldi r24,lo8(-127)
529
 285 00be 00D0      		rcall FrameMgr_dispatchEvent
530
 286 00c0 00C0      		rjmp .L28
531
 287               	.L16:
532
 288               		.stabn	68,0,143,.LM28-.LFBB2
533
 289               	.LM28:
534
 290 00c2 80E1      		ldi r24,lo8(16)
535
 291 00c4 00D0      		rcall FrameMgr_dispatchEvent
536
 292               		.stabn	68,0,144,.LM29-.LFBB2
537
 293               	.LM29:
538
 294 00c6 80E1      		ldi r24,lo8(16)
539
 295 00c8 00D0      		rcall UIMgr_dispatchEvent
540
 296 00ca 00C0      		rjmp .L28
541
GAS LISTING /tmp/ccYEZtaB.s 			page 10
151 kaklik 542
 
543
 
484 kaklik 544
 297               	.L17:
545
 298               		.stabn	68,0,148,.LM30-.LFBB2
546
 299               	.LM30:
547
 300 00cc 80E2      		ldi r24,lo8(32)
548
 301 00ce 00D0      		rcall FrameMgr_dispatchEvent
549
 302 00d0 00C0      		rjmp .L28
550
 303               	.L15:
551
 304               		.stabn	68,0,152,.LM31-.LFBB2
552
 305               	.LM31:
553
 306 00d2 88E0      		ldi r24,lo8(8)
554
 307 00d4 00D0      		rcall FrameMgr_dispatchEvent
555
 308 00d6 00C0      		rjmp .L28
556
 309               	.L14:
557
 310               		.stabn	68,0,156,.LM32-.LFBB2
558
 311               	.LM32:
559
 312 00d8 84E0      		ldi r24,lo8(4)
560
 313 00da 00D0      		rcall FrameMgr_dispatchEvent
561
 314 00dc 00C0      		rjmp .L28
562
 315               	.L12:
563
 316               		.stabn	68,0,160,.LM33-.LFBB2
564
 317               	.LM33:
565
 318 00de 81E0      		ldi r24,lo8(1)
566
 319 00e0 00D0      		rcall UIMgr_dispatchEvent
567
 320               		.stabn	68,0,161,.LM34-.LFBB2
568
 321               	.LM34:
569
 322 00e2 81E0      		ldi r24,lo8(1)
570
 323 00e4 00D0      		rcall FrameMgr_dispatchEvent
571
 324 00e6 00C0      		rjmp .L28
572
 325               	.L20:
573
 326               		.stabn	68,0,165,.LM35-.LFBB2
574
 327               	.LM35:
575
 328 00e8 80E9      		ldi r24,lo8(-112)
576
 329 00ea 00D0      		rcall UIMgr_dispatchEvent
577
 330 00ec 00C0      		rjmp .L28
578
 331               	/* epilogue: frame size=0 */
579
 332               	/* epilogue: noreturn */
580
 333               	/* epilogue end (size=0) */
581
 334               	/* function Exec_run size 111 (109) */
582
 335               		.size	Exec_run, .-Exec_run
583
 336               		.stabs	"dataByte:r(0,11)",64,0,187,30
584
 337               		.stabn	192,0,0,.LBB5-.LFBB2
585
 338               		.stabn	224,0,0,.LBE5-.LFBB2
586
 339               		.stabs	"dataByte:r(0,11)",64,0,187,30
587
 340               		.stabn	192,0,0,.LBB6-.LFBB2
588
 341               		.stabn	224,0,0,.LBE6-.LFBB2
589
 342               	.Lscope2:
590
 343               		.stabs	"",36,0,0,.Lscope2-.LFBB2
591
 344               		.stabd	78,0,0
592
 345               	.global	Exec_eventFifoHead
593
 346               	.global	Exec_eventFifoHead
594
 347               		.section .bss
595
 348               		.type	Exec_eventFifoHead, @object
596
 349               		.size	Exec_eventFifoHead, 1
597
 350               	Exec_eventFifoHead:
598
 351 0000 00        		.skip 1,0
599
 352               	.global	Exec_eventFifoTail
600
 353               	.global	Exec_eventFifoTail
601
GAS LISTING /tmp/ccYEZtaB.s 			page 11
151 kaklik 602
 
603
 
484 kaklik 604
 354               		.type	Exec_eventFifoTail, @object
605
 355               		.size	Exec_eventFifoTail, 1
606
 356               	Exec_eventFifoTail:
607
 357 0001 00        		.skip 1,0
608
 358               	.global	fastEventBitmask
609
 359               	.global	fastEventBitmask
610
 360               		.type	fastEventBitmask, @object
611
 361               		.size	fastEventBitmask, 1
612
 362               	fastEventBitmask:
613
 363 0002 00        		.skip 1,0
614
 364               		.comm Exec_eventFifo,8,1
615
 365               		.stabs	"fastEventBitmask:G(0,11)",32,0,74,0
616
 366               		.stabs	"Exec_eventFifo:G(0,16)=ar(0,17)=r(0,17);0;0177777;;0;7;(0,11)",32,0,63,0
617
 367               		.stabs	"Exec_eventFifoHead:G(0,11)",32,0,64,0
618
 368               		.stabs	"Exec_eventFifoTail:G(0,11)",32,0,65,0
619
 369               		.text
620
 370               		.stabs	"",100,0,0,.Letext0
621
 371               	.Letext0:
622
 372               	/* File "Executive.c": code  127 = 0x007f ( 124), prologues   2, epilogues   1 */
623
GAS LISTING /tmp/ccYEZtaB.s 			page 12
151 kaklik 624
 
625
 
626
DEFINED SYMBOLS
627
                            *ABS*:00000000 Executive.c
484 kaklik 628
     /tmp/ccYEZtaB.s:2      *ABS*:0000003f __SREG__
629
     /tmp/ccYEZtaB.s:3      *ABS*:0000003e __SP_H__
630
     /tmp/ccYEZtaB.s:4      *ABS*:0000003d __SP_L__
631
     /tmp/ccYEZtaB.s:5      *ABS*:00000000 __tmp_reg__
632
     /tmp/ccYEZtaB.s:6      *ABS*:00000001 __zero_reg__
633
     /tmp/ccYEZtaB.s:90     .text:00000000 Exec_writeEventFifo
634
     /tmp/ccYEZtaB.s:350    .bss:00000000 Exec_eventFifoHead
151 kaklik 635
                            *COM*:00000008 Exec_eventFifo
484 kaklik 636
     /tmp/ccYEZtaB.s:131    .text:0000001c Exec_run
637
     /tmp/ccYEZtaB.s:362    .bss:00000002 fastEventBitmask
638
     /tmp/ccYEZtaB.s:356    .bss:00000001 Exec_eventFifoTail
151 kaklik 639
 
640
UNDEFINED SYMBOLS
641
__do_copy_data
642
__do_clear_bss
643
FrameMgr_processLine
644
UIMgr_transmitPendingData
645
FrameMgr_acquireLine
646
FrameMgr_dispatchEvent
647
UIMgr_dispatchEvent