Subversion Repositories svnkaklik

Rev

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