1024 lines
36 KiB
Plaintext
1024 lines
36 KiB
Plaintext
///////////////////////////////////////////////////////////////////////////////
|
||
//
|
||
// IAR C/C++ Compiler V10.30.1.6000 for 8051 23/Aug/2019 12:13:08
|
||
// Copyright 2004-2018 IAR Systems AB.
|
||
// PC-locked license - IAR Embedded Workbench for 8051
|
||
//
|
||
// Core = plain
|
||
// Code model = banked
|
||
// Data model = large
|
||
// Calling convention = xdata reentrant
|
||
// Constant location = data_rom
|
||
// Dptr setup = 1,16
|
||
//
|
||
// Source file =
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\services\saddr\saddr.c
|
||
// Command line =
|
||
// -f C:\Users\VULCAN\AppData\Local\Temp\EWDD20.tmp
|
||
// (E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\services\saddr\saddr.c
|
||
// -D ZIGBEEPRO -D ZTOOL_P1 -D MT_TASK -D MT_SYS_FUNC -D MT_ZDO_FUNC -D
|
||
// LCD_SUPPORTED=DEBUG -D SAPP_ZSTACK -lC
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\RouterEB\List
|
||
// -lA
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\RouterEB\List
|
||
// --diag_suppress Pe001,Pa010 -o
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\RouterEB\Obj
|
||
// -e --debug --core=plain --dptr=16,1 --data_model=large
|
||
// --code_model=banked --calling_convention=xdata_reentrant
|
||
// --place_constants=data_rom --nr_virtual_regs 8 -f
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wRouter.cfg
|
||
// (-DCPU32MHZ -DROOT=__near_func -DMAC_CFG_APP_PENDING_QUEUE=TRUE
|
||
// -DMAC_CFG_TX_DATA_MAX=5 -DMAC_CFG_TX_MAX=8 -DMAC_CFG_RX_MAX=5
|
||
// -DRTR_NWK) -f
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wConfig.cfg
|
||
// (-DZIGBEEPRO -DSECURE=0 -DZG_SECURE_DYNAMIC=0 -DREFLECTOR
|
||
// -DDEFAULT_CHANLIST=0x00800000 -DZDAPP_CONFIG_PAN_ID=0x0057
|
||
// -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_MASK=0x007F
|
||
// -DBEACON_REQUEST_DELAY=100 -DBEACON_REQ_DELAY_MASK=0x00FF
|
||
// -DLINK_STATUS_JITTER_MASK=0x007F -DROUTE_EXPIRY_TIME=30
|
||
// -DAPSC_ACK_WAIT_DURATION_POLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7
|
||
// -DMAX_RREQ_ENTRIES=8 -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=40 -DNWK_MAX_BINDING_ENTRIES=4
|
||
// -DMAX_BINDING_CLUSTER_IDS=4 "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07,
|
||
// 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C,
|
||
// 0x0D}" -DMAC_MAX_FRAME_SIZE=116 -DZDNWKMGR_MIN_TRANSMISSIONS=20
|
||
// "-DCONST=const __code" -DGENERIC=__generic -DRFD_RCVC_ALWAYS_ON=FALSE
|
||
// -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100 -DRESPONSE_POLL_RATE=100
|
||
// -DREJOIN_POLL_RATE=440) -I
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\
|
||
// -I
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\
|
||
// -I
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\ZMain\TI2530DB\
|
||
// -I
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\include\
|
||
// -I
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\target\CC2530EB\
|
||
// -I
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\include\
|
||
// -I
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\high_level\
|
||
// -I
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\
|
||
// -I
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\single_chip\
|
||
// -I
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mt\
|
||
// -I
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\osal\include\
|
||
// -I
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\saddr\
|
||
// -I
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\sdata\
|
||
// -I
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\af\
|
||
// -I
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\nwk\
|
||
// -I
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sapi\
|
||
// -I
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sec\
|
||
// -I
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sys\
|
||
// -I
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\zdo\
|
||
// -I
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\
|
||
// -I
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\f8w\
|
||
// -Ohz --require_prototypes --no_code_motion)
|
||
// Locale = Chinese (Simplified)_CHN.936
|
||
// List file =
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\RouterEB\List\saddr.s51
|
||
//
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
|
||
NAME saddr
|
||
|
||
RTMODEL "__SystemLibrary", "CLib"
|
||
RTMODEL "__calling_convention", "xdata_reentrant"
|
||
RTMODEL "__code_model", "banked"
|
||
RTMODEL "__core", "plain"
|
||
RTMODEL "__data_model", "large"
|
||
RTMODEL "__dptr_size", "16"
|
||
RTMODEL "__extended_stack", "disabled"
|
||
RTMODEL "__location_for_constants", "data"
|
||
RTMODEL "__number_of_dptrs", "1"
|
||
RTMODEL "__register_banks", "*"
|
||
RTMODEL "__rt_version", "1"
|
||
|
||
RSEG DOVERLAY:DATA:NOROOT(0)
|
||
RSEG IOVERLAY:IDATA:NOROOT(0)
|
||
RSEG ISTACK:IDATA:NOROOT(0)
|
||
RSEG PSTACK:XDATA:NOROOT(0)
|
||
RSEG XSTACK:XDATA:NOROOT(0)
|
||
|
||
EXTERN ?V0
|
||
EXTERN ?V1
|
||
EXTERN ?V2
|
||
EXTERN ?BANKED_ENTER_XDATA
|
||
EXTERN ?BANKED_LEAVE_XDATA
|
||
EXTERN ?BDISPATCH
|
||
EXTERN ?BRET
|
||
EXTERN ?DEALLOC_XSTACK8
|
||
EXTERN ?PUSH_XSTACK_I_THREE
|
||
|
||
PUBLIC `??sAddrCmp::?relay`
|
||
FUNCTION `??sAddrCmp::?relay`,0203H
|
||
PUBLIC `??sAddrCpy::?relay`
|
||
FUNCTION `??sAddrCpy::?relay`,0203H
|
||
PUBLIC `??sAddrExtCmp::?relay`
|
||
FUNCTION `??sAddrExtCmp::?relay`,0203H
|
||
PUBLIC `??sAddrExtCpy::?relay`
|
||
FUNCTION `??sAddrExtCpy::?relay`,0203H
|
||
PUBLIC `??sAddrIden::?relay`
|
||
FUNCTION `??sAddrIden::?relay`,0203H
|
||
PUBLIC sAddrCmp
|
||
FUNCTION sAddrCmp,021203H
|
||
ARGFRAME XSTACK, 0, STACK
|
||
LOCFRAME ISTACK, 2, STACK
|
||
PUBLIC sAddrCpy
|
||
FUNCTION sAddrCpy,021203H
|
||
ARGFRAME XSTACK, 0, STACK
|
||
LOCFRAME ISTACK, 3, STACK
|
||
PUBLIC sAddrExtCmp
|
||
FUNCTION sAddrExtCmp,080203H
|
||
ARGFRAME XSTACK, 0, STACK
|
||
ARGFRAME IOVERLAY, 0, STATIC
|
||
ARGFRAME DOVERLAY, 0, STATIC
|
||
LOCFRAME XSTACK, 10, STACK
|
||
PUBLIC sAddrExtCpy
|
||
FUNCTION sAddrExtCpy,0a1203H
|
||
ARGFRAME XSTACK, 0, STACK
|
||
ARGFRAME IOVERLAY, 0, STATIC
|
||
ARGFRAME DOVERLAY, 0, STATIC
|
||
LOCFRAME XSTACK, 14, STACK
|
||
PUBLIC sAddrIden
|
||
FUNCTION sAddrIden,021203H
|
||
ARGFRAME XSTACK, 0, STACK
|
||
LOCFRAME ISTACK, 2, STACK
|
||
|
||
CFI Names cfiNames0
|
||
CFI StackFrame CFA_SP SP IDATA
|
||
CFI StackFrame CFA_PSP16 PSP16 XDATA
|
||
CFI StackFrame CFA_XSP16 XSP16 XDATA
|
||
CFI StaticOverlayFrame CFA_IOVERLAY IOVERLAY
|
||
CFI StaticOverlayFrame CFA_DOVERLAY DOVERLAY
|
||
CFI Resource `PSW.CY`:1, `B.BR0`:1, `B.BR1`:1, `B.BR2`:1, `B.BR3`:1
|
||
CFI Resource `B.BR4`:1, `B.BR5`:1, `B.BR6`:1, `B.BR7`:1, `VB.BR8`:1
|
||
CFI Resource `VB.BR9`:1, `VB.BR10`:1, `VB.BR11`:1, `VB.BR12`:1
|
||
CFI Resource `VB.BR13`:1, `VB.BR14`:1, `VB.BR15`:1, VB:8, B:8, A:8
|
||
CFI Resource PSW:8, DPL0:8, DPH0:8, R0:8, R1:8, R2:8, R3:8, R4:8, R5:8
|
||
CFI Resource R6:8, R7:8, V0:8, V1:8, V2:8, V3:8, V4:8, V5:8, V6:8, V7:8
|
||
CFI Resource SP:8, PSPH:8, PSPL:8, PSP16:16, XSPH:8, XSPL:8, XSP16:16
|
||
CFI VirtualResource ?RET:24
|
||
CFI Resource ?BRET_EXT:8
|
||
CFI VirtualResource ?RET_HIGH:8, ?RET_LOW:8
|
||
CFI ResourceParts PSP16 PSPH, PSPL
|
||
CFI ResourceParts XSP16 XSPH, XSPL
|
||
CFI ResourceParts ?RET ?BRET_EXT, ?RET_HIGH, ?RET_LOW
|
||
CFI EndNames cfiNames0
|
||
|
||
CFI Common cfiCommon0 Using cfiNames0
|
||
CFI CodeAlign 1
|
||
CFI DataAlign -1
|
||
CFI ReturnAddress ?RET CODE
|
||
CFI CFA_DOVERLAY Used
|
||
CFI CFA_IOVERLAY Used
|
||
CFI CFA_SP SP+-3
|
||
CFI CFA_PSP16 PSP16+0
|
||
CFI CFA_XSP16 XSP16+0
|
||
CFI `PSW.CY` SameValue
|
||
CFI `B.BR0` SameValue
|
||
CFI `B.BR1` SameValue
|
||
CFI `B.BR2` SameValue
|
||
CFI `B.BR3` SameValue
|
||
CFI `B.BR4` SameValue
|
||
CFI `B.BR5` SameValue
|
||
CFI `B.BR6` SameValue
|
||
CFI `B.BR7` SameValue
|
||
CFI `VB.BR8` SameValue
|
||
CFI `VB.BR9` SameValue
|
||
CFI `VB.BR10` SameValue
|
||
CFI `VB.BR11` SameValue
|
||
CFI `VB.BR12` SameValue
|
||
CFI `VB.BR13` SameValue
|
||
CFI `VB.BR14` SameValue
|
||
CFI `VB.BR15` SameValue
|
||
CFI VB SameValue
|
||
CFI B Undefined
|
||
CFI A Undefined
|
||
CFI PSW SameValue
|
||
CFI DPL0 SameValue
|
||
CFI DPH0 SameValue
|
||
CFI R0 Undefined
|
||
CFI R1 Undefined
|
||
CFI R2 Undefined
|
||
CFI R3 Undefined
|
||
CFI R4 Undefined
|
||
CFI R5 Undefined
|
||
CFI R6 SameValue
|
||
CFI R7 SameValue
|
||
CFI V0 SameValue
|
||
CFI V1 SameValue
|
||
CFI V2 SameValue
|
||
CFI V3 SameValue
|
||
CFI V4 SameValue
|
||
CFI V5 SameValue
|
||
CFI V6 SameValue
|
||
CFI V7 SameValue
|
||
CFI PSPH Undefined
|
||
CFI PSPL Undefined
|
||
CFI XSPH Undefined
|
||
CFI XSPL Undefined
|
||
CFI ?RET Concat
|
||
CFI ?BRET_EXT Frame(CFA_SP, 3)
|
||
CFI ?RET_HIGH Frame(CFA_SP, 2)
|
||
CFI ?RET_LOW Frame(CFA_SP, 1)
|
||
CFI EndCommon cfiCommon0
|
||
|
||
|
||
CFI Common cfiCommon1 Using cfiNames0
|
||
CFI CodeAlign 1
|
||
CFI DataAlign -1
|
||
CFI ReturnAddress ?RET CODE
|
||
CFI CFA_DOVERLAY Used
|
||
CFI CFA_IOVERLAY Used
|
||
CFI CFA_SP SP+-2
|
||
CFI CFA_PSP16 PSP16+0
|
||
CFI CFA_XSP16 XSP16+0
|
||
CFI `PSW.CY` SameValue
|
||
CFI `B.BR0` SameValue
|
||
CFI `B.BR1` SameValue
|
||
CFI `B.BR2` SameValue
|
||
CFI `B.BR3` SameValue
|
||
CFI `B.BR4` SameValue
|
||
CFI `B.BR5` SameValue
|
||
CFI `B.BR6` SameValue
|
||
CFI `B.BR7` SameValue
|
||
CFI `VB.BR8` SameValue
|
||
CFI `VB.BR9` SameValue
|
||
CFI `VB.BR10` SameValue
|
||
CFI `VB.BR11` SameValue
|
||
CFI `VB.BR12` SameValue
|
||
CFI `VB.BR13` SameValue
|
||
CFI `VB.BR14` SameValue
|
||
CFI `VB.BR15` SameValue
|
||
CFI VB SameValue
|
||
CFI B SameValue
|
||
CFI A SameValue
|
||
CFI PSW SameValue
|
||
CFI DPL0 SameValue
|
||
CFI DPH0 SameValue
|
||
CFI R0 SameValue
|
||
CFI R1 SameValue
|
||
CFI R2 SameValue
|
||
CFI R3 SameValue
|
||
CFI R4 SameValue
|
||
CFI R5 SameValue
|
||
CFI R6 SameValue
|
||
CFI R7 SameValue
|
||
CFI V0 SameValue
|
||
CFI V1 SameValue
|
||
CFI V2 SameValue
|
||
CFI V3 SameValue
|
||
CFI V4 SameValue
|
||
CFI V5 SameValue
|
||
CFI V6 SameValue
|
||
CFI V7 SameValue
|
||
CFI PSPH Undefined
|
||
CFI PSPL Undefined
|
||
CFI XSPH Undefined
|
||
CFI XSPL Undefined
|
||
CFI ?RET Concat
|
||
CFI ?BRET_EXT SameValue
|
||
CFI ?RET_HIGH Frame(CFA_SP, 2)
|
||
CFI ?RET_LOW Frame(CFA_SP, 1)
|
||
CFI EndCommon cfiCommon1
|
||
|
||
osal_memcpy SYMBOL "osal_memcpy"
|
||
`??osal_memcpy::?relay` SYMBOL "?relay", osal_memcpy
|
||
sAddrCmp SYMBOL "sAddrCmp"
|
||
`??sAddrCmp::?relay` SYMBOL "?relay", sAddrCmp
|
||
sAddrCpy SYMBOL "sAddrCpy"
|
||
`??sAddrCpy::?relay` SYMBOL "?relay", sAddrCpy
|
||
sAddrExtCmp SYMBOL "sAddrExtCmp"
|
||
`??sAddrExtCmp::?relay` SYMBOL "?relay", sAddrExtCmp
|
||
sAddrExtCpy SYMBOL "sAddrExtCpy"
|
||
`??sAddrExtCpy::?relay` SYMBOL "?relay", sAddrExtCpy
|
||
sAddrIden SYMBOL "sAddrIden"
|
||
`??sAddrIden::?relay` SYMBOL "?relay", sAddrIden
|
||
|
||
EXTERN `??osal_memcpy::?relay`
|
||
FUNCTION `??osal_memcpy::?relay`,00H
|
||
EXTERN osal_memcpy
|
||
FUNCTION osal_memcpy,0202H
|
||
ARGFRAME ISTACK, 0, STACK
|
||
ARGFRAME PSTACK, 0, STACK
|
||
ARGFRAME XSTACK, 14, STACK
|
||
ARGFRAME IOVERLAY, 0, STATIC
|
||
ARGFRAME DOVERLAY, 0, STATIC
|
||
|
||
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\services\saddr\saddr.c
|
||
// 1 /****************************************************************************
|
||
// 2 Filename: saddr.c
|
||
// 3 Revised: $Date: 2009-12-10 08:32:15 -0800 (Thu, 10 Dec 2009) $
|
||
// 4 Revision: $Revision: 21311 $
|
||
// 5
|
||
// 6 Description: Zigbee and 802.15.4 device address utility functions.
|
||
// 7
|
||
// 8
|
||
// 9 Copyright 2005-2010 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 揂S IS<49> 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 */
|
||
|
||
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
|
||
// 61 bool sAddrCmp(const sAddr_t *pAddr1, const sAddr_t *pAddr2)
|
||
sAddrCmp:
|
||
CFI Block cfiBlock0 Using cfiCommon0
|
||
CFI Function sAddrCmp
|
||
CODE
|
||
// 62 {
|
||
FUNCALL sAddrCmp, sAddrExtCmp
|
||
LOCFRAME ISTACK, 2, STACK
|
||
LOCFRAME PSTACK, 0, STACK
|
||
LOCFRAME XSTACK, 0, STACK
|
||
LOCFRAME IOVERLAY, 0, STATIC
|
||
LOCFRAME DOVERLAY, 0, STATIC
|
||
ARGFRAME ISTACK, 2, STACK
|
||
ARGFRAME PSTACK, 0, STACK
|
||
ARGFRAME XSTACK, 0, STACK
|
||
ARGFRAME IOVERLAY, 0, STATIC
|
||
ARGFRAME DOVERLAY, 0, STATIC
|
||
PUSH DPL
|
||
CFI DPL0 Frame(CFA_SP, 4)
|
||
CFI CFA_SP SP+-4
|
||
PUSH DPH
|
||
CFI DPH0 Frame(CFA_SP, 5)
|
||
CFI CFA_SP SP+-5
|
||
; Saved register size: 2
|
||
; Auto size: 0
|
||
// 63 if (pAddr1->addrMode != pAddr2->addrMode)
|
||
LCALL ?Subroutine1 & 0xFFFF
|
||
??CrossCallReturnLabel_0:
|
||
JNZ ??sAddrCmp_0
|
||
// 64 {
|
||
// 65 return FALSE;
|
||
// 66 }
|
||
// 67 else if (pAddr1->addrMode == SADDR_MODE_NONE)
|
||
MOV DPL,R2
|
||
MOV DPH,R3
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
MOVX A,@DPTR
|
||
JZ ??sAddrCmp_0
|
||
// 68 {
|
||
// 69 return FALSE;
|
||
// 70 }
|
||
// 71 else if (pAddr1->addrMode == SADDR_MODE_SHORT)
|
||
XRL A,#0x2
|
||
MOV DPL,R2
|
||
MOV DPH,R3
|
||
JNZ ??sAddrCmp_1
|
||
// 72 {
|
||
// 73 return (bool) (pAddr1->addr.shortAddr == pAddr2->addr.shortAddr);
|
||
LCALL ?Subroutine2 & 0xFFFF
|
||
// 74 }
|
||
??CrossCallReturnLabel_2:
|
||
JNZ ??sAddrCmp_2
|
||
INC DPTR
|
||
MOVX A,@DPTR
|
||
XRL A,R1
|
||
??sAddrCmp_2:
|
||
JNZ ??sAddrCmp_0
|
||
MOV R1,#0x1
|
||
SJMP ??sAddrCmp_3
|
||
// 75 else if (pAddr1->addrMode == SADDR_MODE_EXT)
|
||
??sAddrCmp_1:
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
MOVX A,@DPTR
|
||
XRL A,#0x3
|
||
JNZ ??sAddrCmp_0
|
||
// 76 {
|
||
// 77 return (sAddrExtCmp(pAddr1->addr.extAddr, pAddr2->addr.extAddr));
|
||
; Setup parameters for call to function sAddrExtCmp
|
||
LCALL `??sAddrExtCmp::?relay`; Banked call to: sAddrExtCmp
|
||
SJMP ??sAddrCmp_3
|
||
// 78 }
|
||
// 79 else
|
||
// 80 {
|
||
// 81 return FALSE;
|
||
??sAddrCmp_0:
|
||
MOV R1,#0x0
|
||
// 82 }
|
||
??sAddrCmp_3:
|
||
CFI EndBlock cfiBlock0
|
||
REQUIRE ?Subroutine0
|
||
; // Fall through to label ?Subroutine0
|
||
// 83 }
|
||
|
||
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
|
||
?Subroutine0:
|
||
CFI Block cfiBlock1 Using cfiCommon0
|
||
CFI NoFunction
|
||
CFI CFA_SP SP+-5
|
||
CFI DPL0 Frame(CFA_SP, 4)
|
||
CFI DPH0 Frame(CFA_SP, 5)
|
||
POP DPH
|
||
CFI CFA_SP SP+-4
|
||
CFI DPH0 SameValue
|
||
POP DPL
|
||
CFI CFA_SP SP+-3
|
||
CFI DPL0 SameValue
|
||
LJMP ?BRET
|
||
CFI EndBlock cfiBlock1
|
||
// 84
|
||
// 85 /****************************************************************************
|
||
// 86 * @fn sAddrIden
|
||
// 87 *
|
||
// 88 * @brief Check if two device addresses are identical.
|
||
// 89 *
|
||
// 90 * This routine is virtually the same as sAddrCmp, which is used
|
||
// 91 * to determine if two different addresses are the same. However,
|
||
// 92 * this routine can be used to determine if an address is the
|
||
// 93 * same as a previously stored address. The key difference is in
|
||
// 94 * the former case, if the address mode is "none", then the
|
||
// 95 * assumption is that the two addresses can not be the same. But
|
||
// 96 * in the latter case, the address mode itself is being compared.
|
||
// 97 * So two addresses can be identical even if the address mode is
|
||
// 98 * "none", as long as the address mode of both addresses being
|
||
// 99 * compared is "none".
|
||
// 100 *
|
||
// 101 * input parameters
|
||
// 102 *
|
||
// 103 * @param pAddr1 - Pointer to first address.
|
||
// 104 * @param pAddr2 - Pointer to second address.
|
||
// 105 *
|
||
// 106 * output parameters
|
||
// 107 *
|
||
// 108 * @return TRUE if addresses are identical, FALSE otherwise
|
||
// 109 */
|
||
|
||
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
|
||
// 110 bool sAddrIden(const sAddr_t *pAddr1, const sAddr_t *pAddr2)
|
||
sAddrIden:
|
||
CFI Block cfiBlock2 Using cfiCommon0
|
||
CFI Function sAddrIden
|
||
CODE
|
||
// 111 {
|
||
FUNCALL sAddrIden, sAddrExtCmp
|
||
LOCFRAME ISTACK, 2, STACK
|
||
LOCFRAME PSTACK, 0, STACK
|
||
LOCFRAME XSTACK, 0, STACK
|
||
LOCFRAME IOVERLAY, 0, STATIC
|
||
LOCFRAME DOVERLAY, 0, STATIC
|
||
ARGFRAME ISTACK, 2, STACK
|
||
ARGFRAME PSTACK, 0, STACK
|
||
ARGFRAME XSTACK, 0, STACK
|
||
ARGFRAME IOVERLAY, 0, STATIC
|
||
ARGFRAME DOVERLAY, 0, STATIC
|
||
PUSH DPL
|
||
CFI DPL0 Frame(CFA_SP, 4)
|
||
CFI CFA_SP SP+-4
|
||
PUSH DPH
|
||
CFI DPH0 Frame(CFA_SP, 5)
|
||
CFI CFA_SP SP+-5
|
||
; Saved register size: 2
|
||
; Auto size: 0
|
||
// 112 // first check if the address modes are the same
|
||
// 113 if (pAddr1->addrMode != pAddr2->addrMode)
|
||
LCALL ?Subroutine1 & 0xFFFF
|
||
??CrossCallReturnLabel_1:
|
||
JNZ ??sAddrIden_0
|
||
// 114 {
|
||
// 115 // no, so no point in comparing any further
|
||
// 116 return FALSE;
|
||
// 117 }
|
||
// 118 // the address modes are the same; check if there is no address
|
||
// 119 else if (pAddr1->addrMode == SADDR_MODE_NONE)
|
||
MOV DPL,R2
|
||
MOV DPH,R3
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
MOVX A,@DPTR
|
||
JZ ??sAddrIden_1
|
||
// 120 {
|
||
// 121 // no address, so no need to compare any further as both addresses have the
|
||
// 122 // same address mode but no address, so they are identical
|
||
// 123 return TRUE;
|
||
// 124 }
|
||
// 125 // there's an address; check if it is short
|
||
// 126 else if (pAddr1->addrMode == SADDR_MODE_SHORT)
|
||
XRL A,#0x2
|
||
MOV DPL,R2
|
||
MOV DPH,R3
|
||
JNZ ??sAddrIden_2
|
||
// 127 {
|
||
// 128 // compare short addresses
|
||
// 129 return (bool) (pAddr1->addr.shortAddr == pAddr2->addr.shortAddr);
|
||
LCALL ?Subroutine2 & 0xFFFF
|
||
// 130 }
|
||
??CrossCallReturnLabel_3:
|
||
JNZ ??sAddrIden_3
|
||
INC DPTR
|
||
MOVX A,@DPTR
|
||
XRL A,R1
|
||
??sAddrIden_3:
|
||
JNZ ??sAddrIden_0
|
||
??sAddrIden_1:
|
||
MOV R1,#0x1
|
||
SJMP ??sAddrIden_4
|
||
// 131 // there's an address; check if it is extended
|
||
// 132 else if (pAddr1->addrMode == SADDR_MODE_EXT)
|
||
??sAddrIden_2:
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
MOVX A,@DPTR
|
||
XRL A,#0x3
|
||
JNZ ??sAddrIden_0
|
||
// 133 {
|
||
// 134 // compare extended addresses
|
||
// 135 return (sAddrExtCmp(pAddr1->addr.extAddr, pAddr2->addr.extAddr));
|
||
; Setup parameters for call to function sAddrExtCmp
|
||
LCALL `??sAddrExtCmp::?relay`; Banked call to: sAddrExtCmp
|
||
SJMP ??sAddrIden_4
|
||
// 136 }
|
||
// 137 else // unknown error
|
||
// 138 {
|
||
// 139 return FALSE;
|
||
??sAddrIden_0:
|
||
MOV R1,#0x0
|
||
// 140 }
|
||
??sAddrIden_4:
|
||
SJMP ?Subroutine0
|
||
// 141 }
|
||
CFI EndBlock cfiBlock2
|
||
|
||
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
|
||
?Subroutine2:
|
||
CFI Block cfiCond3 Using cfiCommon0
|
||
CFI Function sAddrCmp
|
||
CFI Conditional ??CrossCallReturnLabel_2
|
||
CFI DPL0 Frame(CFA_SP, 4)
|
||
CFI DPH0 Frame(CFA_SP, 5)
|
||
CFI CFA_SP SP+-7
|
||
CFI Block cfiCond4 Using cfiCommon0
|
||
CFI (cfiCond4) Function sAddrIden
|
||
CFI (cfiCond4) Conditional ??CrossCallReturnLabel_3
|
||
CFI (cfiCond4) DPL0 Frame(CFA_SP, 4)
|
||
CFI (cfiCond4) DPH0 Frame(CFA_SP, 5)
|
||
CFI (cfiCond4) CFA_SP SP+-7
|
||
CFI Block cfiPicker5 Using cfiCommon1
|
||
CFI (cfiPicker5) NoFunction
|
||
CFI (cfiPicker5) Picker
|
||
MOVX A,@DPTR
|
||
MOV R0,A
|
||
INC DPTR
|
||
MOVX A,@DPTR
|
||
MOV R1,A
|
||
MOV DPL,R4
|
||
MOV DPH,R5
|
||
MOVX A,@DPTR
|
||
XRL A,R0
|
||
RET
|
||
CFI EndBlock cfiCond3
|
||
CFI EndBlock cfiCond4
|
||
CFI EndBlock cfiPicker5
|
||
|
||
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
|
||
?Subroutine1:
|
||
CFI Block cfiCond6 Using cfiCommon0
|
||
CFI Function sAddrCmp
|
||
CFI Conditional ??CrossCallReturnLabel_0
|
||
CFI DPL0 Frame(CFA_SP, 4)
|
||
CFI DPH0 Frame(CFA_SP, 5)
|
||
CFI CFA_SP SP+-7
|
||
CFI Block cfiCond7 Using cfiCommon0
|
||
CFI (cfiCond7) Function sAddrIden
|
||
CFI (cfiCond7) Conditional ??CrossCallReturnLabel_1
|
||
CFI (cfiCond7) DPL0 Frame(CFA_SP, 4)
|
||
CFI (cfiCond7) DPH0 Frame(CFA_SP, 5)
|
||
CFI (cfiCond7) CFA_SP SP+-7
|
||
CFI Block cfiPicker8 Using cfiCommon1
|
||
CFI (cfiPicker8) NoFunction
|
||
CFI (cfiPicker8) Picker
|
||
MOV DPL,R2
|
||
MOV DPH,R3
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
MOVX A,@DPTR
|
||
MOV R0,A
|
||
MOV DPL,R4
|
||
MOV DPH,R5
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
MOVX A,@DPTR
|
||
XRL A,R0
|
||
RET
|
||
CFI EndBlock cfiCond6
|
||
CFI EndBlock cfiCond7
|
||
CFI EndBlock cfiPicker8
|
||
// 142
|
||
// 143 /****************************************************************************
|
||
// 144 * @fn sAddrCpy
|
||
// 145 *
|
||
// 146 * @brief Copy a device address.
|
||
// 147 *
|
||
// 148 * input parameters
|
||
// 149 *
|
||
// 150 * @param pSrc - Pointer to address to copy.
|
||
// 151 *
|
||
// 152 * output parameters
|
||
// 153 *
|
||
// 154 * @param pDest - Pointer to address of copy.
|
||
// 155 *
|
||
// 156 * @return None.
|
||
// 157 */
|
||
|
||
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
|
||
// 158 void sAddrCpy(sAddr_t *pDest, const sAddr_t *pSrc)
|
||
sAddrCpy:
|
||
CFI Block cfiBlock9 Using cfiCommon0
|
||
CFI Function sAddrCpy
|
||
CODE
|
||
// 159 {
|
||
FUNCALL sAddrCpy, sAddrExtCpy
|
||
LOCFRAME ISTACK, 2, STACK
|
||
LOCFRAME PSTACK, 0, STACK
|
||
LOCFRAME XSTACK, 0, STACK
|
||
LOCFRAME IOVERLAY, 0, STATIC
|
||
LOCFRAME DOVERLAY, 0, STATIC
|
||
ARGFRAME ISTACK, 2, STACK
|
||
ARGFRAME PSTACK, 0, STACK
|
||
ARGFRAME XSTACK, 0, STACK
|
||
ARGFRAME IOVERLAY, 0, STATIC
|
||
ARGFRAME DOVERLAY, 0, STATIC
|
||
PUSH DPL
|
||
CFI DPL0 Frame(CFA_SP, 4)
|
||
CFI CFA_SP SP+-4
|
||
PUSH DPH
|
||
CFI DPH0 Frame(CFA_SP, 5)
|
||
CFI CFA_SP SP+-5
|
||
; Saved register size: 2
|
||
; Auto size: 0
|
||
// 160 pDest->addrMode = pSrc->addrMode;
|
||
MOV DPL,R4
|
||
MOV DPH,R5
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
MOVX A,@DPTR
|
||
MOV R0,A
|
||
MOV DPL,R2
|
||
MOV DPH,R3
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
INC DPTR
|
||
MOVX @DPTR,A
|
||
// 161
|
||
// 162 if (pDest->addrMode == SADDR_MODE_EXT)
|
||
MOV A,#0x3
|
||
XRL A,R0
|
||
JNZ ??sAddrCpy_0
|
||
// 163 {
|
||
// 164 sAddrExtCpy(pDest->addr.extAddr, pSrc->addr.extAddr);
|
||
; Setup parameters for call to function sAddrExtCpy
|
||
LCALL `??sAddrExtCpy::?relay`; Banked call to: sAddrExtCpy
|
||
SJMP ??sAddrCpy_1
|
||
// 165 }
|
||
// 166 else
|
||
// 167 {
|
||
// 168 pDest->addr.shortAddr = pSrc->addr.shortAddr;
|
||
??sAddrCpy_0:
|
||
MOV DPL,R4
|
||
MOV DPH,R5
|
||
MOVX A,@DPTR
|
||
MOV R0,A
|
||
INC DPTR
|
||
MOVX A,@DPTR
|
||
MOV R1,A
|
||
MOV DPL,R2
|
||
MOV DPH,R3
|
||
MOV A,R0
|
||
MOVX @DPTR,A
|
||
INC DPTR
|
||
MOV A,R1
|
||
MOVX @DPTR,A
|
||
// 169 }
|
||
// 170 }
|
||
??sAddrCpy_1:
|
||
LJMP ?Subroutine0 & 0xFFFF
|
||
CFI EndBlock cfiBlock9
|
||
// 171
|
||
// 172 /****************************************************************************
|
||
// 173 * @fn sAddrExtCmp
|
||
// 174 *
|
||
// 175 * @brief Compare two extended addresses.
|
||
// 176 *
|
||
// 177 * input parameters
|
||
// 178 *
|
||
// 179 * @param pAddr1 - Pointer to first address.
|
||
// 180 * @param pAddr2 - Pointer to second address.
|
||
// 181 *
|
||
// 182 * output parameters
|
||
// 183 *
|
||
// 184 * @return TRUE if addresses are equal, FALSE otherwise
|
||
// 185 */
|
||
|
||
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
|
||
// 186 bool sAddrExtCmp(const uint8 * pAddr1, const uint8 * pAddr2)
|
||
sAddrExtCmp:
|
||
CFI Block cfiBlock10 Using cfiCommon0
|
||
CFI Function sAddrExtCmp
|
||
CODE
|
||
// 187 {
|
||
REQUIRE ?V0
|
||
REQUIRE ?V1
|
||
MOV A,#-0xa
|
||
LCALL ?BANKED_ENTER_XDATA
|
||
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
|
||
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
|
||
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
|
||
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
|
||
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
|
||
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
|
||
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
|
||
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
|
||
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
|
||
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
|
||
CFI CFA_SP SP+0
|
||
CFI CFA_XSP16 add(XSP16, 10)
|
||
; Saved register size: 10
|
||
; Auto size: 0
|
||
// 188 uint8 i;
|
||
// 189
|
||
// 190 for (i = SADDR_EXT_LEN; i != 0; i--)
|
||
MOV ?V0,#0x8
|
||
// 191 {
|
||
// 192 if (*pAddr1++ != *pAddr2++)
|
||
??sAddrExtCmp_0:
|
||
MOV A,R2
|
||
MOV R0,A
|
||
MOV A,R3
|
||
MOV R1,A
|
||
MOV DPL,R0
|
||
MOV DPH,A
|
||
INC DPTR
|
||
MOV R2,DPL
|
||
MOV R3,DPH
|
||
MOV A,R4
|
||
MOV R6,A
|
||
MOV A,R5
|
||
MOV R7,A
|
||
MOV DPL,R6
|
||
MOV DPH,A
|
||
INC DPTR
|
||
MOV R4,DPL
|
||
MOV R5,DPH
|
||
MOV DPL,R0
|
||
MOV DPH,R1
|
||
MOVX A,@DPTR
|
||
MOV R0,A
|
||
MOV DPL,R6
|
||
MOV DPH,R7
|
||
MOVX A,@DPTR
|
||
XRL A,R0
|
||
JZ ??sAddrExtCmp_1
|
||
// 193 {
|
||
// 194 return FALSE;
|
||
MOV R1,#0x0
|
||
SJMP ??sAddrExtCmp_2
|
||
// 195 }
|
||
// 196 }
|
||
??sAddrExtCmp_1:
|
||
DEC ?V0
|
||
MOV A,?V0
|
||
JNZ ??sAddrExtCmp_0
|
||
// 197 return TRUE;
|
||
MOV R1,#0x1
|
||
??sAddrExtCmp_2:
|
||
MOV R7,#0x2
|
||
LJMP ?BANKED_LEAVE_XDATA
|
||
// 198 }
|
||
CFI EndBlock cfiBlock10
|
||
// 199
|
||
// 200 /****************************************************************************
|
||
// 201 * @fn sAddrExtCpy
|
||
// 202 *
|
||
// 203 * @brief Copy an extended address.
|
||
// 204 *
|
||
// 205 * input parameters
|
||
// 206 *
|
||
// 207 * @param pSrc - Pointer to address to copy.
|
||
// 208 *
|
||
// 209 * output parameters
|
||
// 210 *
|
||
// 211 * @param pDest - Pointer to address of copy.
|
||
// 212 *
|
||
// 213 * @return pDest + SADDR_EXT_LEN.
|
||
// 214 */
|
||
|
||
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
|
||
// 215 void *sAddrExtCpy(uint8 * pDest, const uint8 * pSrc)
|
||
sAddrExtCpy:
|
||
CFI Block cfiBlock11 Using cfiCommon0
|
||
CFI Function sAddrExtCpy
|
||
CODE
|
||
// 216 {
|
||
FUNCALL sAddrExtCpy, osal_memcpy
|
||
LOCFRAME ISTACK, 0, STACK
|
||
LOCFRAME PSTACK, 0, STACK
|
||
LOCFRAME XSTACK, 14, STACK
|
||
LOCFRAME IOVERLAY, 0, STATIC
|
||
LOCFRAME DOVERLAY, 0, STATIC
|
||
ARGFRAME ISTACK, 0, STACK
|
||
ARGFRAME PSTACK, 0, STACK
|
||
ARGFRAME XSTACK, 14, STACK
|
||
ARGFRAME IOVERLAY, 0, STATIC
|
||
ARGFRAME DOVERLAY, 0, STATIC
|
||
REQUIRE ?V0
|
||
REQUIRE ?V1
|
||
REQUIRE ?V2
|
||
MOV A,#-0xb
|
||
LCALL ?BANKED_ENTER_XDATA
|
||
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
|
||
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
|
||
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
|
||
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
|
||
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
|
||
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
|
||
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
|
||
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
|
||
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
|
||
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
|
||
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
|
||
CFI CFA_SP SP+0
|
||
CFI CFA_XSP16 add(XSP16, 11)
|
||
; Saved register size: 11
|
||
; Auto size: 0
|
||
// 217 return osal_memcpy(pDest, pSrc, SADDR_EXT_LEN);
|
||
; Setup parameters for call to function osal_memcpy
|
||
MOV ?V0,R4
|
||
MOV ?V1,R5
|
||
MOV ?V2,#0x0
|
||
MOV R0,#?V0
|
||
LCALL ?PUSH_XSTACK_I_THREE
|
||
CFI CFA_XSP16 add(XSP16, 14)
|
||
MOV R4,#0x8
|
||
MOV R5,#0x0
|
||
LCALL `??osal_memcpy::?relay`; Banked call to: osal_memcpy
|
||
MOV A,#0x3
|
||
LCALL ?DEALLOC_XSTACK8
|
||
CFI CFA_XSP16 add(XSP16, 11)
|
||
MOV R7,#0x3
|
||
LJMP ?BANKED_LEAVE_XDATA
|
||
// 218 }
|
||
CFI EndBlock cfiBlock11
|
||
|
||
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
|
||
`??sAddrCmp::?relay`:
|
||
CODE
|
||
LCALL ?BDISPATCH
|
||
DATA24
|
||
DC24 sAddrCmp
|
||
|
||
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
|
||
`??sAddrIden::?relay`:
|
||
CODE
|
||
LCALL ?BDISPATCH
|
||
DATA24
|
||
DC24 sAddrIden
|
||
|
||
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
|
||
`??sAddrCpy::?relay`:
|
||
CODE
|
||
LCALL ?BDISPATCH
|
||
DATA24
|
||
DC24 sAddrCpy
|
||
|
||
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
|
||
`??sAddrExtCmp::?relay`:
|
||
CODE
|
||
LCALL ?BDISPATCH
|
||
DATA24
|
||
DC24 sAddrExtCmp
|
||
|
||
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
|
||
`??sAddrExtCpy::?relay`:
|
||
CODE
|
||
LCALL ?BDISPATCH
|
||
DATA24
|
||
DC24 sAddrExtCpy
|
||
|
||
END
|
||
// 219
|
||
// 220
|
||
// 221
|
||
// 222
|
||
//
|
||
// 343 bytes in segment BANKED_CODE
|
||
// 30 bytes in segment BANK_RELAYS
|
||
//
|
||
// 30 bytes of CODE memory
|
||
// 343 bytes of HUGECODE memory
|
||
//
|
||
//Errors: none
|
||
//Warnings: none
|