###############################################################################
#                                                                             #
# IAR 8051 C/C++ Compiler V7.30B/W32                    19/May/2010  09:38:58 #
# Copyright 2004-2007 IAR Systems. All rights reserved.                       #
#                                                                             #
#    Core               =  plain                                              #
#    Code model         =  banked                                             #
#    Data model         =  large                                              #
#    Calling convention =  xdata reentrant                                    #
#    Constant location  =  data                                               #
#    Dptr setup         =  1,16                                               #
#    Source file        =  C:\Texas Instruments\ZStack-1.4.3-1.2.1\Components #
#                          \services\saddr\saddr.c                            #
#    Command line       =  -f "C:\Texas Instruments\ZStack-1.4.3-1.2.1\Projec #
#                          ts\zstack\Samples\Location\CC2430DB\..\..\..\Tools #
#                          \CC2430DB\f8wCoord.cfg" (-DCPU32MHZ                #
#                          -DFORCE_MAC_NEAR -DROOT=__near_func                #
#                          -DMAC_CFG_APP_PENDING_QUEUE=TRUE                   #
#                          -DZDO_COORDINATOR -DRTR_NWK -DBLINK_LEDS           #
#                          "-DCONST=const __code" -DGENERIC=__generic) -f     #
#                          "C:\Texas Instruments\ZStack-1.4.3-1.2.1\Projects\ #
#                          zstack\Samples\Location\CC2430DB\..\..\..\Tools\CC #
#                          2430DB\f8wConfig.cfg" (-DSECURE=1                  #
#                          -DDEFAULT_CHANLIST=0x04000000                      #
#                          -DZDAPP_CONFIG_PAN_ID=0x00FF                       #
#                          -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_MA #
#                          SK=0x007F -DBEACON_REQUEST_DELAY=100               #
#                          -DBEACON_REQ_DELAY_MASK=0x00FF                     #
#                          -DROUTE_EXPIRY_TIME=30 -DAPSC_ACK_WAIT_DURATION_PO #
#                          LLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7             #
#                          -DMAX_RREQ_ENTRIES=10 -DAPSC_MAX_FRAME_RETRIES=3   #
#                          -DNWK_MAX_DATA_RETRIES=2                           #
#                          -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9         #
#                          -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=20           #
#                          -DNWK_MAX_BINDING_ENTRIES=10                       #
#                          -DMAX_BINDING_CLUSTER_IDS=5 "-DDEFAULT_KEY={0x02,  #
#                          0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 0x00,    #
#                          0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0D}"         #
#                          -DRFD_RCVC_ALWAYS_ON=FALSE -DPOLL_RATE=1000        #
#                          -DQUEUED_POLL_RATE=100 -DRESPONSE_POLL_RATE=100)   #
#                          -DREJOIN_POLL_RATE=440 "C:\Texas                   #
#                          Instruments\ZStack-1.4.3-1.2.1\Components\services #
#                          \saddr\saddr.c" -D CC2430EB -D ZTOOL_P1 -D         #
#                          LOCATION_DONGLE -D MT_TASK -D xNV_RESTORE -D       #
#                          INT_HEAP_LEN=4608 -D HAL_UART_BIG_TX_BUF=1 -D      #
#                          SPI_MGR_DEFAULT_MAX_TX_BUFF=1024 -D                #
#                          SPI_MGR_DEFAULT_OVERFLOW=1 -lC "C:\Texas           #
#                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sam #
#                          ples\Location\CC2430DB\LocDongle\List\" -lA        #
#                          "C:\Texas Instruments\ZStack-1.4.3-1.2.1\Projects\ #
#                          zstack\Samples\Location\CC2430DB\LocDongle\List\"  #
#                          --diag_suppress Pe001,Pa010 --diag_remark pe550    #
#                          -o "C:\Texas Instruments\ZStack-1.4.3-1.2.1\Projec #
#                          ts\zstack\Samples\Location\CC2430DB\LocDongle\Obj\ #
#                          " -e --require_prototypes -z9 --no_code_motion     #
#                          --debug --core=plain --dptr=16,1                   #
#                          --data_model=large --code_model=banked             #
#                          --calling_convention=xdata_reentrant               #
#                          --place_constants=data --nr_virtual_regs 8 -I      #
#                          "C:\Texas Instruments\ZStack-1.4.3-1.2.1\Projects\ #
#                          zstack\Samples\Location\CC2430DB\" -I "C:\Texas    #
#                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sam #
#                          ples\Location\CC2430DB\..\SOURCE\" -I "C:\Texas    #
#                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sam #
#                          ples\Location\CC2430DB\..\..\..\ZMAIN\TI2430DB\"   #
#                          -I "C:\Texas Instruments\ZStack-1.4.3-1.2.1\Projec #
#                          ts\zstack\Samples\Location\CC2430DB\..\..\..\..\WX #
#                          L\INCLUDE\" -I "C:\Texas                           #
#                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sam #
#                          ples\Location\CC2430DB\..\..\..\..\..\COMPONENTS\M #
#                          T\" -I "C:\Texas Instruments\ZStack-1.4.3-1.2.1\Pr #
#                          ojects\zstack\Samples\Location\CC2430DB\..\..\..\. #
#                          .\..\COMPONENTS\HAL\INCLUDE\" -I "C:\Texas         #
#                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sam #
#                          ples\Location\CC2430DB\..\..\..\..\..\COMPONENTS\H #
#                          AL\TARGET\CC2430EB\" -I "C:\Texas                  #
#                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sam #
#                          ples\Location\CC2430DB\..\..\..\..\..\COMPONENTS\O #
#                          SAL\MCU\CCSOC\" -I "C:\Texas                       #
#                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sam #
#                          ples\Location\CC2430DB\..\..\..\..\..\COMPONENTS\O #
#                          SAL\INCLUDE\" -I "C:\Texas                         #
#                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sam #
#                          ples\Location\CC2430DB\..\..\..\..\..\COMPONENTS\S #
#                          TACK\AF\" -I "C:\Texas Instruments\ZStack-1.4.3-1. #
#                          2.1\Projects\zstack\Samples\Location\CC2430DB\..\. #
#                          .\..\..\..\COMPONENTS\STACK\NWK\" -I "C:\Texas     #
#                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sam #
#                          ples\Location\CC2430DB\..\..\..\..\..\COMPONENTS\S #
#                          TACK\SEC\" -I "C:\Texas Instruments\ZStack-1.4.3-1 #
#                          .2.1\Projects\zstack\Samples\Location\CC2430DB\..\ #
#                          ..\..\..\..\COMPONENTS\STACK\SYS\" -I "C:\Texas    #
#                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sam #
#                          ples\Location\CC2430DB\..\..\..\..\..\COMPONENTS\S #
#                          TACK\ZDO\" -I "C:\Texas Instruments\ZStack-1.4.3-1 #
#                          .2.1\Projects\zstack\Samples\Location\CC2430DB\..\ #
#                          ..\..\..\..\COMPONENTS\ZMAC\F8W\" -I "C:\Texas     #
#                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sam #
#                          ples\Location\CC2430DB\..\..\..\..\..\COMPONENTS\Z #
#                          MAC\" -I "C:\Texas Instruments\ZStack-1.4.3-1.2.1\ #
#                          Projects\zstack\Samples\Location\CC2430DB\..\..\.. #
#                          \..\..\COMPONENTS\SERVICES\SADDR\" -I "C:\Texas    #
#                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sam #
#                          ples\Location\CC2430DB\..\..\..\..\..\COMPONENTS\S #
#                          ERVICES\SDATA\" -I "C:\Texas                       #
#                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sam #
#                          ples\Location\CC2430DB\..\..\..\..\..\COMPONENTS\M #
#                          AC\INCLUDE\" -I "C:\Texas                          #
#                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sam #
#                          ples\Location\CC2430DB\..\..\..\..\..\COMPONENTS\M #
#                          AC\HIGH_LEVEL\" -I "C:\Texas                       #
#                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sam #
#                          ples\Location\CC2430DB\..\..\..\..\..\COMPONENTS\M #
#                          AC\LOW_LEVEL\SRF03\" -I "C:\Texas                  #
#                          Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Sam #
#                          ples\Location\CC2430DB\..\..\..\..\..\COMPONENTS\M #
#                          AC\LOW_LEVEL\SRF03\SINGLE_CHIP\" -I "C:\Program    #
#                          Files\IAR Systems\Embedded Workbench 4.0           #
#                          Evaluation version\8051\INC\" -I "C:\Program       #
#                          Files\IAR Systems\Embedded Workbench 4.0           #
#                          Evaluation version\8051\INC\CLIB\"                 #
#    List file          =  C:\Texas Instruments\ZStack-1.4.3-1.2.1\Projects\z #
#                          stack\Samples\Location\CC2430DB\LocDongle\List\sad #
#                          dr.lst                                             #
#    Object file        =  C:\Texas Instruments\ZStack-1.4.3-1.2.1\Projects\z #
#                          stack\Samples\Location\CC2430DB\LocDongle\Obj\sadd #
#                          r.r51                                              #
#                                                                             #
#                                                                             #
###############################################################################

C:\Texas Instruments\ZStack-1.4.3-1.2.1\Components\services\saddr\saddr.c
      1          /****************************************************************************
      2            Filename:       saddr.c
      3            Revised:        $Date: 2007-10-28 18:43:04 -0700 (Sun, 28 Oct 2007) $
      4            Revision:       $Revision: 15800 $
      5          
      6            Description:    Zigbee and 802.15.4 device address utility functions.
      7          
      8          
      9            Copyright 2005-2007 Texas Instruments Incorporated. All rights reserved.
     10          
     11            IMPORTANT: Your use of this Software is limited to those specific rights
     12            granted under the terms of a software license agreement between the user
     13            who downloaded the software, his/her employer (which must be your employer)
     14            and Texas Instruments Incorporated (the "License").  You may not use this
     15            Software unless you agree to abide by the terms of the License. The License
     16            limits your use, and you acknowledge, that the Software may not be modified,
     17            copied or distributed unless embedded on a Texas Instruments microcontroller
     18            or used solely and exclusively in conjunction with a Texas Instruments radio
     19            frequency transceiver, which is integrated into your product.  Other than for
     20            the foregoing purpose, you may not use, reproduce, copy, prepare derivative
     21            works of, modify, distribute, perform, display or sell this Software and/or
     22            its documentation for any purpose.
     23          
     24            YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
     25            PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, 
     26            INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE, 
     27            NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
     28            TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
     29            NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
     30            LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
     31            INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
     32            OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
     33            OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
     34            (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
     35          
     36            Should you have any questions regarding your right to use this Software,
     37            contact Texas Instruments Incorporated at www.TI.com. 
     38          ****************************************************************************/
     39          
     40          /****************************************************************************
     41           * INCLUDES
     42           */
     43          #include "hal_types.h"
     44          #include "OSAL.h"
     45          #include "saddr.h"
     46          
     47          /****************************************************************************
     48           * @fn          sAddrCmp
     49           *
     50           * @brief       Compare two device addresses.
     51           *
     52           * input parameters
     53           *
     54           * @param       pAddr1        - Pointer to first address.
     55           * @param       pAddr2        - Pointer to second address.
     56           *
     57           * output parameters
     58           *
     59           * @return      TRUE if addresses are equal, FALSE otherwise
     60           */

   \                                 In  segment BANKED_CODE, align 1, keep-with-next
     61          bool sAddrCmp(const sAddr_t *pAddr1, const sAddr_t *pAddr2)
   \                     sAddrCmp:
     62          {
   \   000000   74F7         MOV     A,#-0x9
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 9
   \   000005                ; Auto size: 0
     63            if (pAddr1->addrMode != pAddr2->addrMode)
   \   000005   8A82         MOV     DPL,R2
   \   000007   8B83         MOV     DPH,R3
   \   000009   A3           INC     DPTR
   \   00000A   A3           INC     DPTR
   \   00000B   A3           INC     DPTR
   \   00000C   A3           INC     DPTR
   \   00000D   A3           INC     DPTR
   \   00000E   A3           INC     DPTR
   \   00000F   A3           INC     DPTR
   \   000010   A3           INC     DPTR
   \   000011   E0           MOVX    A,@DPTR
   \   000012   FE           MOV     R6,A
   \   000013   8C82         MOV     DPL,R4
   \   000015   8D83         MOV     DPH,R5
   \   000017   A3           INC     DPTR
   \   000018   A3           INC     DPTR
   \   000019   A3           INC     DPTR
   \   00001A   A3           INC     DPTR
   \   00001B   A3           INC     DPTR
   \   00001C   A3           INC     DPTR
   \   00001D   A3           INC     DPTR
   \   00001E   A3           INC     DPTR
   \   00001F   E0           MOVX    A,@DPTR
   \   000020   6E           XRL     A,R6
   \   000021   6004         JZ      ??sAddrCmp_0
     64            {
     65              return FALSE;
   \                     ??sAddrCmp_1:
   \   000023   7900         MOV     R1,#0x0
   \   000025   803D         SJMP    ??sAddrCmp_2
     66            }
     67            else if (pAddr1->addrMode == SADDR_MODE_NONE)
   \                     ??sAddrCmp_0:
   \   000027   8A82         MOV     DPL,R2
   \   000029   8B83         MOV     DPH,R3
   \   00002B   A3           INC     DPTR
   \   00002C   A3           INC     DPTR
   \   00002D   A3           INC     DPTR
   \   00002E   A3           INC     DPTR
   \   00002F   A3           INC     DPTR
   \   000030   A3           INC     DPTR
   \   000031   A3           INC     DPTR
   \   000032   A3           INC     DPTR
   \   000033   E0           MOVX    A,@DPTR
   \   000034   60ED         JZ      ??sAddrCmp_1
     68            {
     69              return FALSE;
     70            }
     71            else if (pAddr1->addrMode == SADDR_MODE_SHORT)
   \   000036   6402         XRL     A,#0x2
   \   000038   8A82         MOV     DPL,R2
   \   00003A   8B83         MOV     DPH,R3
   \   00003C   7016         JNZ     ??sAddrCmp_3
     72            {
     73              return (bool) (pAddr1->addr.shortAddr == pAddr2->addr.shortAddr);
   \   00003E   E0           MOVX    A,@DPTR
   \   00003F   F8           MOV     R0,A
   \   000040   A3           INC     DPTR
   \   000041   E0           MOVX    A,@DPTR
   \   000042   F9           MOV     R1,A
   \   000043   8C82         MOV     DPL,R4
   \   000045   8D83         MOV     DPH,R5
   \   000047   E0           MOVX    A,@DPTR
   \   000048   68           XRL     A,R0
   \   000049   7003         JNZ     ??sAddrCmp_4
   \   00004B   A3           INC     DPTR
   \   00004C   E0           MOVX    A,@DPTR
   \   00004D   69           XRL     A,R1
   \                     ??sAddrCmp_4:
   \   00004E   70D3         JNZ     ??sAddrCmp_1
   \   000050   7901         MOV     R1,#0x1
   \   000052   8010         SJMP    ??sAddrCmp_2
     74            }
     75            else if (pAddr1->addrMode == SADDR_MODE_EXT)
   \                     ??sAddrCmp_3:
   \   000054   A3           INC     DPTR
   \   000055   A3           INC     DPTR
   \   000056   A3           INC     DPTR
   \   000057   A3           INC     DPTR
   \   000058   A3           INC     DPTR
   \   000059   A3           INC     DPTR
   \   00005A   A3           INC     DPTR
   \   00005B   A3           INC     DPTR
   \   00005C   E0           MOVX    A,@DPTR
   \   00005D   6403         XRL     A,#0x3
   \   00005F   70C2         JNZ     ??sAddrCmp_1
     76            {
     77              return (sAddrExtCmp(pAddr1->addr.extAddr, pAddr2->addr.extAddr));
   \   000061                ; Setup parameters for call to function sAddrExtCmp
   \   000061   12....       LCALL   ??sAddrExtCmp?relay
   \                     ??sAddrCmp_2:
   \   000064                REQUIRE ?Subroutine0
   \   000064                ; // Fall through to label ?Subroutine0
     78            }
     79            else
     80            {
     81              return FALSE;
     82            }
     83          }

   \                                 In  segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine0:
   \   000000   7F01         MOV     R7,#0x1
   \   000002   02....       LJMP    ?BANKED_LEAVE_XDATA
     84          
     85          /****************************************************************************
     86           * @fn          sAddrCpy
     87           *
     88           * @brief       Copy a device address.
     89           *
     90           * input parameters
     91           *
     92           * @param       pSrc         - Pointer to address to copy.
     93           *
     94           * output parameters
     95           *
     96           * @param       pDest        - Pointer to address of copy.
     97           *
     98           * @return      None.
     99           */

   \                                 In  segment BANKED_CODE, align 1, keep-with-next
    100          void sAddrCpy(sAddr_t *pDest, const sAddr_t *pSrc)
   \                     sAddrCpy:
    101          {
   \   000000   74F7         MOV     A,#-0x9
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 9
   \   000005                ; Auto size: 0
    102            pDest->addrMode = pSrc->addrMode;
   \   000005   8C82         MOV     DPL,R4
   \   000007   8D83         MOV     DPH,R5
   \   000009   A3           INC     DPTR
   \   00000A   A3           INC     DPTR
   \   00000B   A3           INC     DPTR
   \   00000C   A3           INC     DPTR
   \   00000D   A3           INC     DPTR
   \   00000E   A3           INC     DPTR
   \   00000F   A3           INC     DPTR
   \   000010   A3           INC     DPTR
   \   000011   E0           MOVX    A,@DPTR
   \   000012   FE           MOV     R6,A
   \   000013   8A82         MOV     DPL,R2
   \   000015   8B83         MOV     DPH,R3
   \   000017   A3           INC     DPTR
   \   000018   A3           INC     DPTR
   \   000019   A3           INC     DPTR
   \   00001A   A3           INC     DPTR
   \   00001B   A3           INC     DPTR
   \   00001C   A3           INC     DPTR
   \   00001D   A3           INC     DPTR
   \   00001E   A3           INC     DPTR
   \   00001F   F0           MOVX    @DPTR,A
    103          
    104            if (pDest->addrMode == SADDR_MODE_SHORT)
   \   000020   7402         MOV     A,#0x2
   \   000022   6E           XRL     A,R6
   \   000023   7014         JNZ     ??sAddrCpy_0
    105            {
    106              pDest->addr.shortAddr = pSrc->addr.shortAddr;
   \   000025   8C82         MOV     DPL,R4
   \   000027   8D83         MOV     DPH,R5
   \   000029   E0           MOVX    A,@DPTR
   \   00002A   F8           MOV     R0,A
   \   00002B   A3           INC     DPTR
   \   00002C   E0           MOVX    A,@DPTR
   \   00002D   F9           MOV     R1,A
   \   00002E   8A82         MOV     DPL,R2
   \   000030   8B83         MOV     DPH,R3
   \   000032   E8           MOV     A,R0
   \   000033   F0           MOVX    @DPTR,A
   \   000034   A3           INC     DPTR
   \   000035   E9           MOV     A,R1
   \   000036   F0           MOVX    @DPTR,A
   \   000037   8014         SJMP    ??sAddrCpy_1
    107            }
    108            else if (pDest->addrMode == SADDR_MODE_EXT)
   \                     ??sAddrCpy_0:
   \   000039   8A82         MOV     DPL,R2
   \   00003B   8B83         MOV     DPH,R3
   \   00003D   A3           INC     DPTR
   \   00003E   A3           INC     DPTR
   \   00003F   A3           INC     DPTR
   \   000040   A3           INC     DPTR
   \   000041   A3           INC     DPTR
   \   000042   A3           INC     DPTR
   \   000043   A3           INC     DPTR
   \   000044   A3           INC     DPTR
   \   000045   E0           MOVX    A,@DPTR
   \   000046   6403         XRL     A,#0x3
   \   000048   7003         JNZ     ??sAddrCpy_1
    109            {
    110              sAddrExtCpy(pDest->addr.extAddr, pSrc->addr.extAddr);
   \   00004A                ; Setup parameters for call to function sAddrExtCpy
   \   00004A   12....       LCALL   ??sAddrExtCpy?relay
    111            }
    112          }
   \                     ??sAddrCpy_1:
   \   00004D   80..         SJMP    ?Subroutine0
    113          
    114          /****************************************************************************
    115           * @fn          sAddrExtCmp
    116           *
    117           * @brief       Compare two extended addresses.
    118           *
    119           * input parameters
    120           *
    121           * @param       pAddr1        - Pointer to first address.
    122           * @param       pAddr2        - Pointer to second address.
    123           *
    124           * output parameters
    125           *
    126           * @return      TRUE if addresses are equal, FALSE otherwise
    127           */

   \                                 In  segment BANKED_CODE, align 1, keep-with-next
    128          bool sAddrExtCmp(const uint8 * pAddr1, const uint8 * pAddr2)
   \                     sAddrExtCmp:
    129          {
   \   000000   74F6         MOV     A,#-0xa
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 10
   \   000005                ; Auto size: 0
    130            byte i;
    131          
    132            for (i = SADDR_EXT_LEN; i != 0; i--)
   \   000005   75..08       MOV     ?V0 + 0,#0x8
    133            {
    134              if (*pAddr1++ != *pAddr2++)
   \                     ??sAddrExtCmp_0:
   \   000008   EA           MOV     A,R2
   \   000009   F8           MOV     R0,A
   \   00000A   EB           MOV     A,R3
   \   00000B   F9           MOV     R1,A
   \   00000C   8882         MOV     DPL,R0
   \   00000E   8983         MOV     DPH,R1
   \   000010   A3           INC     DPTR
   \   000011   AA82         MOV     R2,DPL
   \   000013   AB83         MOV     R3,DPH
   \   000015   EC           MOV     A,R4
   \   000016   FE           MOV     R6,A
   \   000017   ED           MOV     A,R5
   \   000018   FF           MOV     R7,A
   \   000019   8E82         MOV     DPL,R6
   \   00001B   8F83         MOV     DPH,R7
   \   00001D   A3           INC     DPTR
   \   00001E   AC82         MOV     R4,DPL
   \   000020   AD83         MOV     R5,DPH
   \   000022   8882         MOV     DPL,R0
   \   000024   8983         MOV     DPH,R1
   \   000026   E0           MOVX    A,@DPTR
   \   000027   F8           MOV     R0,A
   \   000028   8E82         MOV     DPL,R6
   \   00002A   8F83         MOV     DPH,R7
   \   00002C   E0           MOVX    A,@DPTR
   \   00002D   68           XRL     A,R0
   \   00002E   6004         JZ      ??sAddrExtCmp_1
    135              {
    136                return FALSE;
   \   000030   7900         MOV     R1,#0x0
   \   000032   8008         SJMP    ??sAddrExtCmp_2
    137              }
    138            }
   \                     ??sAddrExtCmp_1:
   \   000034   15..         DEC     ?V0 + 0
   \   000036   E5..         MOV     A,?V0 + 0
   \   000038   70CE         JNZ     ??sAddrExtCmp_0
    139            return TRUE;
   \   00003A   7901         MOV     R1,#0x1
   \                     ??sAddrExtCmp_2:
   \   00003C   7F02         MOV     R7,#0x2
   \   00003E   02....       LJMP    ?BANKED_LEAVE_XDATA
    140          }
    141          
    142          /****************************************************************************
    143           * @fn          sAddrExtCpy
    144           *
    145           * @brief       Copy an extended address.
    146           *
    147           * input parameters
    148           *
    149           * @param       pSrc         - Pointer to address to copy.
    150           *
    151           * output parameters
    152           *
    153           * @param       pDest        - Pointer to address of copy.
    154           *
    155           * @return      pDest + SADDR_EXT_LEN.
    156           */

   \                                 In  segment BANKED_CODE, align 1, keep-with-next
    157          void *sAddrExtCpy(uint8 * pDest, const uint8 * pSrc)
   \                     sAddrExtCpy:
    158          {
   \   000000   74F5         MOV     A,#-0xb
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 11
   \   000005                ; Auto size: 0
    159            return osal_memcpy(pDest, pSrc, SADDR_EXT_LEN);
   \   000005                ; Setup parameters for call to function osal_memcpy
   \   000005   8C..         MOV     ?V0 + 0,R4
   \   000007   8D..         MOV     ?V0 + 1,R5
   \   000009   75..00       MOV     ?V0 + 2,#0x0
   \   00000C   78..         MOV     R0,#?V0 + 0
   \   00000E   12....       LCALL   ?PUSH_XSTACK_I_THREE
   \   000011   7C08         MOV     R4,#0x8
   \   000013   7D00         MOV     R5,#0x0
   \   000015   12....       LCALL   ??osal_memcpy?relay
   \   000018   7403         MOV     A,#0x3
   \   00001A   12....       LCALL   ?DEALLOC_XSTACK8
   \   00001D   7F03         MOV     R7,#0x3
   \   00001F   02....       LJMP    ?BANKED_LEAVE_XDATA
    160          }

   \                                 In  segment BANK_RELAYS, align 1
   \                     ??sAddrCmp?relay:
   \   000000   12....       LCALL   ?BDISPATCH
   \   000003   ......       DC24    sAddrCmp

   \                                 In  segment BANK_RELAYS, align 1
   \                     ??sAddrCpy?relay:
   \   000000   12....       LCALL   ?BDISPATCH
   \   000003   ......       DC24    sAddrCpy

   \                                 In  segment BANK_RELAYS, align 1
   \                     ??sAddrExtCmp?relay:
   \   000000   12....       LCALL   ?BDISPATCH
   \   000003   ......       DC24    sAddrExtCmp

   \                                 In  segment BANK_RELAYS, align 1
   \                     ??sAddrExtCpy?relay:
   \   000000   12....       LCALL   ?BDISPATCH
   \   000003   ......       DC24    sAddrExtCpy
    161          
    162          
    163          
    164          

   Maximum stack usage in bytes:

     Function         ISTACK PSTACK XSTACK
     --------         ------ ------ ------
     sAddrCmp             0      0      9
       -> sAddrExtCmp     0      0     18
     sAddrCpy             1      0      9
       -> sAddrExtCpy     0      0     18
     sAddrExtCmp          0      0     19
     sAddrExtCpy          0      0     23
       -> osal_memcpy     0      0     28


   Segment part sizes:

     Function/Label      Bytes
     --------------      -----
     sAddrCmp             100
     ?Subroutine0           5
     sAddrCpy              79
     sAddrExtCmp           65
     sAddrExtCpy           34
     ??sAddrCmp?relay       6
     ??sAddrCpy?relay       6
     ??sAddrExtCmp?relay    6
     ??sAddrExtCpy?relay    6

 
 283 bytes in segment BANKED_CODE
  24 bytes in segment BANK_RELAYS
 
 307 bytes of CODE memory

Errors: none
Warnings: none
