Files
OldPeopleHome/zigbee/ZStack-CC2530-r200/Projects/SappWsn/RouterEB/List/BindingTable.s51
LitterDryFish 6b0d1c0743 add node
2019-08-23 12:26:53 +08:00

7926 lines
317 KiB
Plaintext
Raw Blame History

///////////////////////////////////////////////////////////////////////////////
//
// IAR C/C++ Compiler V10.30.1.6000 for 8051 23/Aug/2019 12:13:01
// 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\stack\nwk\BindingTable.c
// Command line =
// -f C:\Users\VULCAN\AppData\Local\Temp\EWBF5E.tmp
// (E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\stack\nwk\BindingTable.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\BindingTable.s51
//
///////////////////////////////////////////////////////////////////////////////
NAME BindingTable
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 ?V3
EXTERN ?V4
EXTERN ?V5
EXTERN ?V6
EXTERN ?ALLOC_XSTACK8
EXTERN ?BANKED_ENTER_XDATA
EXTERN ?BANKED_LEAVE_XDATA
EXTERN ?BDISPATCH
EXTERN ?BRET
EXTERN ?DEALLOC_XSTACK8
EXTERN ?PUSH_XSTACK8_C_TWO
EXTERN ?PUSH_XSTACK_I_THREE
EXTERN ?PUSH_XSTACK_I_TWO
EXTERN ?XSP
EXTERN ?XSTACK_DISP0_8
EXTERN ?XSTACK_DISP100_8
EXTERN ?XSTACK_DISP101_8
EXTERN ?XSTACK_DISP102_8
EXTERN __INIT_XDATA_Z
PUBLIC `??BindInitNV::?relay`
FUNCTION `??BindInitNV::?relay`,0203H
PUBLIC `??BindRestoreFromNV::?relay`
FUNCTION `??BindRestoreFromNV::?relay`,0203H
PUBLIC `??BindSetDefaultNV::?relay`
FUNCTION `??BindSetDefaultNV::?relay`,0203H
PUBLIC `??BindWriteNV::?relay`
FUNCTION `??BindWriteNV::?relay`,0203H
PUBLIC `??GetBindingTableEntry::?relay`
FUNCTION `??GetBindingTableEntry::?relay`,0203H
PUBLIC `??InitBindingTable::?relay`
FUNCTION `??InitBindingTable::?relay`,0203H
PUBLIC `??bindAddClusterIdToList::?relay`
FUNCTION `??bindAddClusterIdToList::?relay`,0203H
PUBLIC `??bindAddEntry::?relay`
FUNCTION `??bindAddEntry::?relay`,0203H
PUBLIC `??bindAddrIndexGet::?relay`
FUNCTION `??bindAddrIndexGet::?relay`,0203H
PUBLIC `??bindAddrMgrLocalLoad::?relay`
FUNCTION `??bindAddrMgrLocalLoad::?relay`,0203H
PUBLIC `??bindCapacity::?relay`
FUNCTION `??bindCapacity::?relay`,0203H
PUBLIC `??bindFind::?relay`
FUNCTION `??bindFind::?relay`,0203H
PUBLIC `??bindFindEmpty::?relay`
FUNCTION `??bindFindEmpty::?relay`,0203H
PUBLIC `??bindFindExisting::?relay`
FUNCTION `??bindFindExisting::?relay`,0203H
PUBLIC `??bindIsClusterIDinList::?relay`
FUNCTION `??bindIsClusterIDinList::?relay`,0203H
PUBLIC `??bindNumBoundTo::?relay`
FUNCTION `??bindNumBoundTo::?relay`,0203H
PUBLIC `??bindNumOfEntries::?relay`
FUNCTION `??bindNumOfEntries::?relay`,0203H
PUBLIC `??bindNumReflections::?relay`
FUNCTION `??bindNumReflections::?relay`,0203H
PUBLIC `??bindRemoveClusterIdFromList::?relay`
FUNCTION `??bindRemoveClusterIdFromList::?relay`,0203H
PUBLIC `??bindRemoveDev::?relay`
FUNCTION `??bindRemoveDev::?relay`,0203H
PUBLIC `??bindRemoveEntry::?relay`
FUNCTION `??bindRemoveEntry::?relay`,0203H
PUBLIC `??bindRemoveSrcDev::?relay`
FUNCTION `??bindRemoveSrcDev::?relay`,0203H
PUBLIC `??bindUpdateAddr::?relay`
FUNCTION `??bindUpdateAddr::?relay`,0203H
PUBLIC `??bindingAddrMgsHelperConvert::?relay`
FUNCTION `??bindingAddrMgsHelperConvert::?relay`,0203H
PUBLIC `??bindingAddrMgsHelperConvertShort::?relay`
FUNCTION `??bindingAddrMgsHelperConvertShort::?relay`,0203H
PUBLIC `??bindingAddrMgsHelperFind::?relay`
FUNCTION `??bindingAddrMgsHelperFind::?relay`,0203H
PUBLIC BindInitNV
FUNCTION BindInitNV,0a1603H
ARGFRAME XSTACK, 0, STACK
LOCFRAME ISTACK, 2, STACK
LOCFRAME XSTACK, 12, STACK
PUBLIC BindRestoreFromNV
FUNCTION BindRestoreFromNV,0a1603H
ARGFRAME XSTACK, 0, STACK
LOCFRAME XSTACK, 41, STACK
PUBLIC BindSetDefaultNV
FUNCTION BindSetDefaultNV,0a1603H
ARGFRAME XSTACK, 10, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
LOCFRAME XSTACK, 16, STACK
PUBLIC BindWriteNV
FUNCTION BindWriteNV,0a1603H
ARGFRAME XSTACK, 0, STACK
LOCFRAME XSTACK, 31, STACK
PUBLIC GetBindingTableEntry
FUNCTION GetBindingTableEntry,080203H
ARGFRAME XSTACK, 0, STACK
LOCFRAME XSTACK, 11, STACK
PUBLIC InitBindingTable
FUNCTION InitBindingTable,0a1203H
ARGFRAME XSTACK, 0, STACK
LOCFRAME XSTACK, 10, STACK
PUBLIC bindAddClusterIdToList
FUNCTION bindAddClusterIdToList,0203H
ARGFRAME XSTACK, 18, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
LOCFRAME XSTACK, 9, STACK
PUBLIC bindAddEntry
FUNCTION bindAddEntry,0a1603H
ARGFRAME XSTACK, 39, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
LOCFRAME ISTACK, 1, STACK
LOCFRAME XSTACK, 21, STACK
PUBLIC bindAddrIndexGet
FUNCTION bindAddrIndexGet,021203H
ARGFRAME XSTACK, 18, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
LOCFRAME ISTACK, 2, STACK
LOCFRAME XSTACK, 13, STACK
PUBLIC bindAddrMgrLocalLoad
FUNCTION bindAddrMgrLocalLoad,0a1203H
ARGFRAME XSTACK, 18, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
LOCFRAME XSTACK, 23, STACK
PUBLIC bindCapacity
FUNCTION bindCapacity,080203H
ARGFRAME XSTACK, 0, STACK
LOCFRAME XSTACK, 11, STACK
PUBLIC bindFind
FUNCTION bindFind,0a1203H
ARGFRAME XSTACK, 0, STACK
LOCFRAME XSTACK, 15, STACK
PUBLIC bindFindEmpty
FUNCTION bindFindEmpty,0203H
ARGFRAME XSTACK, 18, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
LOCFRAME ISTACK, 2, STACK
PUBLIC bindFindExisting
FUNCTION bindFindExisting,0a1203H
ARGFRAME XSTACK, 0, STACK
LOCFRAME XSTACK, 12, STACK
PUBLIC bindIsClusterIDinList
FUNCTION bindIsClusterIDinList,0203H
ARGFRAME XSTACK, 18, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
LOCFRAME XSTACK, 9, STACK
PUBLIC bindNumBoundTo
FUNCTION bindNumBoundTo,0a1203H
ARGFRAME XSTACK, 0, STACK
LOCFRAME XSTACK, 13, STACK
PUBLIC bindNumOfEntries
FUNCTION bindNumOfEntries,0603H
ARGFRAME XSTACK, 0, STACK
LOCFRAME XSTACK, 9, STACK
PUBLIC bindNumReflections
FUNCTION bindNumReflections,0a1203H
ARGFRAME XSTACK, 0, STACK
LOCFRAME XSTACK, 13, STACK
PUBLIC bindRemoveClusterIdFromList
FUNCTION bindRemoveClusterIdFromList,080203H
ARGFRAME XSTACK, 0, STACK
LOCFRAME XSTACK, 11, STACK
PUBLIC bindRemoveDev
FUNCTION bindRemoveDev,0a1603H
ARGFRAME XSTACK, 0, STACK
LOCFRAME XSTACK, 14, STACK
PUBLIC bindRemoveEntry
FUNCTION bindRemoveEntry,021203H
ARGFRAME XSTACK, 14, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
LOCFRAME ISTACK, 2, STACK
PUBLIC bindRemoveSrcDev
FUNCTION bindRemoveSrcDev,0a1203H
ARGFRAME XSTACK, 0, STACK
LOCFRAME XSTACK, 9, STACK
PUBLIC bindUpdateAddr
FUNCTION bindUpdateAddr,0a1203H
ARGFRAME XSTACK, 0, STACK
LOCFRAME XSTACK, 21, STACK
PUBLIC bindingAddrMgsHelperConvert
FUNCTION bindingAddrMgsHelperConvert,0a1203H
ARGFRAME XSTACK, 37, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
LOCFRAME XSTACK, 22, STACK
PUBLIC bindingAddrMgsHelperConvertShort
FUNCTION bindingAddrMgsHelperConvertShort,021203H
ARGFRAME XSTACK, 0, STACK
LOCFRAME ISTACK, 2, STACK
LOCFRAME XSTACK, 13, STACK
PUBLIC bindingAddrMgsHelperFind
FUNCTION bindingAddrMgsHelperFind,021203H
ARGFRAME XSTACK, 21, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
LOCFRAME ISTACK, 2, STACK
LOCFRAME XSTACK, 13, STACK
PUBLIC pBindInitNV
PUBLIC pBindRestoreFromNV
PUBLIC pBindSetDefaultNV
PUBLIC pBindWriteNV
PUBLIC pbindAddEntry
PUBLIC pbindNumOfEntries
PUBLIC pbindRemoveDev
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
AddrMgrEntryGet SYMBOL "AddrMgrEntryGet"
`??AddrMgrEntryGet::?relay` SYMBOL "?relay", AddrMgrEntryGet
AddrMgrEntryLookupExt SYMBOL "AddrMgrEntryLookupExt"
`??AddrMgrEntryLookupExt::?relay` SYMBOL "?relay", AddrMgrEntryLookupExt
AddrMgrEntryLookupNwk SYMBOL "AddrMgrEntryLookupNwk"
`??AddrMgrEntryLookupNwk::?relay` SYMBOL "?relay", AddrMgrEntryLookupNwk
AddrMgrEntryUpdate SYMBOL "AddrMgrEntryUpdate"
`??AddrMgrEntryUpdate::?relay` SYMBOL "?relay", AddrMgrEntryUpdate
AddrMgrExtAddrSet SYMBOL "AddrMgrExtAddrSet"
`??AddrMgrExtAddrSet::?relay` SYMBOL "?relay", AddrMgrExtAddrSet
NLME_GetCoordExtAddr SYMBOL "NLME_GetCoordExtAddr"
`??NLME_GetCoordExtAddr::?relay` SYMBOL "?relay", NLME_GetCoordExtAddr
NLME_GetCoordShortAddr SYMBOL "NLME_GetCoordShortAddr"
`??NLME_GetCoordShortAddr::?relay` SYMBOL "?relay", NLME_GetCoordShortAddr
NLME_GetExtAddr SYMBOL "NLME_GetExtAddr"
`??NLME_GetExtAddr::?relay` SYMBOL "?relay", NLME_GetExtAddr
osal_memcpy SYMBOL "osal_memcpy"
`??osal_memcpy::?relay` SYMBOL "?relay", osal_memcpy
osal_memset SYMBOL "osal_memset"
`??osal_memset::?relay` SYMBOL "?relay", osal_memset
osal_nv_item_init SYMBOL "osal_nv_item_init"
`??osal_nv_item_init::?relay` SYMBOL "?relay", osal_nv_item_init
osal_nv_read SYMBOL "osal_nv_read"
`??osal_nv_read::?relay` SYMBOL "?relay", osal_nv_read
osal_nv_write SYMBOL "osal_nv_write"
`??osal_nv_write::?relay` SYMBOL "?relay", osal_nv_write
sAddrExtCpy SYMBOL "sAddrExtCpy"
`??sAddrExtCpy::?relay` SYMBOL "?relay", sAddrExtCpy
BindInitNV SYMBOL "BindInitNV"
`??BindInitNV::?relay` SYMBOL "?relay", BindInitNV
BindRestoreFromNV SYMBOL "BindRestoreFromNV"
`??BindRestoreFromNV::?relay` SYMBOL "?relay", BindRestoreFromNV
BindSetDefaultNV SYMBOL "BindSetDefaultNV"
`??BindSetDefaultNV::?relay` SYMBOL "?relay", BindSetDefaultNV
BindWriteNV SYMBOL "BindWriteNV"
`??BindWriteNV::?relay` SYMBOL "?relay", BindWriteNV
GetBindingTableEntry SYMBOL "GetBindingTableEntry"
`??GetBindingTableEntry::?relay` SYMBOL "?relay", GetBindingTableEntry
InitBindingTable SYMBOL "InitBindingTable"
`??InitBindingTable::?relay` SYMBOL "?relay", InitBindingTable
bindAddClusterIdToList SYMBOL "bindAddClusterIdToList"
`??bindAddClusterIdToList::?relay` SYMBOL "?relay", bindAddClusterIdToList
bindAddEntry SYMBOL "bindAddEntry"
`??bindAddEntry::?relay` SYMBOL "?relay", bindAddEntry
bindAddrIndexGet SYMBOL "bindAddrIndexGet"
`??bindAddrIndexGet::?relay` SYMBOL "?relay", bindAddrIndexGet
bindAddrMgrLocalLoad SYMBOL "bindAddrMgrLocalLoad"
`??bindAddrMgrLocalLoad::?relay` SYMBOL "?relay", bindAddrMgrLocalLoad
bindCapacity SYMBOL "bindCapacity"
`??bindCapacity::?relay` SYMBOL "?relay", bindCapacity
bindFind SYMBOL "bindFind"
`??bindFind::?relay` SYMBOL "?relay", bindFind
bindFindEmpty SYMBOL "bindFindEmpty"
`??bindFindEmpty::?relay` SYMBOL "?relay", bindFindEmpty
bindFindExisting SYMBOL "bindFindExisting"
`??bindFindExisting::?relay` SYMBOL "?relay", bindFindExisting
bindIsClusterIDinList SYMBOL "bindIsClusterIDinList"
`??bindIsClusterIDinList::?relay` SYMBOL "?relay", bindIsClusterIDinList
bindNumBoundTo SYMBOL "bindNumBoundTo"
`??bindNumBoundTo::?relay` SYMBOL "?relay", bindNumBoundTo
bindNumOfEntries SYMBOL "bindNumOfEntries"
`??bindNumOfEntries::?relay` SYMBOL "?relay", bindNumOfEntries
bindNumReflections SYMBOL "bindNumReflections"
`??bindNumReflections::?relay` SYMBOL "?relay", bindNumReflections
bindRemoveClusterIdFromList SYMBOL "bindRemoveClusterIdFromList"
`??bindRemoveClusterIdFromList::?relay` SYMBOL "?relay", bindRemoveClusterIdFromList
bindRemoveDev SYMBOL "bindRemoveDev"
`??bindRemoveDev::?relay` SYMBOL "?relay", bindRemoveDev
bindRemoveEntry SYMBOL "bindRemoveEntry"
`??bindRemoveEntry::?relay` SYMBOL "?relay", bindRemoveEntry
bindRemoveSrcDev SYMBOL "bindRemoveSrcDev"
`??bindRemoveSrcDev::?relay` SYMBOL "?relay", bindRemoveSrcDev
bindUpdateAddr SYMBOL "bindUpdateAddr"
`??bindUpdateAddr::?relay` SYMBOL "?relay", bindUpdateAddr
bindingAddrMgsHelperConvert SYMBOL "bindingAddrMgsHelperConvert"
`??bindingAddrMgsHelperConvert::?relay` SYMBOL "?relay", bindingAddrMgsHelperConvert
bindingAddrMgsHelperConvertShort SYMBOL "bindingAddrMgsHelperConvertShort"
`??bindingAddrMgsHelperConvertShort::?relay` SYMBOL "?relay", bindingAddrMgsHelperConvertShort
bindingAddrMgsHelperFind SYMBOL "bindingAddrMgsHelperFind"
`??bindingAddrMgsHelperFind::?relay` SYMBOL "?relay", bindingAddrMgsHelperFind
EXTERN `??AddrMgrEntryGet::?relay`
FUNCTION `??AddrMgrEntryGet::?relay`,00H
EXTERN `??AddrMgrEntryLookupExt::?relay`
FUNCTION `??AddrMgrEntryLookupExt::?relay`,00H
EXTERN `??AddrMgrEntryLookupNwk::?relay`
FUNCTION `??AddrMgrEntryLookupNwk::?relay`,00H
EXTERN `??AddrMgrEntryUpdate::?relay`
FUNCTION `??AddrMgrEntryUpdate::?relay`,00H
EXTERN `??AddrMgrExtAddrSet::?relay`
FUNCTION `??AddrMgrExtAddrSet::?relay`,00H
EXTERN `??NLME_GetCoordExtAddr::?relay`
FUNCTION `??NLME_GetCoordExtAddr::?relay`,00H
EXTERN `??NLME_GetCoordShortAddr::?relay`
FUNCTION `??NLME_GetCoordShortAddr::?relay`,00H
EXTERN `??NLME_GetExtAddr::?relay`
FUNCTION `??NLME_GetExtAddr::?relay`,00H
EXTERN `??osal_memcpy::?relay`
FUNCTION `??osal_memcpy::?relay`,00H
EXTERN `??osal_memset::?relay`
FUNCTION `??osal_memset::?relay`,00H
EXTERN `??osal_nv_item_init::?relay`
FUNCTION `??osal_nv_item_init::?relay`,00H
EXTERN `??osal_nv_read::?relay`
FUNCTION `??osal_nv_read::?relay`,00H
EXTERN `??osal_nv_write::?relay`
FUNCTION `??osal_nv_write::?relay`,00H
EXTERN `??sAddrExtCpy::?relay`
FUNCTION `??sAddrExtCpy::?relay`,00H
EXTERN AddrMgrEntryGet
FUNCTION AddrMgrEntryGet,0202H
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 22, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN AddrMgrEntryLookupExt
FUNCTION AddrMgrEntryLookupExt,0202H
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 13, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN AddrMgrEntryLookupNwk
FUNCTION AddrMgrEntryLookupNwk,0202H
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 13, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN AddrMgrEntryUpdate
FUNCTION AddrMgrEntryUpdate,0202H
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 23, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN AddrMgrExtAddrSet
FUNCTION AddrMgrExtAddrSet,0202H
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 23, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN BindingTable
EXTERN NLME_GetCoordExtAddr
FUNCTION NLME_GetCoordExtAddr,0202H
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 23, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN NLME_GetCoordShortAddr
FUNCTION NLME_GetCoordShortAddr,0202H
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 23, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN NLME_GetExtAddr
FUNCTION NLME_GetExtAddr,0202H
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 23, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN _NIB
EXTERN gBIND_REC_SIZE
EXTERN gMAX_BINDING_CLUSTER_IDS
EXTERN gNWK_MAX_BINDING_ENTRIES
EXTERN osal_memcpy
FUNCTION osal_memcpy,0202H
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 30, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN osal_memset
FUNCTION osal_memset,0202H
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 10, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN osal_nv_item_init
FUNCTION osal_nv_item_init,0202H
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 12, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN osal_nv_read
FUNCTION osal_nv_read,0202H
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 41, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN osal_nv_write
FUNCTION osal_nv_write,0202H
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 31, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN sAddrExtCpy
FUNCTION sAddrExtCpy,0202H
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 22, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Components\stack\nwk\BindingTable.c
// 1 /**************************************************************************************************
// 2 Filename: BindingTable.c
// 3 Revised: $Date: 2011-03-13 18:57:34 -0700 (Sun, 13 Mar 2011) $
// 4 Revision: $Revision: 25408 $
// 5
// 6 Description: Device binding table functions.
// 7
// 8
// 9 Copyright 2004-2011 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 "ZComDef.h"
// 44 #include "OSAL.h"
// 45 #include "OSAL_Nv.h"
// 46 #include "nwk_globals.h"
// 47 #include "AddrMgr.h"
// 48 #include "BindingTable.h"
// 49
// 50 /*********************************************************************
// 51 * MACROS
// 52 */
// 53
// 54 /*********************************************************************
// 55 * CONSTANTS
// 56 */
// 57 #define NV_BIND_EMPTY 0xFF
// 58 #define NV_BIND_REC_SIZE (gBIND_REC_SIZE)
// 59 #define NV_BIND_ITEM_SIZE (gBIND_REC_SIZE * gNWK_MAX_BINDING_ENTRIES)
// 60
// 61 /*********************************************************************
// 62 * TYPEDEFS
// 63 */
// 64 typedef struct
// 65 {
// 66 uint8 srcEP;
// 67 uint16 srcIndex;
// 68 uint16 dstIndex;
// 69 uint8 dstEP;
// 70 uint8 dstAddrMode;
// 71 uint8 clusterIDs;
// 72 uint16* clusterIDList;
// 73 } bindFields_t;
// 74
// 75 /*********************************************************************
// 76 * GLOBAL VARIABLES
// 77 */
// 78
// 79 /*********************************************************************
// 80 * LOCAL FUNCTIONS
// 81 */
// 82 void BindAddrMgrCB( uint8 update, AddrMgrEntry_t *entryOld,
// 83 AddrMgrEntry_t *entryNew );
// 84 BindingEntry_t *bindFindEmpty( void );
// 85 uint16 bindingAddrMgsHelperFind( zAddrType_t *addr );
// 86 uint8 bindingAddrMgsHelperConvert( uint16 idx, zAddrType_t *addr );
// 87 void bindAddrMgrLocalLoad( void );
// 88 uint16 bindAddrIndexGet( zAddrType_t* addr );
// 89
// 90 /*********************************************************************
// 91 * LOCAL VARIABLES
// 92 */
RSEG XDATA_Z:XDATA:NOROOT(0)
DATA8
// 93 static uint8 bindAddrMgrLocalLoaded = FALSE;
bindAddrMgrLocalLoaded:
DS 1
REQUIRE __INIT_XDATA_Z
// 94
// 95 /*********************************************************************
// 96 * Function Pointers
// 97 */
// 98
RSEG XDATA_Z:XDATA:NOROOT(0)
DATA16
// 99 BindingEntry_t *(*pbindAddEntry)( byte srcEpInt,
pbindAddEntry:
DS 2
REQUIRE __INIT_XDATA_Z
// 100 zAddrType_t *dstAddr, byte dstEpInt,
// 101 byte numClusterIds, uint16 *clusterIds ) = (void*)NULL;
RSEG XDATA_Z:XDATA:NOROOT(0)
DATA16
// 102 uint16 (*pbindNumOfEntries)( void ) = (void*)NULL;
pbindNumOfEntries:
DS 2
REQUIRE __INIT_XDATA_Z
RSEG XDATA_Z:XDATA:NOROOT(0)
DATA16
// 103 void (*pbindRemoveDev)( zAddrType_t *Addr ) = (void*)NULL;
pbindRemoveDev:
DS 2
REQUIRE __INIT_XDATA_Z
RSEG XDATA_Z:XDATA:NOROOT(0)
DATA16
// 104 byte (*pBindInitNV)( void ) = (void*)NULL;
pBindInitNV:
DS 2
REQUIRE __INIT_XDATA_Z
RSEG XDATA_Z:XDATA:NOROOT(0)
DATA16
// 105 void (*pBindSetDefaultNV)( void ) = (void*)NULL;
pBindSetDefaultNV:
DS 2
REQUIRE __INIT_XDATA_Z
RSEG XDATA_Z:XDATA:NOROOT(0)
DATA16
// 106 uint16 (*pBindRestoreFromNV)( void ) = (void*)NULL;
pBindRestoreFromNV:
DS 2
REQUIRE __INIT_XDATA_Z
RSEG XDATA_Z:XDATA:NOROOT(0)
DATA16
// 107 void (*pBindWriteNV)( void ) = (void*)NULL;
pBindWriteNV:
DS 2
REQUIRE __INIT_XDATA_Z
// 108
// 109 #if ( ADDRMGR_CALLBACK_ENABLED == 1 )
// 110 /*********************************************************************
// 111 * @fn BindAddrMgrCB()
// 112 *
// 113 * @brief Address Manager Callback function
// 114 *
// 115 * @param update -
// 116 * @param entry -
// 117 *
// 118 * @return pointer to
// 119 */
// 120 void BindAddrMgrCB( uint8 update, AddrMgrEntry_t *entryNew,
// 121 AddrMgrEntry_t *entryOld )
// 122 {
// 123 // Check for either deleted items or changed Extended (Duplicate) addresses
// 124 }
// 125 #endif // ( ADDRMGR_CALLBACK_ENABLED == 1 )
// 126
// 127 /*********************************************************************
// 128 * @fn InitBindingTable()
// 129 *
// 130 * @brief
// 131 *
// 132 * This function is used to initialise the binding table
// 133 *
// 134 * @param none
// 135 *
// 136 * @return none
// 137 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 138 void InitBindingTable( void )
InitBindingTable:
CFI Block cfiBlock0 Using cfiCommon0
CFI Function InitBindingTable
CODE
// 139 {
FUNCALL InitBindingTable, osal_memset
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 10, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 10, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
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
// 140 osal_memset( BindingTable, 0xFF, gBIND_REC_SIZE * gNWK_MAX_BINDING_ENTRIES );
; Setup parameters for call to function osal_memset
LCALL ?Subroutine13 & 0xFFFF
??CrossCallReturnLabel_57:
MOV DPTR,#gNWK_MAX_BINDING_ENTRIES
LCALL ?Subroutine33 & 0xFFFF
??CrossCallReturnLabel_44:
MOV A,R4
MOV B,?V0
MUL AB
XCH A,R4
MOV R0,B
MOV B,?V1
MUL AB
ADD A,R0
MOV R0,A
MOV B,?V0
MOV A,R5
MUL AB
ADD A,R0
MOV R5,A
MOV R1,#-0x1
MOV R2,#BindingTable & 0xff
MOV R3,#(BindingTable >> 8) & 0xff
LCALL `??osal_memset::?relay`; Banked call to: osal_memset
// 141
// 142 pbindAddEntry = bindAddEntry;
MOV DPTR,#pbindAddEntry
MOV A,#`??bindAddEntry::?relay` & 0xff
MOVX @DPTR,A
INC DPTR
MOV A,#(`??bindAddEntry::?relay` >> 8) & 0xff
MOVX @DPTR,A
// 143 pbindNumOfEntries = bindNumOfEntries;
MOV DPTR,#pbindNumOfEntries
MOV A,#`??bindNumOfEntries::?relay` & 0xff
MOVX @DPTR,A
INC DPTR
MOV A,#(`??bindNumOfEntries::?relay` >> 8) & 0xff
MOVX @DPTR,A
// 144 pbindRemoveDev = bindRemoveDev;
MOV DPTR,#pbindRemoveDev
MOV A,#`??bindRemoveDev::?relay` & 0xff
MOVX @DPTR,A
INC DPTR
MOV A,#(`??bindRemoveDev::?relay` >> 8) & 0xff
MOVX @DPTR,A
// 145 pBindInitNV = BindInitNV;
MOV DPTR,#pBindInitNV
MOV A,#`??BindInitNV::?relay` & 0xff
MOVX @DPTR,A
INC DPTR
MOV A,#(`??BindInitNV::?relay` >> 8) & 0xff
MOVX @DPTR,A
// 146 pBindSetDefaultNV = BindSetDefaultNV;
MOV DPTR,#pBindSetDefaultNV
MOV A,#`??BindSetDefaultNV::?relay` & 0xff
MOVX @DPTR,A
INC DPTR
MOV A,#(`??BindSetDefaultNV::?relay` >> 8) & 0xff
MOVX @DPTR,A
// 147 pBindRestoreFromNV = BindRestoreFromNV;
MOV DPTR,#pBindRestoreFromNV
MOV A,#`??BindRestoreFromNV::?relay` & 0xff
MOVX @DPTR,A
INC DPTR
MOV A,#(`??BindRestoreFromNV::?relay` >> 8) & 0xff
MOVX @DPTR,A
// 148 pBindWriteNV = BindWriteNV;
MOV DPTR,#pBindWriteNV
MOV A,#`??BindWriteNV::?relay` & 0xff
MOVX @DPTR,A
INC DPTR
MOV A,#(`??BindWriteNV::?relay` >> 8) & 0xff
MOVX @DPTR,A
// 149
// 150 bindAddrMgrLocalLoaded = FALSE;
MOV DPTR,#bindAddrMgrLocalLoaded
CLR A
MOVX @DPTR,A
// 151
// 152 #if ( ADDRMGR_CALLBACK_ENABLED == 1 )
// 153 // Register with the address manager
// 154 AddrMgrRegister( ADDRMGR_REG_BINDING, BindAddrMgrCB );
// 155 #endif
// 156 }
SJMP ??Subroutine37_0
CFI EndBlock cfiBlock0
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine0:
CFI Block cfiBlock1 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 12)
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
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 Invalid
LCALL ?DEALLOC_XSTACK8
CFI EndBlock cfiBlock1
REQUIRE ??Subroutine37_0
; // Fall through to label ??Subroutine37_0
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
??Subroutine37_0:
CFI Block cfiBlock2 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 10)
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
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)))
MOV R7,#0x2
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock2
// 157
// 158 /*********************************************************************
// 159 * @fn bindFindEmpty()
// 160 *
// 161 * @brief This function returns a pointer to an empty binding slot
// 162 *
// 163 * @param none
// 164 *
// 165 * @return pointer to binding table entry, NULL if not added
// 166 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 167 BindingEntry_t *bindFindEmpty( void )
bindFindEmpty:
CFI Block cfiBlock3 Using cfiCommon0
CFI Function bindFindEmpty
CODE
// 168 {
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
// 169 uint16 x;
// 170
// 171 for ( x = 0; x < gNWK_MAX_BINDING_ENTRIES; x++ )
MOV R0,#0x0
MOV R1,#0x0
SJMP ??bindFindEmpty_0
??bindFindEmpty_1:
INC R0
MOV A,R0
JNZ ??bindFindEmpty_0
INC R1
??bindFindEmpty_0:
LCALL ?Subroutine7 & 0xFFFF
??CrossCallReturnLabel_0:
JNC ??bindFindEmpty_2
// 172 {
// 173 // It's empty if the index is "Not Found"
// 174 if ( BindingTable[x].srcEP == NV_BIND_EMPTY )
MOV A,R0
MOV R2,A
MOV A,R1
MOV R3,A
MOV A,R2
MOV B,#0xe
MUL AB
MOV R2,A
MOV R4,B
MOV B,#0xe
MOV A,R3
MUL AB
ADD A,R4
LCALL ??Subroutine40_0 & 0xFFFF
??CrossCallReturnLabel_67:
CPL A
JNZ ??bindFindEmpty_1
// 175 {
// 176 return ( &BindingTable[x] );
MOV B,#0xe
MOV A,R1
MUL AB
ADD A,R4
MOV R1,A
MOV A,#BindingTable & 0xff
ADD A,R2
MOV R2,A
MOV A,#(BindingTable >> 8) & 0xff
ADDC A,R1
MOV R3,A
SJMP ??bindFindEmpty_3
// 177 }
// 178 }
// 179
// 180 return ( (BindingEntry_t *)NULL );
??bindFindEmpty_2:
MOV R2,#0x0
MOV R3,#0x0
??bindFindEmpty_3:
LJMP ??Subroutine48_0 & 0xFFFF
// 181 }
CFI EndBlock cfiBlock3
// 182
// 183 /*********************************************************************
// 184 * @fn bindNumOfEntries()
// 185 *
// 186 * @brief This function returns the number of binding table entries.
// 187 * The return for this is the number of clusters in the
// 188 * table NOT the number of entries.
// 189 *
// 190 * @param none
// 191 *
// 192 * @return number of entries
// 193 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 194 uint16 bindNumOfEntries( void )
bindNumOfEntries:
CFI Block cfiBlock4 Using cfiCommon0
CFI Function bindNumOfEntries
CODE
// 195 {
MOV A,#-0x9
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 V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 9)
; Saved register size: 9
; Auto size: 0
// 196 uint16 x;
// 197 uint16 found;
// 198
// 199 for ( found = 0, x = 0; x < gNWK_MAX_BINDING_ENTRIES; x++ )
MOV R2,#0x0
MOV R3,#0x0
MOV R0,#0x0
MOV R1,#0x0
SJMP ??bindNumOfEntries_0
// 200 {
// 201 // It's empty if the index is "Not Found"
// 202 if ( BindingTable[x].srcEP != NV_BIND_EMPTY )
??bindNumOfEntries_1:
MOV A,R0
MOV R4,A
MOV A,R1
MOV R5,A
MOV A,R4
MOV B,#0xe
MUL AB
MOV R4,A
MOV R6,B
MOV B,#0xe
MOV A,R5
MUL AB
ADD A,R6
MOV R5,A
MOV A,#BindingTable & 0xff
ADD A,R4
MOV DPL,A
MOV A,#(BindingTable >> 8) & 0xff
ADDC A,R5
MOV DPH,A
MOVX A,@DPTR
CPL A
JZ ??bindNumOfEntries_2
// 203 {
// 204 found += BindingTable[x].numClusterIds;
MOV A,R0
MOV R4,A
MOV A,R1
MOV R5,A
MOV A,R4
MOV B,#0xe
MUL AB
MOV R4,A
MOV B,#0xe
MOV A,R5
MUL AB
ADD A,R6
MOV R5,A
MOV A,#(BindingTable + 5) & 0xff
ADD A,R4
MOV DPL,A
MOV A,#((BindingTable + 5) >> 8) & 0xff
ADDC A,R5
MOV DPH,A
MOVX A,@DPTR
MOV R4,A
MOV A,R2
ADD A,R4
MOV R2,A
CLR A
ADDC A,R3
MOV R3,A
// 205 }
// 206 }
??bindNumOfEntries_2:
INC R0
MOV A,R0
JNZ ??bindNumOfEntries_0
INC R1
??bindNumOfEntries_0:
MOV DPTR,#gNWK_MAX_BINDING_ENTRIES
LCALL ??Subroutine39_0 & 0xFFFF
??CrossCallReturnLabel_56:
CLR C
MOV A,R0
SUBB A,R4
MOV A,R1
SUBB A,R5
JC ??bindNumOfEntries_1
// 207
// 208 return ( found );
LJMP ?Subroutine2 & 0xFFFF
// 209 }
CFI EndBlock cfiBlock4
// 210
// 211 /*********************************************************************
// 212 * @fn bindCapacity()
// 213 *
// 214 * @brief This function returns the number of binding entries
// 215 * possible and used.
// 216 *
// 217 * @param maxEntries - pointer to a place to put the max entries
// 218 * @param usedEntries - pointer to a place to put the number
// 219 * of used entries
// 220 *
// 221 * @return none
// 222 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 223 void bindCapacity( uint16 *maxEntries, uint16 *usedEntries )
bindCapacity:
CFI Block cfiBlock5 Using cfiCommon0
CFI Function bindCapacity
CODE
// 224 {
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
MOV A,R2
MOV R6,A
MOV A,R3
MOV R7,A
// 225 uint16 x;
// 226 uint16 used;
// 227
// 228 for ( used = 0, x = 0; x < gNWK_MAX_BINDING_ENTRIES; x++ )
MOV ?V0,#0x0
MOV ?V1,#0x0
MOV R0,#0x0
MOV R1,#0x0
SJMP ??bindCapacity_0
// 229 {
// 230 // It's empty if the index is "Not Found"
// 231 if ( BindingTable[x].srcEP != NV_BIND_EMPTY )
??bindCapacity_1:
LCALL ?Subroutine21 & 0xFFFF
??CrossCallReturnLabel_68:
CPL A
JZ ??bindCapacity_2
// 232 {
// 233 used++;
INC ?V0
MOV A,?V0
JNZ ??bindCapacity_2
INC ?V1
// 234 }
// 235 }
??bindCapacity_2:
INC R0
MOV A,R0
JNZ ??bindCapacity_0
INC R1
??bindCapacity_0:
LCALL ?Subroutine7 & 0xFFFF
??CrossCallReturnLabel_1:
JC ??bindCapacity_1
// 236
// 237 *maxEntries = gNWK_MAX_BINDING_ENTRIES;
LCALL ?Subroutine15 & 0xFFFF
??CrossCallReturnLabel_16:
MOV DPL,R6
MOV DPH,R7
MOV A,R0
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
// 238 *usedEntries = used;
MOV DPL,R4
MOV DPH,R5
LCALL ?Subroutine20 & 0xFFFF
// 239 }
??CrossCallReturnLabel_53:
LJMP ?Subroutine3 & 0xFFFF
CFI EndBlock cfiBlock5
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine20:
CFI Block cfiCond6 Using cfiCommon0
CFI Function bindCapacity
CFI Conditional ??CrossCallReturnLabel_53
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 11)
CFI Block cfiCond7 Using cfiCommon0
CFI (cfiCond7) Function bindUpdateAddr
CFI (cfiCond7) Conditional ??CrossCallReturnLabel_54
CFI (cfiCond7) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond7) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond7) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond7) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond7) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond7) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond7) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond7) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond7) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond7) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond7) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond7) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond7) CFA_SP SP+-2
CFI (cfiCond7) CFA_XSP16 add(XSP16, 21)
CFI Block cfiCond8 Using cfiCommon0
CFI (cfiCond8) Function bindUpdateAddr
CFI (cfiCond8) Conditional ??CrossCallReturnLabel_55
CFI (cfiCond8) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond8) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond8) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond8) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond8) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond8) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond8) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond8) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond8) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond8) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond8) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond8) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond8) CFA_SP SP+-2
CFI (cfiCond8) CFA_XSP16 add(XSP16, 21)
CFI Block cfiPicker9 Using cfiCommon1
CFI (cfiPicker9) NoFunction
CFI (cfiPicker9) Picker
MOV A,?V0
CFI EndBlock cfiCond6
CFI EndBlock cfiCond7
CFI EndBlock cfiCond8
CFI EndBlock cfiPicker9
REQUIRE ??Subroutine38_0
; // Fall through to label ??Subroutine38_0
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
??Subroutine38_0:
CFI Block cfiCond10 Using cfiCommon0
CFI Function bindAddEntry
CFI Conditional ??CrossCallReturnLabel_52
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 18)
CFI Block cfiCond11 Using cfiCommon0
CFI (cfiCond11) Function bindCapacity
CFI (cfiCond11) Conditional ??CrossCallReturnLabel_53
CFI (cfiCond11) R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond11) VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond11) V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond11) V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond11) V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond11) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond11) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond11) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond11) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond11) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond11) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond11) CFA_SP SP+-2
CFI (cfiCond11) CFA_XSP16 add(XSP16, 11)
CFI Block cfiCond12 Using cfiCommon0
CFI (cfiCond12) Function bindUpdateAddr
CFI (cfiCond12) Conditional ??CrossCallReturnLabel_54
CFI (cfiCond12) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond12) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond12) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond12) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond12) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond12) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond12) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond12) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond12) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond12) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond12) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond12) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond12) CFA_SP SP+-2
CFI (cfiCond12) CFA_XSP16 add(XSP16, 21)
CFI Block cfiCond13 Using cfiCommon0
CFI (cfiCond13) Function bindUpdateAddr
CFI (cfiCond13) Conditional ??CrossCallReturnLabel_55
CFI (cfiCond13) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond13) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond13) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond13) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond13) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond13) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond13) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond13) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond13) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond13) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond13) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond13) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond13) CFA_SP SP+-2
CFI (cfiCond13) CFA_XSP16 add(XSP16, 21)
CFI Block cfiPicker14 Using cfiCommon1
CFI (cfiPicker14) NoFunction
CFI (cfiPicker14) Picker
MOVX @DPTR,A
INC DPTR
MOV A,?V1
MOVX @DPTR,A
RET
CFI EndBlock cfiCond10
CFI EndBlock cfiCond11
CFI EndBlock cfiCond12
CFI EndBlock cfiCond13
CFI EndBlock cfiPicker14
// 240
// 241 /*********************************************************************
// 242 * @fn bindAddEntry()
// 243 *
// 244 * @brief This function is used to Add an entry to the binding table
// 245 *
// 246 * @param srcAddr - source Address
// 247 * @param srcEpInt - source endpoint
// 248 * @param dstAddr - destination Address
// 249 * @param dstEpInt - destination endpoint
// 250 * @param numClusterIds - number of cluster Ids in the list
// 251 * @param clusterIds - pointer to the Object ID list
// 252 *
// 253 * @return pointer to binding table entry, NULL if not added
// 254 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 255 BindingEntry_t *bindAddEntry( byte srcEpInt,
bindAddEntry:
CFI Block cfiBlock15 Using cfiCommon0
CFI Function bindAddEntry
CODE
// 256 zAddrType_t *dstAddr, byte dstEpInt,
// 257 byte numClusterIds, uint16 *clusterIds )
// 258 {
FUNCALL bindAddEntry, bindAddrMgrLocalLoad
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 18, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 18, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL bindAddEntry, bindAddrIndexGet
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 18, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 18, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL bindAddEntry, bindIsClusterIDinList
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 18, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 18, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL bindAddEntry, bindAddClusterIdToList
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 18, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 18, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL bindAddEntry, bindFindEmpty
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 18, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 18, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL bindAddEntry, osal_memcpy
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 21, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 21, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
REQUIRE ?V0
REQUIRE ?V1
REQUIRE ?V2
REQUIRE ?V3
REQUIRE ?V4
REQUIRE ?V5
REQUIRE ?V6
MOV A,#-0xf
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 V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 15)
; Saved register size: 15
; Auto size: 3
MOV A,#-0x3
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 18)
MOV A,#0x2
LCALL ?XSTACK_DISP0_8
MOV A,R4
MOVX @DPTR,A
MOV ?V6,R1
MOV ?V0,R2
MOV ?V1,R3
MOV ?V3,R5
// 259 uint8 index;
// 260 BindingEntry_t* entry;
// 261 bindFields_t fields;
// 262
// 263 // initialize results
// 264 entry = NULL;
MOV R6,#0x0
MOV R7,#0x0
// 265
// 266 // make sure local addresses have been loaded
// 267 bindAddrMgrLocalLoad();
; Setup parameters for call to function bindAddrMgrLocalLoad
LCALL `??bindAddrMgrLocalLoad::?relay`; Banked call to: bindAddrMgrLocalLoad
// 268
// 269 // setup fields
// 270 fields.dstIndex = bindAddrIndexGet( dstAddr );
; Setup parameters for call to function bindAddrIndexGet
MOV R2,?V0
MOV R3,?V1
LCALL `??bindAddrIndexGet::?relay`; Banked call to: bindAddrIndexGet
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
// 271 fields.srcEP = srcEpInt;
// 272
// 273 if ( dstAddr->addrMode == AddrGroup )
MOV DPL,?V0
MOV DPH,?V1
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
XRL A,#0x1
JNZ ??bindAddEntry_0
// 274 {
// 275 fields.dstAddrMode = DSTGROUPMODE_GROUP;
MOV ?V1,#0x1
// 276 fields.dstEP = 0;
MOV ?V0,#0x0
SJMP ??bindAddEntry_1
// 277 }
// 278 else
// 279 {
// 280 fields.dstAddrMode = DSTGROUPMODE_ADDR;
??bindAddEntry_0:
MOV ?V1,#0x0
// 281 fields.dstEP = dstEpInt;
MOV A,#0x2
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV ?V0,A
// 282 }
// 283
// 284 if ( fields.dstIndex != INVALID_NODE_ADDR )
??bindAddEntry_1:
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
XRL A,#0xfe
JNZ ??bindAddEntry_2
INC DPTR
MOVX A,@DPTR
CPL A
??bindAddEntry_2:
JNZ $+5
LJMP ??bindAddEntry_3 & 0xFFFF
// 285 {
// 286 for ( index = 0; index < gNWK_MAX_BINDING_ENTRIES; index++ )
MOV ?V2,#0x0
SJMP ??bindAddEntry_4
??bindAddEntry_5:
INC ?V2
??bindAddEntry_4:
MOV DPTR,#gNWK_MAX_BINDING_ENTRIES
LCALL ?Subroutine15 & 0xFFFF
??CrossCallReturnLabel_17:
CLR C
MOV A,?V2
SUBB A,R0
CLR A
SUBB A,R1
JC $+5
LJMP ??bindAddEntry_6 & 0xFFFF
// 287 {
// 288 if ( ( fields.srcEP == BindingTable[index].srcEP ) &&
// 289 ( fields.dstAddrMode == BindingTable[index].dstGroupMode ) &&
// 290 ( fields.dstIndex == BindingTable[index].dstIdx ) &&
// 291 ( fields.dstEP == BindingTable[index].dstEP ) )
MOV A,?V2
MOV B,#0xe
MUL AB
MOV R0,A
MOV R1,B
LCALL ??Subroutine44_0 & 0xFFFF
??CrossCallReturnLabel_75:
XRL A,?V6
JNZ ??bindAddEntry_5
LCALL ?Subroutine16 & 0xFFFF
??CrossCallReturnLabel_19:
XRL A,?V1
JNZ ??bindAddEntry_5
LCALL ?Subroutine24 & 0xFFFF
??CrossCallReturnLabel_83:
MOV A,?V2
MOV B,#0xe
MUL AB
MOV R2,A
MOV R4,B
MOV A,R4
MOV R3,A
MOV A,#(BindingTable + 2) & 0xff
ADD A,R2
MOV DPL,A
MOV A,#((BindingTable + 2) >> 8) & 0xff
LCALL ??Subroutine41_0 & 0xFFFF
??CrossCallReturnLabel_60:
XRL A,R0
JNZ ??bindAddEntry_7
INC DPTR
MOVX A,@DPTR
XRL A,R1
??bindAddEntry_7:
JNZ ??bindAddEntry_5
MOV A,R4
MOV R1,A
MOV A,#(BindingTable + 4) & 0xff
ADD A,R2
MOV DPL,A
MOV A,#((BindingTable + 4) >> 8) & 0xff
ADDC A,R1
MOV DPH,A
MOVX A,@DPTR
XRL A,?V0
JNZ ??bindAddEntry_5
// 292 {
// 293 entry = &BindingTable[index];
MOV A,#BindingTable & 0xff
ADD A,R2
MOV R6,A
MOV A,#(BindingTable >> 8) & 0xff
ADDC A,R1
MOV R7,A
// 294
// 295 // break from loop
// 296 break;
// 297 }
// 298 }
// 299
// 300 if ( entry != NULL )
// 301 {
// 302 // Loop through the cluster IDs
// 303 for ( index = 0; index < numClusterIds; index++ )
MOV ?V2,#0x0
??bindAddEntry_8:
MOV A,?V2
CLR C
SUBB A,?V3
JC $+5
LJMP ??bindAddEntry_3 & 0xFFFF
// 304 {
// 305 // Found - is the cluster already defined?
// 306 if ( bindIsClusterIDinList( entry, clusterIds[index] ) == FALSE )
; Setup parameters for call to function bindIsClusterIDinList
MOV R0,?V2
MOV A,R0
ADD A,R0
MOV R0,A
CLR A
RLC A
MOV R1,A
MOV A,#0x12
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine11 & 0xFFFF
??CrossCallReturnLabel_10:
LCALL `??bindIsClusterIDinList::?relay`; Banked call to: bindIsClusterIDinList
MOV A,R1
JNZ ??bindAddEntry_9
// 307 {
// 308 // Nope, add this cluster
// 309 if ( bindAddClusterIdToList( entry, clusterIds[index] ) == FALSE )
; Setup parameters for call to function bindAddClusterIdToList
MOV R0,?V2
MOV A,R0
ADD A,R0
MOV R0,A
CLR A
RLC A
MOV R1,A
MOV A,#0x12
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine11 & 0xFFFF
??CrossCallReturnLabel_11:
LCALL `??bindAddClusterIdToList::?relay`; Banked call to: bindAddClusterIdToList
MOV A,R1
JNZ ??bindAddEntry_9
// 310 {
// 311 // Indicate error if cluster list was full
// 312 entry = NULL;
MOV R6,#0x0
MOV R7,#0x0
// 313 }
// 314 }
// 315 }
??bindAddEntry_9:
INC ?V2
SJMP ??bindAddEntry_8
// 316 }
// 317 else
// 318 {
// 319 // Find an empty slot
// 320 entry = bindFindEmpty();
??bindAddEntry_6:
; Setup parameters for call to function bindFindEmpty
LCALL `??bindFindEmpty::?relay`; Banked call to: bindFindEmpty
MOV ?V4,R2
MOV ?V5,R3
MOV R6,?V4
MOV R7,?V5
// 321
// 322 // Check against the maximum number allowed
// 323 if ( entry != NULL )
MOV A,R2
ORL A,R7
JZ ??bindAddEntry_3
// 324 {
// 325 // Add new entry
// 326 entry->srcEP = fields.srcEP;
MOV DPL,R2
MOV DPH,R3
MOV A,?V6
LCALL ??Subroutine38_0 & 0xFFFF
// 327 entry->dstGroupMode = fields.dstAddrMode;
// 328 entry->dstIdx = fields.dstIndex;
??CrossCallReturnLabel_52:
LCALL ?Subroutine24 & 0xFFFF
??CrossCallReturnLabel_84:
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
MOV A,R0
MOVX @DPTR,A
INC DPTR
MOV A,R1
LCALL ?Subroutine32 & 0xFFFF
// 329 entry->dstEP = fields.dstEP;
??CrossCallReturnLabel_42:
MOV A,?V0
MOVX @DPTR,A
// 330
// 331 if ( numClusterIds > gMAX_BINDING_CLUSTER_IDS )
MOV DPTR,#gMAX_BINDING_CLUSTER_IDS
CLR A
MOVC A,@A+DPTR
CLR C
SUBB A,?V3
JNC ??bindAddEntry_10
// 332 {
// 333 numClusterIds = gMAX_BINDING_CLUSTER_IDS;
CLR A
MOVC A,@A+DPTR
MOV ?V3,A
// 334 }
// 335
// 336 entry->numClusterIds = numClusterIds;
??bindAddEntry_10:
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOV A,?V3
MOVX @DPTR,A
// 337
// 338 osal_memcpy( entry->clusterIdList,
// 339 clusterIds,
// 340 numClusterIds * sizeof(uint16) );
; Setup parameters for call to function osal_memcpy
MOV A,#0x12
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV ?V0,A
INC DPTR
MOVX A,@DPTR
MOV ?V1,A
MOV ?V2,#0x0
MOV R0,#?V0
LCALL ?PUSH_XSTACK_I_THREE
CFI CFA_XSP16 add(XSP16, 21)
MOV R4,?V3
MOV A,R4
ADD A,R4
MOV R4,A
CLR A
RLC A
MOV R5,A
MOV A,R2
ADD A,#0x6
MOV R2,A
CLR A
ADDC A,R7
MOV R3,A
LCALL `??osal_memcpy::?relay`; Banked call to: osal_memcpy
MOV A,#0x3
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 18)
// 341 }
// 342 }
// 343 }
// 344
// 345 return entry;
??bindAddEntry_3:
MOV A,R6
MOV R2,A
MOV A,R7
MOV R3,A
MOV A,#0x3
LCALL ?DEALLOC_XSTACK8
CFI EndBlock cfiBlock15
REQUIRE ?Subroutine4
; // Fall through to label ?Subroutine4
// 346 }
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine4:
CFI Block cfiBlock16 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 15)
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
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)))
MOV R7,#0x7
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock16
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine15:
CFI Block cfiCond17 Using cfiCommon0
CFI Function bindCapacity
CFI Conditional ??CrossCallReturnLabel_16
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 11)
CFI Block cfiCond18 Using cfiCommon0
CFI (cfiCond18) Function bindAddEntry
CFI (cfiCond18) Conditional ??CrossCallReturnLabel_17
CFI (cfiCond18) R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI (cfiCond18) VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond18) V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond18) V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond18) V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond18) V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond18) V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond18) V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond18) V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond18) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond18) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond18) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond18) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond18) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond18) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond18) CFA_SP SP+-2
CFI (cfiCond18) CFA_XSP16 add(XSP16, 18)
CFI Block cfiCond19 Using cfiCommon0
CFI (cfiCond19) Function BindInitNV
CFI (cfiCond19) Conditional ??CrossCallReturnLabel_18
CFI (cfiCond19) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond19) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond19) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond19) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond19) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond19) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond19) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond19) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond19) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond19) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond19) CFA_SP SP+-2
CFI (cfiCond19) CFA_XSP16 add(XSP16, 12)
CFI Block cfiPicker20 Using cfiCommon1
CFI (cfiPicker20) NoFunction
CFI (cfiPicker20) Picker
LCALL ??Subroutine42_0 & 0xFFFF
??CrossCallReturnLabel_70:
RET
CFI EndBlock cfiCond17
CFI EndBlock cfiCond18
CFI EndBlock cfiCond19
CFI EndBlock cfiPicker20
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine11:
CFI Block cfiCond21 Using cfiCommon0
CFI Function bindAddEntry
CFI Conditional ??CrossCallReturnLabel_10
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 18)
CFI Block cfiCond22 Using cfiCommon0
CFI (cfiCond22) Function bindAddEntry
CFI (cfiCond22) Conditional ??CrossCallReturnLabel_11
CFI (cfiCond22) R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI (cfiCond22) VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond22) V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond22) V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond22) V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond22) V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond22) V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond22) V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond22) V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond22) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond22) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond22) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond22) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond22) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond22) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond22) CFA_SP SP+-2
CFI (cfiCond22) CFA_XSP16 add(XSP16, 18)
CFI Block cfiPicker23 Using cfiCommon1
CFI (cfiPicker23) NoFunction
CFI (cfiPicker23) Picker
MOVX A,@DPTR
ADD A,R0
MOV R2,A
INC DPTR
MOVX A,@DPTR
ADDC A,R1
MOV DPL,R2
MOV DPH,A
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
MOV A,R6
MOV R2,A
MOV A,R7
MOV R3,A
RET
CFI EndBlock cfiCond21
CFI EndBlock cfiCond22
CFI EndBlock cfiPicker23
// 347
// 348 /*********************************************************************
// 349 * @fn bindRemoveEntry
// 350 *
// 351 * @brief Removes a binding table entry.
// 352 *
// 353 * @param pBind - pointer to binding table entry to delete
// 354 *
// 355 * @return TRUE if Removed, FALSE if not
// 356 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 357 byte bindRemoveEntry( BindingEntry_t *pBind )
bindRemoveEntry:
CFI Block cfiBlock24 Using cfiCommon0
CFI Function bindRemoveEntry
CODE
// 358 {
FUNCALL bindRemoveEntry, osal_memset
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
// 359 osal_memset( pBind, 0xFF, gBIND_REC_SIZE );
; Setup parameters for call to function osal_memset
LCALL ?Subroutine13 & 0xFFFF
??CrossCallReturnLabel_58:
MOV R1,#-0x1
LCALL `??osal_memset::?relay`; Banked call to: osal_memset
// 360 return ( TRUE );
MOV R1,#0x1
LJMP ??Subroutine48_0 & 0xFFFF
// 361 }
CFI EndBlock cfiBlock24
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine13:
CFI Block cfiCond25 Using cfiCommon0
CFI Function InitBindingTable
CFI Conditional ??CrossCallReturnLabel_57
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 10)
CFI Block cfiCond26 Using cfiCommon0
CFI (cfiCond26) Function bindRemoveEntry
CFI (cfiCond26) Conditional ??CrossCallReturnLabel_58
CFI (cfiCond26) DPL0 Frame(CFA_SP, 4)
CFI (cfiCond26) DPH0 Frame(CFA_SP, 5)
CFI (cfiCond26) CFA_SP SP+-7
CFI Block cfiCond27 Using cfiCommon0
CFI (cfiCond27) Function BindWriteNV
CFI (cfiCond27) Conditional ??CrossCallReturnLabel_59
CFI (cfiCond27) R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond27) VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond27) V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond27) V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond27) V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond27) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond27) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond27) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond27) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond27) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond27) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond27) CFA_SP SP+-2
CFI (cfiCond27) CFA_XSP16 add(XSP16, 30)
CFI Block cfiPicker28 Using cfiCommon1
CFI (cfiPicker28) NoFunction
CFI (cfiPicker28) Picker
MOV DPTR,#gBIND_REC_SIZE
CFI EndBlock cfiCond25
CFI EndBlock cfiCond26
CFI EndBlock cfiCond27
CFI EndBlock cfiPicker28
REQUIRE ??Subroutine39_0
; // Fall through to label ??Subroutine39_0
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
??Subroutine39_0:
CFI Block cfiCond29 Using cfiCommon0
CFI Function bindNumOfEntries
CFI Conditional ??CrossCallReturnLabel_56
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 9)
CFI Block cfiCond30 Using cfiCommon0
CFI (cfiCond30) Function InitBindingTable
CFI (cfiCond30) Conditional ??CrossCallReturnLabel_57
CFI (cfiCond30) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond30) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond30) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond30) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond30) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond30) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond30) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond30) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond30) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond30) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond30) CFA_SP SP+-2
CFI (cfiCond30) CFA_XSP16 add(XSP16, 10)
CFI Block cfiCond31 Using cfiCommon0
CFI (cfiCond31) Function bindRemoveEntry
CFI (cfiCond31) Conditional ??CrossCallReturnLabel_58
CFI (cfiCond31) DPL0 Frame(CFA_SP, 4)
CFI (cfiCond31) DPH0 Frame(CFA_SP, 5)
CFI (cfiCond31) CFA_SP SP+-7
CFI Block cfiCond32 Using cfiCommon0
CFI (cfiCond32) Function BindWriteNV
CFI (cfiCond32) Conditional ??CrossCallReturnLabel_59
CFI (cfiCond32) R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond32) VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond32) V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond32) V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond32) V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond32) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond32) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond32) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond32) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond32) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond32) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond32) CFA_SP SP+-2
CFI (cfiCond32) CFA_XSP16 add(XSP16, 30)
CFI Block cfiPicker33 Using cfiCommon1
CFI (cfiPicker33) NoFunction
CFI (cfiPicker33) Picker
CLR A
MOVC A,@A+DPTR
MOV R4,A
MOV A,#0x1
MOVC A,@A+DPTR
MOV R5,A
RET
CFI EndBlock cfiCond29
CFI EndBlock cfiCond30
CFI EndBlock cfiCond31
CFI EndBlock cfiCond32
CFI EndBlock cfiPicker33
// 362
// 363 /*********************************************************************
// 364 * @fn bindIsClusterIDinList()
// 365 *
// 366 * @brief Is the clusterID in the clusterID list?
// 367 *
// 368 * @param enter - binding table entry
// 369 * @param clusterId - Cluster ID to look for
// 370 *
// 371 * @return TRUE if found, FALSE if not found
// 372 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 373 byte bindIsClusterIDinList( BindingEntry_t *entry, uint16 clusterId )
bindIsClusterIDinList:
CFI Block cfiBlock34 Using cfiCommon0
CFI Function bindIsClusterIDinList
CODE
// 374 {
MOV A,#-0x9
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 V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 9)
; Saved register size: 9
; Auto size: 0
// 375 uint8 x;
// 376
// 377 if ( entry != NULL )
MOV A,R2
ORL A,R3
JZ ??bindIsClusterIDinList_0
// 378 {
// 379 for ( x = 0; x < entry->numClusterIds; x++ )
MOV R6,#0x0
SJMP ??bindIsClusterIDinList_1
??bindIsClusterIDinList_2:
INC R6
??bindIsClusterIDinList_1:
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV R0,A
MOV A,R6
CLR C
SUBB A,R0
JNC ??bindIsClusterIDinList_0
// 380 {
// 381 if ( entry->clusterIdList[x] == clusterId )
MOV A,R6
ADD A,0xE0 /* A */
MOV R0,A
CLR A
RLC A
MOV R1,A
MOV A,R2
ADD A,R0
MOV DPL,A
MOV A,R3
ADDC A,R1
MOV DPH,A
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
XRL A,R4
JNZ ??bindIsClusterIDinList_3
INC DPTR
MOVX A,@DPTR
XRL A,R5
??bindIsClusterIDinList_3:
JNZ ??bindIsClusterIDinList_2
// 382 {
// 383 return ( TRUE );
MOV R1,#0x1
SJMP ??bindIsClusterIDinList_4
// 384 }
// 385 }
// 386 }
// 387
// 388 return ( FALSE );
??bindIsClusterIDinList_0:
MOV R1,#0x0
??bindIsClusterIDinList_4:
LJMP ?Subroutine2 & 0xFFFF
// 389 }
CFI EndBlock cfiBlock34
// 390
// 391 /*********************************************************************
// 392 * @fn bindRemoveClusterIdFromList()
// 393 *
// 394 * @brief Removes a ClusterID from a list of ClusterIDs.
// 395 *
// 396 * @param enter - binding table entry
// 397 * @param clusterId - Cluster ID to look for
// 398 *
// 399 * @return TRUE if there are at least 1 clusterID left, FALSE if none
// 400 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 401 byte bindRemoveClusterIdFromList( BindingEntry_t *entry, uint16 clusterId )
bindRemoveClusterIdFromList:
CFI Block cfiBlock35 Using cfiCommon0
CFI Function bindRemoveClusterIdFromList
CODE
// 402 {
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
// 403 byte x;
// 404 uint16 *listPtr;
// 405 byte numIds;
// 406
// 407 if ( entry )
MOV A,R2
ORL A,R3
JZ ??bindRemoveClusterIdFromList_0
// 408 {
// 409 if ( entry->numClusterIds > 0 )
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
JZ ??bindRemoveClusterIdFromList_0
// 410 {
// 411 listPtr = entry->clusterIdList;
MOV A,R2
ADD A,#0x6
MOV R0,A
CLR A
ADDC A,R3
MOV R1,A
// 412 numIds = entry->numClusterIds;
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV ?V1,A
// 413
// 414 // Copy the new list over
// 415 for ( x = 0; x < numIds; x++ )
MOV ?V0,#0x0
SJMP ??bindRemoveClusterIdFromList_1
// 416 {
// 417 if ( entry->clusterIdList[x] != clusterId )
// 418 {
// 419 *listPtr++ = entry->clusterIdList[x];
// 420 }
// 421 else
// 422 {
// 423 entry->numClusterIds--;
??bindRemoveClusterIdFromList_2:
MOV A,R2
ADD A,#0x5
MOV DPL,A
CLR A
LCALL ??Subroutine41_0 & 0xFFFF
??CrossCallReturnLabel_61:
DEC A
MOVX @DPTR,A
// 424 if ( entry->numClusterIds == 0 )
JZ ??bindRemoveClusterIdFromList_0
// 425 {
// 426 break;
// 427 }
// 428 }
??bindRemoveClusterIdFromList_3:
INC ?V0
??bindRemoveClusterIdFromList_1:
MOV A,?V0
CLR C
SUBB A,?V1
JNC ??bindRemoveClusterIdFromList_4
MOV R6,?V0
MOV A,R6
ADD A,R6
MOV R6,A
CLR A
RLC A
MOV R7,A
LCALL ?Subroutine25 & 0xFFFF
??CrossCallReturnLabel_32:
XRL A,R4
JNZ ??bindRemoveClusterIdFromList_5
INC DPTR
MOVX A,@DPTR
XRL A,R5
??bindRemoveClusterIdFromList_5:
JZ ??bindRemoveClusterIdFromList_2
MOV R6,?V0
MOV A,R6
ADD A,R6
MOV R6,A
LCALL ?Subroutine25 & 0xFFFF
// 429 }
// 430 }
// 431 }
??CrossCallReturnLabel_33:
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
MOV DPL,R0
MOV DPH,R1
MOV A,R6
MOVX @DPTR,A
INC DPTR
MOV A,R7
MOVX @DPTR,A
MOV A,R0
ADD A,#0x2
MOV R0,A
JNC ??bindRemoveClusterIdFromList_3
INC R1
SJMP ??bindRemoveClusterIdFromList_3
??bindRemoveClusterIdFromList_4:
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
JZ ??bindRemoveClusterIdFromList_0
// 432
// 433 if ( entry && (entry->numClusterIds > 0) )
// 434 {
// 435 return ( TRUE );
MOV R1,#0x1
SJMP ??bindRemoveClusterIdFromList_6
// 436 }
// 437 else
// 438 {
// 439 return ( FALSE );
??bindRemoveClusterIdFromList_0:
MOV R1,#0x0
// 440 }
??bindRemoveClusterIdFromList_6:
LJMP ?Subroutine3 & 0xFFFF
// 441 }
CFI EndBlock cfiBlock35
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine25:
CFI Block cfiCond36 Using cfiCommon0
CFI Function bindRemoveClusterIdFromList
CFI Conditional ??CrossCallReturnLabel_32
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 11)
CFI Block cfiCond37 Using cfiCommon0
CFI (cfiCond37) Function bindRemoveClusterIdFromList
CFI (cfiCond37) Conditional ??CrossCallReturnLabel_33
CFI (cfiCond37) R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond37) VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond37) V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond37) V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond37) V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond37) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond37) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond37) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond37) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond37) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond37) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond37) CFA_SP SP+-2
CFI (cfiCond37) CFA_XSP16 add(XSP16, 11)
CFI Block cfiPicker38 Using cfiCommon1
CFI (cfiPicker38) NoFunction
CFI (cfiPicker38) Picker
LCALL ?Subroutine35 & 0xFFFF
??CrossCallReturnLabel_49:
MOVX A,@DPTR
RET
CFI EndBlock cfiCond36
CFI EndBlock cfiCond37
CFI EndBlock cfiPicker38
// 442
// 443 /*********************************************************************
// 444 * @fn bindAddClusterIdToList()
// 445 *
// 446 * @brief Adds a ClusterID to a list of ClusterIDs.
// 447 *
// 448 * @param enter - binding table entry
// 449 * @param clusterId - Cluster ID to Add
// 450 *
// 451 * @return TRUE if Added, FALSE if not
// 452 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 453 byte bindAddClusterIdToList( BindingEntry_t *entry, uint16 clusterId )
bindAddClusterIdToList:
CFI Block cfiBlock39 Using cfiCommon0
CFI Function bindAddClusterIdToList
CODE
// 454 {
MOV A,#-0x9
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 V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 9)
; Saved register size: 9
; Auto size: 0
// 455 if ( entry && entry->numClusterIds < gMAX_BINDING_CLUSTER_IDS )
MOV A,R2
ORL A,R3
JZ ??bindAddClusterIdToList_0
MOV DPTR,#gMAX_BINDING_CLUSTER_IDS
CLR A
MOVC A,@A+DPTR
MOV R0,A
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
CLR C
SUBB A,R0
JNC ??bindAddClusterIdToList_0
// 456 {
// 457 // Add the new one
// 458 entry->clusterIdList[entry->numClusterIds] = clusterId;
MOV A,R2
ADD A,#0x5
MOV R0,A
CLR A
ADDC A,R3
MOV R1,A
MOV DPL,R0
MOV DPH,A
MOVX A,@DPTR
ADD A,0xE0 /* A */
MOV R6,A
CLR A
RLC A
MOV R7,A
LCALL ?Subroutine35 & 0xFFFF
??CrossCallReturnLabel_48:
MOV A,R4
MOVX @DPTR,A
INC DPTR
MOV A,R5
MOVX @DPTR,A
// 459 entry->numClusterIds++;
MOV DPL,R0
MOV DPH,R1
MOVX A,@DPTR
INC A
MOVX @DPTR,A
// 460 return ( TRUE );
MOV R1,#0x1
SJMP ??bindAddClusterIdToList_1
// 461 }
// 462 return ( FALSE );
??bindAddClusterIdToList_0:
MOV R1,#0x0
??bindAddClusterIdToList_1:
CFI EndBlock cfiBlock39
REQUIRE ?Subroutine2
; // Fall through to label ?Subroutine2
// 463 }
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine2:
CFI Block cfiBlock40 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 9)
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
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)))
MOV R7,#0x1
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock40
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine35:
CFI Block cfiCond41 Using cfiCommon0
CFI Function bindRemoveClusterIdFromList
CFI Conditional ??CrossCallReturnLabel_49, ??CrossCallReturnLabel_32
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-4
CFI CFA_XSP16 add(XSP16, 11)
CFI Block cfiCond42 Using cfiCommon0
CFI (cfiCond42) Function bindRemoveClusterIdFromList
CFI (cfiCond42) Conditional ??CrossCallReturnLabel_49, ??CrossCallReturnLabel_33
CFI (cfiCond42) R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond42) VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond42) V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond42) V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond42) V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond42) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond42) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond42) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond42) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond42) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond42) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond42) CFA_SP SP+-4
CFI (cfiCond42) CFA_XSP16 add(XSP16, 11)
CFI Block cfiCond43 Using cfiCommon0
CFI (cfiCond43) Function bindAddClusterIdToList
CFI (cfiCond43) Conditional ??CrossCallReturnLabel_48
CFI (cfiCond43) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond43) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond43) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond43) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond43) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond43) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond43) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond43) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond43) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond43) CFA_SP SP+-2
CFI (cfiCond43) CFA_XSP16 add(XSP16, 9)
CFI Block cfiPicker44 Using cfiCommon1
CFI (cfiPicker44) NoFunction
CFI (cfiPicker44) Picker
MOV A,R2
ADD A,R6
MOV DPL,A
MOV A,R3
ADDC A,R7
MOV DPH,A
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
RET
CFI EndBlock cfiCond41
CFI EndBlock cfiCond42
CFI EndBlock cfiCond43
CFI EndBlock cfiPicker44
// 464
// 465 /*********************************************************************
// 466 * @fn bindFindExisting
// 467 *
// 468 * @brief Finds an existing src/epint to dst/epint bind record
// 469 *
// 470 * @param srcAddr - Source address
// 471 * @param srcEpInt - Source Endpoint/Interface
// 472 * @param dstAddr - Destination address
// 473 * @param dstEpInt - Destination Endpoint/Interface
// 474 *
// 475 * @return pointer to existing entry or NULL
// 476 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 477 BindingEntry_t *bindFindExisting( byte srcEpInt,
bindFindExisting:
CFI Block cfiBlock45 Using cfiCommon0
CFI Function bindFindExisting
CODE
// 478 zAddrType_t *dstAddr, byte dstEpInt )
// 479 {
FUNCALL bindFindExisting, bindingAddrMgsHelperFind
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 12, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 12, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
REQUIRE ?V0
REQUIRE ?V1
REQUIRE ?V2
REQUIRE ?V3
MOV A,#-0xc
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 V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 12)
; Saved register size: 12
; Auto size: 0
MOV ?V0,R1
MOV A,R2
MOV R6,A
MOV A,R3
MOV R7,A
MOV ?V1,R4
// 480 uint16 dstIdx;
// 481 uint16 x;
// 482
// 483 // Find the records in the assoc list
// 484 if ( dstAddr->addrMode == AddrGroup )
MOV DPL,R2
MOV DPH,A
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
XRL A,#0x1
JNZ ??bindFindExisting_0
// 485 {
// 486 dstIdx = dstAddr->addr.shortAddr;
MOV DPL,R2
MOV DPH,R3
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
SJMP ??CrossCallReturnLabel_38
// 487 }
// 488 else
// 489 {
// 490 dstIdx = bindingAddrMgsHelperFind( dstAddr );
??bindFindExisting_0:
; Setup parameters for call to function bindingAddrMgsHelperFind
LCALL ?Subroutine29 & 0xFFFF
// 491 }
// 492
// 493 if ( dstIdx == INVALID_NODE_ADDR )
??CrossCallReturnLabel_38:
MOV A,#-0x2
XRL A,R4
JNZ ??bindFindExisting_1
MOV A,#-0x1
XRL A,R5
??bindFindExisting_1:
JZ ??bindFindExisting_2
// 494 {
// 495 return ( (BindingEntry_t *)NULL );
// 496 }
// 497
// 498 // Start at the beginning
// 499 for ( x = 0; x < gNWK_MAX_BINDING_ENTRIES; x++ )
MOV R0,#0x0
MOV R1,#0x0
SJMP ??bindFindExisting_3
// 500 {
// 501 if ( (BindingTable[x].srcEP == srcEpInt) )
// 502 {
// 503 if ( ((dstAddr->addrMode == AddrGroup)
// 504 && (BindingTable[x].dstGroupMode == DSTGROUPMODE_GROUP)
// 505 && (dstIdx == BindingTable[x].dstIdx))
// 506 || ((dstAddr->addrMode != AddrGroup)
// 507 && (BindingTable[x].dstGroupMode == DSTGROUPMODE_ADDR)
// 508 && (dstIdx == BindingTable[x].dstIdx) && (BindingTable[x].dstEP == dstEpInt)) )
??bindFindExisting_4:
LCALL ?Subroutine26 & 0xFFFF
??CrossCallReturnLabel_34:
LCALL ??Subroutine41_0 & 0xFFFF
??CrossCallReturnLabel_62:
XRL A,#0x1
JNZ ??bindFindExisting_5
LCALL ?Subroutine27 & 0xFFFF
??CrossCallReturnLabel_36:
LCALL ??Subroutine41_0 & 0xFFFF
??CrossCallReturnLabel_63:
XRL A,R4
JNZ ??bindFindExisting_6
INC DPTR
MOVX A,@DPTR
XRL A,R5
??bindFindExisting_6:
JZ ??bindFindExisting_7
??bindFindExisting_5:
INC R0
MOV A,R0
JNZ ??bindFindExisting_3
INC R1
??bindFindExisting_3:
LCALL ?Subroutine7 & 0xFFFF
??CrossCallReturnLabel_2:
JNC ??bindFindExisting_2
LCALL ?Subroutine21 & 0xFFFF
??CrossCallReturnLabel_69:
XRL A,?V0
JNZ ??bindFindExisting_5
MOV DPL,R6
MOV DPH,R7
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
XRL A,#0x1
JZ ??bindFindExisting_4
LCALL ?Subroutine26 & 0xFFFF
??CrossCallReturnLabel_35:
LCALL ??Subroutine41_0 & 0xFFFF
??CrossCallReturnLabel_64:
JNZ ??bindFindExisting_5
LCALL ?Subroutine27 & 0xFFFF
??CrossCallReturnLabel_37:
LCALL ??Subroutine41_0 & 0xFFFF
??CrossCallReturnLabel_65:
XRL A,R4
JNZ ??bindFindExisting_8
INC DPTR
MOVX A,@DPTR
XRL A,R5
??bindFindExisting_8:
JNZ ??bindFindExisting_5
MOV A,R0
MOV R2,A
MOV A,R1
MOV R3,A
MOV A,R2
MOV B,#0xe
MUL AB
MOV R2,A
MOV B,#0xe
MOV A,R3
MUL AB
ADD A,?V2
MOV R3,A
MOV A,#(BindingTable + 4) & 0xff
ADD A,R2
MOV DPL,A
MOV A,#((BindingTable + 4) >> 8) & 0xff
LCALL ??Subroutine41_0 & 0xFFFF
??CrossCallReturnLabel_66:
XRL A,?V1
JNZ ??bindFindExisting_5
// 509 {
// 510 return ( &BindingTable[x] );
??bindFindExisting_7:
LCALL ?Subroutine22 & 0xFFFF
// 511 }
// 512 }
// 513 }
??CrossCallReturnLabel_27:
SJMP ??bindFindExisting_9
// 514
// 515 return ( (BindingEntry_t *)NULL );
??bindFindExisting_2:
MOV R2,#0x0
MOV R3,#0x0
??bindFindExisting_9:
LJMP ??Subroutine45_0 & 0xFFFF
// 516 }
CFI EndBlock cfiBlock45
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine27:
CFI Block cfiCond46 Using cfiCommon0
CFI Function bindFindExisting
CFI Conditional ??CrossCallReturnLabel_36
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 12)
CFI Block cfiCond47 Using cfiCommon0
CFI (cfiCond47) Function bindFindExisting
CFI (cfiCond47) Conditional ??CrossCallReturnLabel_37
CFI (cfiCond47) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond47) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond47) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond47) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond47) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond47) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond47) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond47) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond47) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond47) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond47) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond47) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond47) CFA_SP SP+-2
CFI (cfiCond47) CFA_XSP16 add(XSP16, 12)
CFI Block cfiPicker48 Using cfiCommon1
CFI (cfiPicker48) NoFunction
CFI (cfiPicker48) Picker
MOV A,R0
MOV R2,A
MOV A,R1
MOV R3,A
MOV A,R2
MOV B,#0xe
MUL AB
MOV R2,A
MOV B,#0xe
MOV A,R3
MUL AB
ADD A,?V2
MOV R3,A
MOV A,#(BindingTable + 2) & 0xff
ADD A,R2
MOV DPL,A
MOV A,#((BindingTable + 2) >> 8) & 0xff
RET
CFI EndBlock cfiCond46
CFI EndBlock cfiCond47
CFI EndBlock cfiPicker48
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine26:
CFI Block cfiCond49 Using cfiCommon0
CFI Function bindFindExisting
CFI Conditional ??CrossCallReturnLabel_34
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 12)
CFI Block cfiCond50 Using cfiCommon0
CFI (cfiCond50) Function bindFindExisting
CFI (cfiCond50) Conditional ??CrossCallReturnLabel_35
CFI (cfiCond50) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond50) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond50) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond50) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond50) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond50) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond50) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond50) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond50) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond50) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond50) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond50) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond50) CFA_SP SP+-2
CFI (cfiCond50) CFA_XSP16 add(XSP16, 12)
CFI Block cfiPicker51 Using cfiCommon1
CFI (cfiPicker51) NoFunction
CFI (cfiPicker51) Picker
MOV A,R0
MOV R2,A
MOV A,R1
MOV R3,A
MOV A,R2
MOV B,#0xe
MUL AB
MOV R2,A
MOV B,#0xe
MOV A,R3
MUL AB
ADD A,?V2
MOV R3,A
MOV A,#(BindingTable + 1) & 0xff
ADD A,R2
MOV DPL,A
MOV A,#((BindingTable + 1) >> 8) & 0xff
RET
CFI EndBlock cfiCond49
CFI EndBlock cfiCond50
CFI EndBlock cfiPicker51
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine21:
CFI Block cfiCond52 Using cfiCommon0
CFI Function bindCapacity
CFI Conditional ??CrossCallReturnLabel_68
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 11)
CFI Block cfiCond53 Using cfiCommon0
CFI (cfiCond53) Function bindFindExisting
CFI (cfiCond53) Conditional ??CrossCallReturnLabel_69
CFI (cfiCond53) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond53) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond53) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond53) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond53) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond53) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond53) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond53) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond53) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond53) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond53) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond53) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond53) CFA_SP SP+-2
CFI (cfiCond53) CFA_XSP16 add(XSP16, 12)
CFI Block cfiPicker54 Using cfiCommon1
CFI (cfiPicker54) NoFunction
CFI (cfiPicker54) Picker
MOV A,R0
MOV R2,A
MOV A,R1
MOV R3,A
MOV A,R2
MOV B,#0xe
MUL AB
MOV R2,A
MOV ?V2,B
MOV B,#0xe
MOV A,R3
MUL AB
ADD A,?V2
CFI EndBlock cfiCond52
CFI EndBlock cfiCond53
CFI EndBlock cfiPicker54
REQUIRE ??Subroutine40_0
; // Fall through to label ??Subroutine40_0
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
??Subroutine40_0:
CFI Block cfiCond55 Using cfiCommon0
CFI Function bindFindEmpty
CFI Conditional ??CrossCallReturnLabel_67
CFI DPL0 Frame(CFA_SP, 4)
CFI DPH0 Frame(CFA_SP, 5)
CFI CFA_SP SP+-7
CFI Block cfiCond56 Using cfiCommon0
CFI (cfiCond56) Function bindCapacity
CFI (cfiCond56) Conditional ??CrossCallReturnLabel_68
CFI (cfiCond56) R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond56) VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond56) V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond56) V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond56) V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond56) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond56) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond56) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond56) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond56) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond56) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond56) CFA_SP SP+-2
CFI (cfiCond56) CFA_XSP16 add(XSP16, 11)
CFI Block cfiCond57 Using cfiCommon0
CFI (cfiCond57) Function bindFindExisting
CFI (cfiCond57) Conditional ??CrossCallReturnLabel_69
CFI (cfiCond57) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond57) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond57) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond57) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond57) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond57) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond57) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond57) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond57) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond57) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond57) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond57) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond57) CFA_SP SP+-2
CFI (cfiCond57) CFA_XSP16 add(XSP16, 12)
CFI Block cfiPicker58 Using cfiCommon1
CFI (cfiPicker58) NoFunction
CFI (cfiPicker58) Picker
MOV R3,A
MOV A,#BindingTable & 0xff
ADD A,R2
MOV DPL,A
MOV A,#(BindingTable >> 8) & 0xff
CFI EndBlock cfiCond55
CFI EndBlock cfiCond56
CFI EndBlock cfiCond57
CFI EndBlock cfiPicker58
REQUIRE ??Subroutine41_0
; // Fall through to label ??Subroutine41_0
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
??Subroutine41_0:
CFI Block cfiCond59 Using cfiCommon0
CFI Function bindAddEntry
CFI Conditional ??CrossCallReturnLabel_60
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 18)
CFI Block cfiCond60 Using cfiCommon0
CFI (cfiCond60) Function bindRemoveClusterIdFromList
CFI (cfiCond60) Conditional ??CrossCallReturnLabel_61
CFI (cfiCond60) R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond60) VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond60) V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond60) V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond60) V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond60) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond60) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond60) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond60) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond60) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond60) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond60) CFA_SP SP+-2
CFI (cfiCond60) CFA_XSP16 add(XSP16, 11)
CFI Block cfiCond61 Using cfiCommon0
CFI (cfiCond61) Function bindFindExisting
CFI (cfiCond61) Conditional ??CrossCallReturnLabel_62
CFI (cfiCond61) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond61) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond61) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond61) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond61) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond61) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond61) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond61) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond61) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond61) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond61) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond61) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond61) CFA_SP SP+-2
CFI (cfiCond61) CFA_XSP16 add(XSP16, 12)
CFI Block cfiCond62 Using cfiCommon0
CFI (cfiCond62) Function bindFindExisting
CFI (cfiCond62) Conditional ??CrossCallReturnLabel_63
CFI (cfiCond62) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond62) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond62) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond62) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond62) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond62) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond62) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond62) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond62) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond62) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond62) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond62) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond62) CFA_SP SP+-2
CFI (cfiCond62) CFA_XSP16 add(XSP16, 12)
CFI Block cfiCond63 Using cfiCommon0
CFI (cfiCond63) Function bindFindExisting
CFI (cfiCond63) Conditional ??CrossCallReturnLabel_64
CFI (cfiCond63) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond63) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond63) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond63) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond63) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond63) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond63) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond63) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond63) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond63) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond63) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond63) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond63) CFA_SP SP+-2
CFI (cfiCond63) CFA_XSP16 add(XSP16, 12)
CFI Block cfiCond64 Using cfiCommon0
CFI (cfiCond64) Function bindFindExisting
CFI (cfiCond64) Conditional ??CrossCallReturnLabel_65
CFI (cfiCond64) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond64) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond64) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond64) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond64) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond64) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond64) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond64) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond64) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond64) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond64) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond64) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond64) CFA_SP SP+-2
CFI (cfiCond64) CFA_XSP16 add(XSP16, 12)
CFI Block cfiCond65 Using cfiCommon0
CFI (cfiCond65) Function bindFindExisting
CFI (cfiCond65) Conditional ??CrossCallReturnLabel_66
CFI (cfiCond65) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond65) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond65) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond65) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond65) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond65) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond65) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond65) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond65) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond65) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond65) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond65) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond65) CFA_SP SP+-2
CFI (cfiCond65) CFA_XSP16 add(XSP16, 12)
CFI Block cfiCond66 Using cfiCommon0
CFI (cfiCond66) Function bindFindEmpty
CFI (cfiCond66) Conditional ??CrossCallReturnLabel_67
CFI (cfiCond66) DPL0 Frame(CFA_SP, 4)
CFI (cfiCond66) DPH0 Frame(CFA_SP, 5)
CFI (cfiCond66) CFA_SP SP+-7
CFI Block cfiCond67 Using cfiCommon0
CFI (cfiCond67) Function bindCapacity
CFI (cfiCond67) Conditional ??CrossCallReturnLabel_68
CFI (cfiCond67) R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond67) VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond67) V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond67) V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond67) V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond67) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond67) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond67) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond67) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond67) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond67) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond67) CFA_SP SP+-2
CFI (cfiCond67) CFA_XSP16 add(XSP16, 11)
CFI Block cfiCond68 Using cfiCommon0
CFI (cfiCond68) Function bindFindExisting
CFI (cfiCond68) Conditional ??CrossCallReturnLabel_69
CFI (cfiCond68) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond68) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond68) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond68) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond68) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond68) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond68) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond68) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond68) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond68) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond68) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond68) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond68) CFA_SP SP+-2
CFI (cfiCond68) CFA_XSP16 add(XSP16, 12)
CFI Block cfiPicker69 Using cfiCommon1
CFI (cfiPicker69) NoFunction
CFI (cfiPicker69) Picker
ADDC A,R3
MOV DPH,A
MOVX A,@DPTR
RET
CFI EndBlock cfiCond59
CFI EndBlock cfiCond60
CFI EndBlock cfiCond61
CFI EndBlock cfiCond62
CFI EndBlock cfiCond63
CFI EndBlock cfiCond64
CFI EndBlock cfiCond65
CFI EndBlock cfiCond66
CFI EndBlock cfiCond67
CFI EndBlock cfiCond68
CFI EndBlock cfiPicker69
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine7:
CFI Block cfiCond70 Using cfiCommon0
CFI Function bindFindEmpty
CFI Conditional ??CrossCallReturnLabel_0
CFI DPL0 Frame(CFA_SP, 4)
CFI DPH0 Frame(CFA_SP, 5)
CFI CFA_SP SP+-7
CFI Block cfiCond71 Using cfiCommon0
CFI (cfiCond71) Function bindCapacity
CFI (cfiCond71) Conditional ??CrossCallReturnLabel_1
CFI (cfiCond71) R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond71) VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond71) V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond71) V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond71) V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond71) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond71) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond71) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond71) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond71) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond71) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond71) CFA_SP SP+-2
CFI (cfiCond71) CFA_XSP16 add(XSP16, 11)
CFI Block cfiCond72 Using cfiCommon0
CFI (cfiCond72) Function bindFindExisting
CFI (cfiCond72) Conditional ??CrossCallReturnLabel_2
CFI (cfiCond72) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond72) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond72) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond72) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond72) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond72) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond72) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond72) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond72) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond72) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond72) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond72) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond72) CFA_SP SP+-2
CFI (cfiCond72) CFA_XSP16 add(XSP16, 12)
CFI Block cfiCond73 Using cfiCommon0
CFI (cfiCond73) Function bindNumBoundTo
CFI (cfiCond73) Conditional ??CrossCallReturnLabel_3
CFI (cfiCond73) R6 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond73) VB load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond73) V0 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond73) V1 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond73) V2 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond73) V3 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond73) V4 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond73) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond73) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond73) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond73) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond73) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond73) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond73) CFA_SP SP+-2
CFI (cfiCond73) CFA_XSP16 add(XSP16, 13)
CFI Block cfiCond74 Using cfiCommon0
CFI (cfiCond74) Function bindUpdateAddr
CFI (cfiCond74) Conditional ??CrossCallReturnLabel_4
CFI (cfiCond74) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond74) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond74) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond74) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond74) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond74) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond74) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond74) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond74) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond74) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond74) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond74) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond74) CFA_SP SP+-2
CFI (cfiCond74) CFA_XSP16 add(XSP16, 21)
CFI Block cfiPicker75 Using cfiCommon1
CFI (cfiPicker75) NoFunction
CFI (cfiPicker75) Picker
MOV DPTR,#gNWK_MAX_BINDING_ENTRIES
CLR A
MOVC A,@A+DPTR
MOV R2,A
MOV A,#0x1
MOVC A,@A+DPTR
MOV R3,A
CLR C
MOV A,R0
SUBB A,R2
MOV A,R1
SUBB A,R3
RET
CFI EndBlock cfiCond70
CFI EndBlock cfiCond71
CFI EndBlock cfiCond72
CFI EndBlock cfiCond73
CFI EndBlock cfiCond74
CFI EndBlock cfiPicker75
// 517
// 518 /*********************************************************************
// 519 * @fn bindRemoveDev()
// 520 *
// 521 * @brief
// 522 *
// 523 * Remove binds(s) associated to device address (destination).
// 524 * Updates binding table.
// 525 *
// 526 * @param Addr - address of device
// 527 *
// 528 * @return none
// 529 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 530 void bindRemoveDev( zAddrType_t *Addr )
bindRemoveDev:
CFI Block cfiBlock76 Using cfiCommon0
CFI Function bindRemoveDev
CODE
// 531 {
FUNCALL bindRemoveDev, bindingAddrMgsHelperFind
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
FUNCALL bindRemoveDev, bindRemoveEntry
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
REQUIRE ?V3
REQUIRE ?V4
REQUIRE ?V5
MOV A,#-0xe
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 V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 14)
; Saved register size: 14
; Auto size: 0
MOV ?V2,R2
MOV ?V3,R3
// 532 uint16 idx;
// 533 uint16 x;
// 534
// 535 if ( Addr->addrMode == AddrGroup )
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
XRL A,#0x1
JNZ ??bindRemoveDev_0
// 536 {
// 537 idx = Addr->addr.shortAddr;
MOV DPL,R2
MOV DPH,R3
MOVX A,@DPTR
MOV ?V0,A
INC DPTR
MOVX A,@DPTR
MOV ?V1,A
SJMP ??bindRemoveDev_1
// 538 }
// 539 else
// 540 {
// 541 idx = bindingAddrMgsHelperFind( Addr );
??bindRemoveDev_0:
; Setup parameters for call to function bindingAddrMgsHelperFind
LCALL `??bindingAddrMgsHelperFind::?relay`; Banked call to: bindingAddrMgsHelperFind
MOV ?V0,R2
MOV ?V1,R3
// 542 }
// 543
// 544 if ( idx == INVALID_NODE_ADDR )
??bindRemoveDev_1:
MOV A,#-0x2
XRL A,?V0
JNZ ??bindRemoveDev_2
MOV A,#-0x1
XRL A,?V1
??bindRemoveDev_2:
JZ ??bindRemoveDev_3
// 545 {
// 546 return;
// 547 }
// 548
// 549 for ( x = 0; x < gNWK_MAX_BINDING_ENTRIES; x++ )
MOV R6,#0x0
MOV R7,#0x0
SJMP ??bindRemoveDev_4
// 550 {
// 551 if ( ((Addr->addrMode != AddrGroup) )
// 552 || ((Addr->addrMode == AddrGroup) && (BindingTable[x].dstGroupMode == DSTGROUPMODE_GROUP)
// 553 && (BindingTable[x].dstIdx == idx))
// 554 || ((Addr->addrMode != AddrGroup) && (BindingTable[x].dstGroupMode == DSTGROUPMODE_ADDR)
// 555 && (BindingTable[x].dstIdx == idx)) )
??bindRemoveDev_5:
MOV DPL,?V2
MOV DPH,?V3
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
XRL A,#0x1
JNZ ??bindRemoveDev_6
MOV A,R6
MOV R0,A
MOV A,R7
MOV R1,A
MOV A,R0
MOV B,#0xe
MUL AB
MOV R0,A
MOV R2,B
MOV B,#0xe
MOV A,R1
MUL AB
ADD A,R2
MOV R1,A
LCALL ?Subroutine16 & 0xFFFF
??CrossCallReturnLabel_20:
XRL A,#0x1
JNZ ??CrossCallReturnLabel_14
MOV A,R6
MOV R0,A
MOV A,R7
MOV R1,A
MOV A,R0
MOV B,#0xe
MUL AB
MOV R0,A
MOV B,#0xe
MOV A,R1
MUL AB
ADD A,R2
MOV R1,A
MOV A,#(BindingTable + 2) & 0xff
ADD A,R0
MOV DPL,A
MOV A,#((BindingTable + 2) >> 8) & 0xff
ADDC A,R1
MOV DPH,A
MOVX A,@DPTR
XRL A,?V0
JNZ ??bindRemoveDev_7
INC DPTR
MOVX A,@DPTR
XRL A,?V1
??bindRemoveDev_7:
JNZ ??CrossCallReturnLabel_14
// 556 {
// 557 bindRemoveEntry( &BindingTable[x] );
??bindRemoveDev_6:
; Setup parameters for call to function bindRemoveEntry
LCALL ?Subroutine14 & 0xFFFF
// 558 }
// 559 }
??CrossCallReturnLabel_14:
INC R6
MOV A,R6
JNZ ??bindRemoveDev_4
INC R7
??bindRemoveDev_4:
LCALL ?Subroutine10 & 0xFFFF
??CrossCallReturnLabel_7:
JC ??bindRemoveDev_5
// 560 }
??bindRemoveDev_3:
MOV R7,#0x6
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock76
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine16:
CFI Block cfiCond77 Using cfiCommon0
CFI Function bindAddEntry
CFI Conditional ??CrossCallReturnLabel_19
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 18)
CFI Block cfiCond78 Using cfiCommon0
CFI (cfiCond78) Function bindRemoveDev
CFI (cfiCond78) Conditional ??CrossCallReturnLabel_20
CFI (cfiCond78) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond78) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond78) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond78) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond78) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond78) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond78) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond78) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond78) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond78) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond78) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond78) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond78) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond78) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond78) CFA_SP SP+-2
CFI (cfiCond78) CFA_XSP16 add(XSP16, 14)
CFI Block cfiPicker79 Using cfiCommon1
CFI (cfiPicker79) NoFunction
CFI (cfiPicker79) Picker
MOV A,#(BindingTable + 1) & 0xff
ADD A,R0
MOV DPL,A
MOV A,#((BindingTable + 1) >> 8) & 0xff
ADDC A,R1
MOV DPH,A
MOVX A,@DPTR
RET
CFI EndBlock cfiCond77
CFI EndBlock cfiCond78
CFI EndBlock cfiPicker79
// 561
// 562 /*********************************************************************
// 563 * @fn bindRemoveSrcDev()
// 564 *
// 565 * @brief
// 566 *
// 567 * Remove binds(s) associated to device address (source).
// 568 * Updates binding table.
// 569 *
// 570 * @param srcAddr - address of device
// 571 * @param ep - endpoint to remove, 0xFF is all endpoints
// 572 *
// 573 * @return none
// 574 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 575 void bindRemoveSrcDev( uint8 ep )
bindRemoveSrcDev:
CFI Block cfiBlock80 Using cfiCommon0
CFI Function bindRemoveSrcDev
CODE
// 576 {
FUNCALL bindRemoveSrcDev, bindRemoveEntry
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 9, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 9, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
REQUIRE ?V0
MOV A,#-0x9
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 V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 9)
; Saved register size: 9
; Auto size: 0
MOV ?V0,R1
// 577 uint16 x;
// 578
// 579 for ( x = 0; x < gNWK_MAX_BINDING_ENTRIES; x++ )
MOV R6,#0x0
MOV R7,#0x0
SJMP ??bindRemoveSrcDev_0
// 580 {
// 581 if ( (ep == 0xFF) || (ep == BindingTable[x].srcEP) )
??bindRemoveSrcDev_1:
MOV A,#-0x1
XRL A,?V0
JZ ??bindRemoveSrcDev_2
LCALL ?Subroutine9 & 0xFFFF
??CrossCallReturnLabel_76:
XRL A,?V0
JNZ ??CrossCallReturnLabel_15
// 582 {
// 583 bindRemoveEntry( &BindingTable[x] );
??bindRemoveSrcDev_2:
; Setup parameters for call to function bindRemoveEntry
LCALL ?Subroutine14 & 0xFFFF
// 584 }
// 585 }
??CrossCallReturnLabel_15:
INC R6
MOV A,R6
JNZ ??bindRemoveSrcDev_0
INC R7
??bindRemoveSrcDev_0:
LCALL ?Subroutine10 & 0xFFFF
??CrossCallReturnLabel_8:
JC ??bindRemoveSrcDev_1
// 586 }
LJMP ?Subroutine2 & 0xFFFF
CFI EndBlock cfiBlock80
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine14:
CFI Block cfiCond81 Using cfiCommon0
CFI Function bindRemoveDev
CFI Conditional ??CrossCallReturnLabel_14
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 14)
CFI Block cfiCond82 Using cfiCommon0
CFI (cfiCond82) Function bindRemoveSrcDev
CFI (cfiCond82) Conditional ??CrossCallReturnLabel_15
CFI (cfiCond82) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond82) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond82) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond82) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond82) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond82) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond82) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond82) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond82) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond82) CFA_SP SP+-2
CFI (cfiCond82) CFA_XSP16 add(XSP16, 9)
CFI Block cfiPicker83 Using cfiCommon1
CFI (cfiPicker83) NoFunction
CFI (cfiPicker83) Picker
MOV A,R6
MOV R0,A
MOV A,R7
MOV R1,A
LCALL ?Subroutine36 & 0xFFFF
??CrossCallReturnLabel_50:
LCALL `??bindRemoveEntry::?relay`; Banked call to: bindRemoveEntry
RET
CFI EndBlock cfiCond81
CFI EndBlock cfiCond82
CFI EndBlock cfiPicker83
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine10:
CFI Block cfiCond84 Using cfiCommon0
CFI Function bindRemoveDev
CFI Conditional ??CrossCallReturnLabel_7
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 14)
CFI Block cfiCond85 Using cfiCommon0
CFI (cfiCond85) Function bindRemoveSrcDev
CFI (cfiCond85) Conditional ??CrossCallReturnLabel_8
CFI (cfiCond85) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond85) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond85) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond85) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond85) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond85) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond85) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond85) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond85) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond85) CFA_SP SP+-2
CFI (cfiCond85) CFA_XSP16 add(XSP16, 9)
CFI Block cfiCond86 Using cfiCommon0
CFI (cfiCond86) Function BindWriteNV
CFI (cfiCond86) Conditional ??CrossCallReturnLabel_9
CFI (cfiCond86) R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond86) VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond86) V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond86) V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond86) V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond86) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond86) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond86) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond86) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond86) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond86) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond86) CFA_SP SP+-2
CFI (cfiCond86) CFA_XSP16 add(XSP16, 27)
CFI Block cfiPicker87 Using cfiCommon1
CFI (cfiPicker87) NoFunction
CFI (cfiPicker87) Picker
LCALL ?Subroutine31 & 0xFFFF
??CrossCallReturnLabel_71:
CLR C
MOV A,R6
SUBB A,R0
MOV A,R7
SUBB A,R1
RET
CFI EndBlock cfiCond84
CFI EndBlock cfiCond85
CFI EndBlock cfiCond86
CFI EndBlock cfiPicker87
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine31:
CFI Block cfiCond88 Using cfiCommon0
CFI Function bindRemoveDev
CFI Conditional ??CrossCallReturnLabel_71, ??CrossCallReturnLabel_7
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-4
CFI CFA_XSP16 add(XSP16, 14)
CFI Block cfiCond89 Using cfiCommon0
CFI (cfiCond89) Function bindRemoveSrcDev
CFI (cfiCond89) Conditional ??CrossCallReturnLabel_71, ??CrossCallReturnLabel_8
CFI (cfiCond89) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond89) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond89) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond89) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond89) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond89) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond89) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond89) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond89) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond89) CFA_SP SP+-4
CFI (cfiCond89) CFA_XSP16 add(XSP16, 9)
CFI Block cfiCond90 Using cfiCommon0
CFI (cfiCond90) Function BindWriteNV
CFI (cfiCond90) Conditional ??CrossCallReturnLabel_71, ??CrossCallReturnLabel_9
CFI (cfiCond90) R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond90) VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond90) V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond90) V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond90) V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond90) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond90) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond90) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond90) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond90) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond90) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond90) CFA_SP SP+-4
CFI (cfiCond90) CFA_XSP16 add(XSP16, 27)
CFI Block cfiCond91 Using cfiCommon0
CFI (cfiCond91) Function bindNumReflections
CFI (cfiCond91) Conditional ??CrossCallReturnLabel_72, ??CrossCallReturnLabel_12
CFI (cfiCond91) R6 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond91) VB load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond91) V0 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond91) V1 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond91) V2 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond91) V3 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond91) V4 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond91) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond91) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond91) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond91) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond91) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond91) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond91) CFA_SP SP+-4
CFI (cfiCond91) CFA_XSP16 add(XSP16, 13)
CFI Block cfiCond92 Using cfiCommon0
CFI (cfiCond92) Function bindFind
CFI (cfiCond92) Conditional ??CrossCallReturnLabel_72, ??CrossCallReturnLabel_13
CFI (cfiCond92) R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI (cfiCond92) VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond92) V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond92) V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond92) V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond92) V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond92) V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond92) V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond92) V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond92) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond92) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond92) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond92) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond92) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond92) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond92) CFA_SP SP+-4
CFI (cfiCond92) CFA_XSP16 add(XSP16, 15)
CFI Block cfiPicker93 Using cfiCommon1
CFI (cfiPicker93) NoFunction
CFI (cfiPicker93) Picker
MOV DPTR,#gNWK_MAX_BINDING_ENTRIES
CFI EndBlock cfiCond88
CFI EndBlock cfiCond89
CFI EndBlock cfiCond90
CFI EndBlock cfiCond91
CFI EndBlock cfiCond92
CFI EndBlock cfiPicker93
REQUIRE ??Subroutine42_0
; // Fall through to label ??Subroutine42_0
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
??Subroutine42_0:
CFI Block cfiCond94 Using cfiCommon0
CFI Function bindCapacity
CFI Conditional ??CrossCallReturnLabel_70, ??CrossCallReturnLabel_16
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-4
CFI CFA_XSP16 add(XSP16, 11)
CFI Block cfiCond95 Using cfiCommon0
CFI (cfiCond95) Function bindAddEntry
CFI (cfiCond95) Conditional ??CrossCallReturnLabel_70, ??CrossCallReturnLabel_17
CFI (cfiCond95) R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI (cfiCond95) VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond95) V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond95) V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond95) V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond95) V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond95) V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond95) V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond95) V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond95) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond95) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond95) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond95) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond95) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond95) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond95) CFA_SP SP+-4
CFI (cfiCond95) CFA_XSP16 add(XSP16, 18)
CFI Block cfiCond96 Using cfiCommon0
CFI (cfiCond96) Function BindInitNV
CFI (cfiCond96) Conditional ??CrossCallReturnLabel_70, ??CrossCallReturnLabel_18
CFI (cfiCond96) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond96) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond96) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond96) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond96) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond96) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond96) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond96) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond96) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond96) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond96) CFA_SP SP+-4
CFI (cfiCond96) CFA_XSP16 add(XSP16, 12)
CFI Block cfiCond97 Using cfiCommon0
CFI (cfiCond97) Function bindRemoveDev
CFI (cfiCond97) Conditional ??CrossCallReturnLabel_71, ??CrossCallReturnLabel_7
CFI (cfiCond97) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond97) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond97) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond97) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond97) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond97) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond97) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond97) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond97) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond97) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond97) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond97) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond97) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond97) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond97) CFA_SP SP+-4
CFI (cfiCond97) CFA_XSP16 add(XSP16, 14)
CFI Block cfiCond98 Using cfiCommon0
CFI (cfiCond98) Function bindRemoveSrcDev
CFI (cfiCond98) Conditional ??CrossCallReturnLabel_71, ??CrossCallReturnLabel_8
CFI (cfiCond98) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond98) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond98) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond98) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond98) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond98) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond98) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond98) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond98) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond98) CFA_SP SP+-4
CFI (cfiCond98) CFA_XSP16 add(XSP16, 9)
CFI Block cfiCond99 Using cfiCommon0
CFI (cfiCond99) Function BindWriteNV
CFI (cfiCond99) Conditional ??CrossCallReturnLabel_71, ??CrossCallReturnLabel_9
CFI (cfiCond99) R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond99) VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond99) V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond99) V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond99) V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond99) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond99) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond99) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond99) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond99) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond99) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond99) CFA_SP SP+-4
CFI (cfiCond99) CFA_XSP16 add(XSP16, 27)
CFI Block cfiCond100 Using cfiCommon0
CFI (cfiCond100) Function bindNumReflections
CFI (cfiCond100) Conditional ??CrossCallReturnLabel_72, ??CrossCallReturnLabel_12
CFI (cfiCond100) R6 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond100) VB load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond100) V0 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond100) V1 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond100) V2 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond100) V3 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond100) V4 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond100) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond100) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond100) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond100) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond100) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond100) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond100) CFA_SP SP+-4
CFI (cfiCond100) CFA_XSP16 add(XSP16, 13)
CFI Block cfiCond101 Using cfiCommon0
CFI (cfiCond101) Function bindFind
CFI (cfiCond101) Conditional ??CrossCallReturnLabel_72, ??CrossCallReturnLabel_13
CFI (cfiCond101) R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI (cfiCond101) VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond101) V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond101) V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond101) V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond101) V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond101) V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond101) V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond101) V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond101) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond101) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond101) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond101) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond101) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond101) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond101) CFA_SP SP+-4
CFI (cfiCond101) CFA_XSP16 add(XSP16, 15)
CFI Block cfiPicker102 Using cfiCommon1
CFI (cfiPicker102) NoFunction
CFI (cfiPicker102) Picker
CLR A
MOVC A,@A+DPTR
MOV R0,A
MOV A,#0x1
MOVC A,@A+DPTR
MOV R1,A
RET
CFI EndBlock cfiCond94
CFI EndBlock cfiCond95
CFI EndBlock cfiCond96
CFI EndBlock cfiCond97
CFI EndBlock cfiCond98
CFI EndBlock cfiCond99
CFI EndBlock cfiCond100
CFI EndBlock cfiCond101
CFI EndBlock cfiPicker102
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine9:
CFI Block cfiCond103 Using cfiCommon0
CFI Function bindRemoveSrcDev
CFI Conditional ??CrossCallReturnLabel_76
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 9)
CFI Block cfiCond104 Using cfiCommon0
CFI (cfiCond104) Function BindWriteNV
CFI (cfiCond104) Conditional ??CrossCallReturnLabel_73
CFI (cfiCond104) R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond104) VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond104) V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond104) V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond104) V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond104) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond104) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond104) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond104) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond104) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond104) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond104) CFA_SP SP+-2
CFI (cfiCond104) CFA_XSP16 add(XSP16, 27)
CFI Block cfiPicker105 Using cfiCommon1
CFI (cfiPicker105) NoFunction
CFI (cfiPicker105) Picker
MOV A,R6
MOV R0,A
MOV A,R7
MOV R1,A
MOV A,R0
MOV B,#0xe
MUL AB
MOV R0,A
MOV R2,B
MOV B,#0xe
MOV A,R1
CFI EndBlock cfiCond103
CFI EndBlock cfiCond104
CFI EndBlock cfiPicker105
REQUIRE ??Subroutine43_0
; // Fall through to label ??Subroutine43_0
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
??Subroutine43_0:
CFI Block cfiCond106 Using cfiCommon0
CFI Function bindNumReflections
CFI Conditional ??CrossCallReturnLabel_74
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 13)
CFI Block cfiCond107 Using cfiCommon0
CFI (cfiCond107) Function bindRemoveSrcDev
CFI (cfiCond107) Conditional ??CrossCallReturnLabel_76
CFI (cfiCond107) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond107) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond107) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond107) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond107) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond107) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond107) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond107) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond107) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond107) CFA_SP SP+-2
CFI (cfiCond107) CFA_XSP16 add(XSP16, 9)
CFI Block cfiCond108 Using cfiCommon0
CFI (cfiCond108) Function BindWriteNV
CFI (cfiCond108) Conditional ??CrossCallReturnLabel_73
CFI (cfiCond108) R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond108) VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond108) V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond108) V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond108) V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond108) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond108) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond108) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond108) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond108) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond108) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond108) CFA_SP SP+-2
CFI (cfiCond108) CFA_XSP16 add(XSP16, 27)
CFI Block cfiPicker109 Using cfiCommon1
CFI (cfiPicker109) NoFunction
CFI (cfiPicker109) Picker
MUL AB
ADD A,R2
MOV R1,A
CFI EndBlock cfiCond106
CFI EndBlock cfiCond107
CFI EndBlock cfiCond108
CFI EndBlock cfiPicker109
REQUIRE ??Subroutine44_0
; // Fall through to label ??Subroutine44_0
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
??Subroutine44_0:
CFI Block cfiCond110 Using cfiCommon0
CFI Function bindAddEntry
CFI Conditional ??CrossCallReturnLabel_75
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 18)
CFI Block cfiCond111 Using cfiCommon0
CFI (cfiCond111) Function bindNumReflections
CFI (cfiCond111) Conditional ??CrossCallReturnLabel_74
CFI (cfiCond111) R6 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond111) VB load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond111) V0 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond111) V1 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond111) V2 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond111) V3 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond111) V4 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond111) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond111) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond111) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond111) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond111) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond111) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond111) CFA_SP SP+-2
CFI (cfiCond111) CFA_XSP16 add(XSP16, 13)
CFI Block cfiCond112 Using cfiCommon0
CFI (cfiCond112) Function bindRemoveSrcDev
CFI (cfiCond112) Conditional ??CrossCallReturnLabel_76
CFI (cfiCond112) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond112) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond112) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond112) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond112) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond112) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond112) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond112) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond112) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond112) CFA_SP SP+-2
CFI (cfiCond112) CFA_XSP16 add(XSP16, 9)
CFI Block cfiCond113 Using cfiCommon0
CFI (cfiCond113) Function BindWriteNV
CFI (cfiCond113) Conditional ??CrossCallReturnLabel_73
CFI (cfiCond113) R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond113) VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond113) V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond113) V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond113) V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond113) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond113) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond113) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond113) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond113) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond113) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond113) CFA_SP SP+-2
CFI (cfiCond113) CFA_XSP16 add(XSP16, 27)
CFI Block cfiPicker114 Using cfiCommon1
CFI (cfiPicker114) NoFunction
CFI (cfiPicker114) Picker
MOV A,#BindingTable & 0xff
ADD A,R0
MOV DPL,A
MOV A,#(BindingTable >> 8) & 0xff
ADDC A,R1
MOV DPH,A
MOVX A,@DPTR
RET
CFI EndBlock cfiCond110
CFI EndBlock cfiCond111
CFI EndBlock cfiCond112
CFI EndBlock cfiCond113
CFI EndBlock cfiPicker114
// 587
// 588 /*********************************************************************
// 589 * @fn bindNumBoundTo
// 590 *
// 591 * @brief Calculate the number items this device is bound to.
// 592 * When srcMode is set to TRUE, discard what value devAddr
// 593 * has, it returns number count bound to the local dev.
// 594 *
// 595 * @param devAddr - device Address
// 596 * @param devEP - endpoint
// 597 * @param srcMode - TRUE - assume devHandle is a source address
// 598 * FALSE - destination address
// 599 *
// 600 * @return status
// 601 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 602 byte bindNumBoundTo( zAddrType_t *devAddr, byte devEpInt, byte srcMode )
bindNumBoundTo:
CFI Block cfiBlock115 Using cfiCommon0
CFI Function bindNumBoundTo
CODE
// 603 {
FUNCALL bindNumBoundTo, bindingAddrMgsHelperFind
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 13, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 13, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
REQUIRE ?V0
REQUIRE ?V1
REQUIRE ?V2
REQUIRE ?V3
REQUIRE ?V4
MOV A,#-0xd
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 V4 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 13)
; Saved register size: 13
; Auto size: 0
MOV A,R2
MOV R6,A
MOV A,R3
MOV R7,A
MOV ?V1,R1
MOV ?V4,R4
// 604 BindingEntry_t *pBind;
// 605 uint16 idx;
// 606 byte num;
// 607 uint16 x;
// 608
// 609 // Init
// 610 num = 0;
MOV ?V0,#0x0
// 611
// 612 if ( devAddr->addrMode == AddrGroup )
MOV DPL,R2
MOV DPH,A
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
XRL A,#0x1
JNZ ??bindNumBoundTo_0
// 613 {
// 614 idx = devAddr->addr.shortAddr;
MOV DPL,R2
MOV DPH,R3
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
SJMP ??CrossCallReturnLabel_39
// 615 }
// 616 else
// 617 {
// 618 idx = bindingAddrMgsHelperFind( devAddr );
??bindNumBoundTo_0:
; Setup parameters for call to function bindingAddrMgsHelperFind
LCALL ?Subroutine29 & 0xFFFF
// 619 }
// 620
// 621 for ( x = 0; x < gNWK_MAX_BINDING_ENTRIES; x++ )
??CrossCallReturnLabel_39:
MOV R0,#0x0
MOV R1,#0x0
SJMP ??bindNumBoundTo_1
// 622 {
// 623 pBind = &BindingTable[x];
// 624 if ( srcMode )
// 625 {
// 626 if ( pBind->srcEP == devEpInt )
// 627 {
// 628 num++;
// 629 }
// 630 }
// 631 else
// 632 {
// 633 if ( ((devAddr->addrMode == AddrGroup)
// 634 && (pBind->dstGroupMode == DSTGROUPMODE_GROUP) && (pBind->dstIdx == idx))
// 635 || ((devAddr->addrMode != AddrGroup) && (pBind->dstGroupMode == DSTGROUPMODE_ADDR)
// 636 && (pBind->dstIdx == idx) && (pBind->dstEP == devEpInt)) )
??bindNumBoundTo_2:
MOVX A,@DPTR
JNZ ??bindNumBoundTo_3
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
MOVX A,@DPTR
XRL A,R4
JNZ ??bindNumBoundTo_4
INC DPTR
MOVX A,@DPTR
XRL A,R5
??bindNumBoundTo_4:
JNZ ??bindNumBoundTo_3
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
XRL A,?V1
JNZ ??bindNumBoundTo_3
// 637 {
// 638 num++;
??bindNumBoundTo_5:
INC ?V0
// 639 }
??bindNumBoundTo_3:
INC R0
MOV A,R0
JNZ ??bindNumBoundTo_1
INC R1
??bindNumBoundTo_1:
LCALL ?Subroutine7 & 0xFFFF
??CrossCallReturnLabel_3:
JNC ??bindNumBoundTo_6
MOV A,R0
MOV R2,A
MOV A,R1
MOV R3,A
MOV A,R2
MOV B,#0xe
MUL AB
MOV R2,A
MOV ?V2,B
MOV B,#0xe
MOV A,R3
MUL AB
ADD A,?V2
MOV R3,A
MOV A,#BindingTable & 0xff
ADD A,R2
MOV R2,A
MOV A,#(BindingTable >> 8) & 0xff
ADDC A,R3
MOV R3,A
MOV A,?V4
JZ ??bindNumBoundTo_7
MOV DPL,R2
MOV DPH,R3
MOVX A,@DPTR
XRL A,?V1
JNZ ??bindNumBoundTo_3
SJMP ??bindNumBoundTo_5
??bindNumBoundTo_7:
MOV DPL,R6
MOV DPH,R7
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
XRL A,#0x1
MOV DPL,R2
MOV DPH,R3
INC DPTR
JNZ ??bindNumBoundTo_2
MOVX A,@DPTR
XRL A,#0x1
JNZ ??bindNumBoundTo_3
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
MOVX A,@DPTR
XRL A,R4
JNZ ??bindNumBoundTo_8
INC DPTR
MOVX A,@DPTR
XRL A,R5
??bindNumBoundTo_8:
JZ ??bindNumBoundTo_5
SJMP ??bindNumBoundTo_3
// 640 }
// 641 }
// 642
// 643 return num;
??bindNumBoundTo_6:
MOV R1,?V0
CFI EndBlock cfiBlock115
REQUIRE ?Subroutine6
; // Fall through to label ?Subroutine6
// 644 }
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine6:
CFI Block cfiBlock116 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 13)
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-7)))
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)))
MOV R7,#0x5
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock116
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine29:
CFI Block cfiCond117 Using cfiCommon0
CFI Function bindFindExisting
CFI Conditional ??CrossCallReturnLabel_38
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 12)
CFI Block cfiCond118 Using cfiCommon0
CFI (cfiCond118) Function bindNumBoundTo
CFI (cfiCond118) Conditional ??CrossCallReturnLabel_39
CFI (cfiCond118) R6 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond118) VB load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond118) V0 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond118) V1 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond118) V2 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond118) V3 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond118) V4 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond118) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond118) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond118) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond118) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond118) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond118) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond118) CFA_SP SP+-2
CFI (cfiCond118) CFA_XSP16 add(XSP16, 13)
CFI Block cfiPicker119 Using cfiCommon1
CFI (cfiPicker119) NoFunction
CFI (cfiPicker119) Picker
LCALL `??bindingAddrMgsHelperFind::?relay`; Banked call to: bindingAddrMgsHelperFind
MOV ?V2,R2
MOV ?V3,R3
MOV R4,?V2
MOV R5,?V3
RET
CFI EndBlock cfiCond117
CFI EndBlock cfiCond118
CFI EndBlock cfiPicker119
// 645
// 646 /*********************************************************************
// 647 * @fn bindNumReflections
// 648 *
// 649 * @brief Counts the number of reflections needed for a
// 650 * endpoint and cluster ID combo.
// 651 *
// 652 * @param ep - source endpoint
// 653 * @param clusterID - matching clusterID
// 654 *
// 655 * @return number of reflections needed.
// 656 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 657 uint16 bindNumReflections( uint8 ep, uint16 clusterID )
bindNumReflections:
CFI Block cfiBlock120 Using cfiCommon0
CFI Function bindNumReflections
CODE
// 658 {
FUNCALL bindNumReflections, bindIsClusterIDinList
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 13, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 13, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
REQUIRE ?V0
REQUIRE ?V1
REQUIRE ?V2
REQUIRE ?V3
REQUIRE ?V4
MOV A,#-0xd
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 V4 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 13)
; Saved register size: 13
; Auto size: 0
MOV ?V4,R1
MOV A,R2
MOV R6,A
MOV A,R3
MOV R7,A
// 659 uint16 x;
// 660 BindingEntry_t *pBind;
// 661 uint16 cnt = 0;
MOV ?V2,#0x0
MOV ?V3,#0x0
// 662 uint8 bindEP;
// 663
// 664 for ( x = 0; x < gNWK_MAX_BINDING_ENTRIES; x++ )
MOV ?V0,#0x0
MOV ?V1,#0x0
SJMP ??bindNumReflections_0
// 665 {
// 666 pBind = &BindingTable[x];
??bindNumReflections_1:
MOV A,?V0
MOV B,#0xe
MUL AB
MOV R0,A
MOV R2,B
MOV B,#0xe
MOV A,?V1
LCALL ??Subroutine43_0 & 0xFFFF
// 667 bindEP = pBind->srcEP;
// 668
// 669 if ( (bindEP == ep) && (bindIsClusterIDinList( pBind, clusterID )) )
??CrossCallReturnLabel_74:
XRL A,?V4
JNZ ??bindNumReflections_2
; Setup parameters for call to function bindIsClusterIDinList
MOV A,R6
MOV R4,A
MOV A,R7
MOV R5,A
MOV R2,DPL
MOV R3,DPH
LCALL `??bindIsClusterIDinList::?relay`; Banked call to: bindIsClusterIDinList
MOV A,R1
JZ ??bindNumReflections_2
// 670 {
// 671 cnt++;
INC ?V2
MOV A,?V2
JNZ ??bindNumReflections_2
INC ?V3
// 672 }
// 673 }
??bindNumReflections_2:
INC ?V0
MOV A,?V0
JNZ ??bindNumReflections_0
INC ?V1
??bindNumReflections_0:
LCALL ?Subroutine12 & 0xFFFF
??CrossCallReturnLabel_12:
JC ??bindNumReflections_1
// 674
// 675 return ( cnt );
MOV R2,?V2
MOV R3,?V3
SJMP ?Subroutine6
// 676 }
CFI EndBlock cfiBlock120
// 677
// 678 /*********************************************************************
// 679 * @fn bindFind
// 680 *
// 681 * @brief Finds the binding entry for the source address, endpoint
// 682 * and cluster ID passed in as a parameter.
// 683 *
// 684 * @param ep - source endpoint
// 685 * @param clusterID - matching clusterID
// 686 * @param skip - number of matches to skip before returning
// 687 *
// 688 * @return pointer to the binding table entry, NULL if not found
// 689 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 690 BindingEntry_t *bindFind( uint8 ep, uint16 clusterID, uint8 skipping )
bindFind:
CFI Block cfiBlock121 Using cfiCommon0
CFI Function bindFind
CODE
// 691 {
FUNCALL bindFind, bindIsClusterIDinList
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 15, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 15, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
REQUIRE ?V0
REQUIRE ?V1
REQUIRE ?V2
REQUIRE ?V3
REQUIRE ?V4
REQUIRE ?V5
REQUIRE ?V6
MOV A,#-0xf
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 V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 15)
; Saved register size: 15
; Auto size: 0
MOV ?V6,R1
MOV A,R2
MOV R6,A
MOV A,R3
MOV R7,A
MOV ?V3,R4
// 692 BindingEntry_t *pBind;
// 693 byte skipped = 0;
MOV ?V2,#0x0
// 694 uint16 x;
// 695
// 696 for ( x = 0; x < gNWK_MAX_BINDING_ENTRIES; x++ )
MOV ?V0,#0x0
MOV ?V1,#0x0
SJMP ??bindFind_0
// 697 {
// 698 pBind = &BindingTable[x];
// 699
// 700 if ( ( pBind->srcEP == ep) && bindIsClusterIDinList( pBind, clusterID ))
// 701 {
// 702 if ( skipped < skipping )
// 703 {
// 704 skipped++;
??bindFind_1:
INC ?V2
// 705 }
??bindFind_2:
INC ?V0
MOV A,?V0
JNZ ??bindFind_0
INC ?V1
??bindFind_0:
LCALL ?Subroutine12 & 0xFFFF
??CrossCallReturnLabel_13:
JNC ??bindFind_3
MOV A,?V0
MOV B,#0xe
MUL AB
MOV R0,A
MOV R2,B
MOV B,#0xe
MOV A,?V1
MUL AB
ADD A,R2
MOV R1,A
MOV A,#BindingTable & 0xff
ADD A,R0
MOV ?V4,A
MOV A,#(BindingTable >> 8) & 0xff
ADDC A,R1
MOV ?V5,A
MOV DPL,?V4
MOV DPH,A
MOVX A,@DPTR
XRL A,?V6
JNZ ??bindFind_2
; Setup parameters for call to function bindIsClusterIDinList
MOV A,R6
MOV R4,A
MOV A,R7
MOV R5,A
MOV R2,?V4
MOV R3,?V5
LCALL `??bindIsClusterIDinList::?relay`; Banked call to: bindIsClusterIDinList
MOV A,R1
JZ ??bindFind_2
MOV A,?V2
CLR C
SUBB A,?V3
JC ??bindFind_1
// 706 else
// 707 {
// 708 return ( pBind );
MOV R2,?V4
MOV R3,?V5
SJMP ??bindFind_4
// 709 }
// 710 }
// 711 }
// 712
// 713 return ( (BindingEntry_t *)NULL );
??bindFind_3:
MOV R2,#0x0
MOV R3,#0x0
??bindFind_4:
LJMP ?Subroutine4 & 0xFFFF
// 714 }
CFI EndBlock cfiBlock121
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine12:
CFI Block cfiCond122 Using cfiCommon0
CFI Function bindNumReflections
CFI Conditional ??CrossCallReturnLabel_12
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 13)
CFI Block cfiCond123 Using cfiCommon0
CFI (cfiCond123) Function bindFind
CFI (cfiCond123) Conditional ??CrossCallReturnLabel_13
CFI (cfiCond123) R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI (cfiCond123) VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond123) V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond123) V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond123) V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond123) V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond123) V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond123) V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond123) V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond123) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond123) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond123) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond123) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond123) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond123) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond123) CFA_SP SP+-2
CFI (cfiCond123) CFA_XSP16 add(XSP16, 15)
CFI Block cfiPicker124 Using cfiCommon1
CFI (cfiPicker124) NoFunction
CFI (cfiPicker124) Picker
LCALL ?Subroutine31 & 0xFFFF
??CrossCallReturnLabel_72:
CLR C
MOV A,?V0
SUBB A,R0
MOV A,?V1
SUBB A,R1
RET
CFI EndBlock cfiCond122
CFI EndBlock cfiCond123
CFI EndBlock cfiPicker124
// 715
// 716 /*********************************************************************
// 717 * @fn BindInitNV
// 718 *
// 719 * @brief Initialize the Binding NV Item
// 720 *
// 721 * @param none
// 722 *
// 723 * @return ZSUCCESS if successful, NV_ITEM_UNINIT if item did not
// 724 * exist in NV, NV_OPER_FAILED if failure.
// 725 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 726 byte BindInitNV( void )
BindInitNV:
CFI Block cfiBlock125 Using cfiCommon0
CFI Function BindInitNV
CODE
// 727 {
FUNCALL BindInitNV, osal_nv_item_init
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 12, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 12, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL BindInitNV, BindSetDefaultNV
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 10, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 10, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
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
// 728 byte ret;
// 729
// 730 // Initialize the device list
// 731 ret = osal_nv_item_init( ZCD_NV_BINDING_TABLE,
// 732 (uint16)(gBIND_REC_SIZE + NV_BIND_ITEM_SIZE), NULL );
; Setup parameters for call to function osal_nv_item_init
CLR A
MOV ?V0,A
MOV ?V1,A
MOV R0,#?V0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 12)
MOV DPTR,#gBIND_REC_SIZE
LCALL ?Subroutine15 & 0xFFFF
??CrossCallReturnLabel_18:
MOV DPTR,#gNWK_MAX_BINDING_ENTRIES
LCALL ?Subroutine8 & 0xFFFF
??CrossCallReturnLabel_5:
MOV DPH,#(gBIND_REC_SIZE >> 8) & 0xff
MOV DPL,#gBIND_REC_SIZE & 0xff
CLR A
MOVC A,@A+DPTR
ADD A,R0
MOV R4,A
INC DPTR
CLR A
MOVC A,@A+DPTR
LCALL ??Subroutine46_0 & 0xFFFF
??CrossCallReturnLabel_77:
LCALL `??osal_nv_item_init::?relay`; Banked call to: osal_nv_item_init
MOV A,#0x2
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 10)
MOV A,R1
MOV R6,A
// 733
// 734 if ( ret != ZSUCCESS )
JZ ??BindInitNV_0
// 735 {
// 736 BindSetDefaultNV();
; Setup parameters for call to function BindSetDefaultNV
LCALL `??BindSetDefaultNV::?relay`; Banked call to: BindSetDefaultNV
// 737 }
// 738
// 739 return ( ret );
??BindInitNV_0:
MOV A,R6
MOV R1,A
LJMP ??Subroutine37_0 & 0xFFFF
// 740 }
CFI EndBlock cfiBlock125
// 741
// 742 /*********************************************************************
// 743 * @fn BindSetDefaultNV
// 744 *
// 745 * @brief Write the defaults to NV
// 746 *
// 747 * @param none
// 748 *
// 749 * @return none
// 750 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 751 void BindSetDefaultNV( void )
BindSetDefaultNV:
CFI Block cfiBlock126 Using cfiCommon0
CFI Function BindSetDefaultNV
CODE
// 752 {
FUNCALL BindSetDefaultNV, osal_nv_write
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 16, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 16, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
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: 2
MOV A,#-0x2
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 12)
// 753 nvBindingHdr_t hdr;
// 754
// 755 // Initialize the header
// 756 hdr.numRecs = 0;
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
CLR A
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
// 757
// 758 // Save off the header
// 759 osal_nv_write( ZCD_NV_BINDING_TABLE, 0, sizeof( nvBindingHdr_t ), &hdr );
; Setup parameters for call to function osal_nv_write
MOV R0,?XSP + 0
MOV R1,?XSP + 1
MOV ?V0,R0
MOV ?V1,R1
MOV R0,#?V0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 14)
MOV ?V0,#0x2
MOV ?V1,#0x0
MOV R0,#?V0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 16)
MOV R4,#0x0
MOV R5,#0x0
MOV R2,#0x41
MOV R3,#0x0
LCALL `??osal_nv_write::?relay`; Banked call to: osal_nv_write
MOV A,#0x4
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 12)
// 760 }
MOV A,#0x2
LJMP ?Subroutine0 & 0xFFFF
CFI EndBlock cfiBlock126
// 761
// 762 /*********************************************************************
// 763 * @fn BindRestoreFromNV
// 764 *
// 765 * @brief Restore the binding table from NV
// 766 *
// 767 * @param none
// 768 *
// 769 * @return Number of entries restored
// 770 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 771 uint16 BindRestoreFromNV( void )
BindRestoreFromNV:
CFI Block cfiBlock127 Using cfiCommon0
CFI Function BindRestoreFromNV
CODE
// 772 {
FUNCALL BindRestoreFromNV, osal_nv_read
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 41, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 41, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL BindRestoreFromNV, bindingAddrMgsHelperConvert
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 37, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 37, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL BindRestoreFromNV, bindAddEntry
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 39, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 39, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL BindRestoreFromNV, osal_nv_read
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 41, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 41, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
REQUIRE ?V0
REQUIRE ?V1
REQUIRE ?V2
REQUIRE ?V3
MOV A,#-0xc
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 V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 12)
; Saved register size: 12
; Auto size: 25
MOV A,#-0x19
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 37)
// 773 uint16 x;
// 774 nvBindingHdr_t hdr;
// 775 BindingEntry_t bind;
// 776 zAddrType_t dstAddr;
// 777 uint16 numAdded = 0;
MOV R6,#0x0
MOV R7,#0x0
// 778
// 779 if ( osal_nv_read( ZCD_NV_BINDING_TABLE, 0, sizeof(nvBindingHdr_t), &hdr ) == ZSuccess )
; Setup parameters for call to function osal_nv_read
MOV R0,?XSP + 0
MOV R1,?XSP + 1
MOV ?V0,R0
MOV ?V1,R1
MOV R0,#?V0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 39)
MOV ?V0,#0x2
MOV ?V1,R6
MOV R0,#?V0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 41)
MOV R4,#0x0
MOV R5,#0x0
MOV R2,#0x41
MOV R3,#0x0
LCALL `??osal_nv_read::?relay`; Banked call to: osal_nv_read
MOV A,#0x4
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 37)
MOV A,R1
JZ $+5
LJMP ??BindRestoreFromNV_0 & 0xFFFF
// 780 {
// 781 // Read in the device list
// 782 for ( x = 0; x < hdr.numRecs; x++ )
MOV ?V0,R6
SJMP ??BindRestoreFromNV_1
// 783 {
// 784 if ( osal_nv_read( ZCD_NV_BINDING_TABLE,
// 785 (uint16)(sizeof(nvBindingHdr_t) + (x * NV_BIND_REC_SIZE)),
// 786 NV_BIND_REC_SIZE, &bind ) == ZSUCCESS )
// 787 {
// 788 dstAddr.addrMode = AddrNotPresent;
// 789
// 790 // Find the addresses
// 791 if ( bind.dstGroupMode )
// 792 {
// 793 // Setup the group address as the destination address.
// 794 dstAddr.addrMode = AddrGroup;
// 795 dstAddr.addr.shortAddr = bind.dstIdx;
// 796 }
// 797 else
// 798 {
// 799 // Find address index in address manager
// 800 bindingAddrMgsHelperConvert( bind.dstIdx, &dstAddr );
??BindRestoreFromNV_2:
; Setup parameters for call to function bindingAddrMgsHelperConvert
MOV A,#0x2
LCALL ?XSTACK_DISP102_8
MOV A,#0xd
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R3,A
LCALL `??bindingAddrMgsHelperConvert::?relay`; Banked call to: bindingAddrMgsHelperConvert
// 801 }
// 802
// 803 if ( dstAddr.addrMode != AddrNotPresent )
??BindRestoreFromNV_3:
MOV A,#0xa
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
JZ ??BindRestoreFromNV_4
// 804 {
// 805 bindAddEntry( bind.srcEP, &dstAddr,
// 806 bind.dstEP, bind.numClusterIds, bind.clusterIdList );
; Setup parameters for call to function bindAddEntry
MOV A,#0x11
LCALL ?XSTACK_DISP0_8
MOV ?V2,DPL
MOV ?V3,DPH
MOV R0,#?V2
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 39)
MOV A,#0x12
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV R5,A
MOV A,#0x11
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV R4,A
MOV A,#0x4
LCALL ?XSTACK_DISP101_8
MOV A,#0xd
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV R1,A
LCALL `??bindAddEntry::?relay`; Banked call to: bindAddEntry
MOV A,#0x2
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 37)
// 807 numAdded++;
INC R6
MOV A,R6
JNZ ??BindRestoreFromNV_4
INC R7
// 808 }
??BindRestoreFromNV_4:
INC ?V0
MOV A,?V0
JNZ ??BindRestoreFromNV_1
INC ?V1
??BindRestoreFromNV_1:
LCALL ?Subroutine24 & 0xFFFF
??CrossCallReturnLabel_85:
CLR C
MOV A,?V0
SUBB A,R0
MOV A,?V1
SUBB A,R1
JNC ??BindRestoreFromNV_0
; Setup parameters for call to function osal_nv_read
MOV A,#0xb
LCALL ?XSTACK_DISP100_8
MOV ?V2,R0
MOV ?V3,R1
MOV R0,#?V2
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 39)
MOV DPTR,#gBIND_REC_SIZE
LCALL ?PUSH_XSTACK8_C_TWO
CFI CFA_XSP16 add(XSP16, 41)
MOV R0,?V0
MOV DPTR,#gBIND_REC_SIZE
CLR A
MOVC A,@A+DPTR
MOV ?V2,A
MOV A,#0x1
MOVC A,@A+DPTR
MOV ?V3,A
MOV A,R0
MOV B,?V2
MUL AB
XCH A,R0
MOV R2,B
MOV B,?V3
MUL AB
ADD A,R2
MOV R2,A
MOV B,?V2
MOV A,?V1
MUL AB
ADD A,R2
MOV R1,A
LCALL ?Subroutine28 & 0xFFFF
??CrossCallReturnLabel_78:
LCALL `??osal_nv_read::?relay`; Banked call to: osal_nv_read
MOV A,#0x4
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 37)
MOV A,R1
JNZ ??BindRestoreFromNV_4
MOV A,#0xa
LCALL ?XSTACK_DISP0_8
CLR A
MOVX @DPTR,A
MOV A,#0xc
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
JNZ $+5
LJMP ??BindRestoreFromNV_2 & 0xFFFF
MOV A,#0xa
LCALL ?XSTACK_DISP0_8
MOV A,#0x1
MOVX @DPTR,A
MOV A,#0xd
LCALL ?XSTACK_DISP0_8
LCALL ??Subroutine49_0 & 0xFFFF
// 809 }
// 810 }
// 811 }
??CrossCallReturnLabel_80:
MOV A,#0x2
LCALL ?XSTACK_DISP0_8
MOV A,R0
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
LJMP ??BindRestoreFromNV_3 & 0xFFFF
// 812 return ( numAdded );
??BindRestoreFromNV_0:
MOV A,R6
MOV R2,A
MOV A,R7
MOV R3,A
MOV A,#0x19
CFI EndBlock cfiBlock127
REQUIRE ?Subroutine5
; // Fall through to label ?Subroutine5
// 813 }
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine5:
CFI Block cfiBlock128 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 37)
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
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 Invalid
LCALL ?DEALLOC_XSTACK8
CFI EndBlock cfiBlock128
REQUIRE ??Subroutine45_0
; // Fall through to label ??Subroutine45_0
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
??Subroutine45_0:
CFI Block cfiBlock129 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 12)
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
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)))
MOV R7,#0x4
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock129
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine28:
CFI Block cfiCond130 Using cfiCommon0
CFI Function BindRestoreFromNV
CFI Conditional ??CrossCallReturnLabel_78
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 41)
CFI Block cfiCond131 Using cfiCommon0
CFI (cfiCond131) Function BindWriteNV
CFI (cfiCond131) Conditional ??CrossCallReturnLabel_79
CFI (cfiCond131) R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond131) VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond131) V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond131) V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond131) V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond131) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond131) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond131) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond131) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond131) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond131) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond131) CFA_SP SP+-2
CFI (cfiCond131) CFA_XSP16 add(XSP16, 31)
CFI Block cfiPicker132 Using cfiCommon1
CFI (cfiPicker132) NoFunction
CFI (cfiPicker132) Picker
MOV A,R0
ADD A,#0x2
MOV R4,A
CLR A
CFI EndBlock cfiCond130
CFI EndBlock cfiCond131
CFI EndBlock cfiPicker132
REQUIRE ??Subroutine46_0
; // Fall through to label ??Subroutine46_0
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
??Subroutine46_0:
CFI Block cfiCond133 Using cfiCommon0
CFI Function BindInitNV
CFI Conditional ??CrossCallReturnLabel_77
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 12)
CFI Block cfiCond134 Using cfiCommon0
CFI (cfiCond134) Function BindRestoreFromNV
CFI (cfiCond134) Conditional ??CrossCallReturnLabel_78
CFI (cfiCond134) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond134) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond134) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond134) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond134) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond134) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond134) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond134) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond134) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond134) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond134) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond134) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond134) CFA_SP SP+-2
CFI (cfiCond134) CFA_XSP16 add(XSP16, 41)
CFI Block cfiCond135 Using cfiCommon0
CFI (cfiCond135) Function BindWriteNV
CFI (cfiCond135) Conditional ??CrossCallReturnLabel_79
CFI (cfiCond135) R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond135) VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond135) V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond135) V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond135) V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond135) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond135) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond135) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond135) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond135) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond135) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond135) CFA_SP SP+-2
CFI (cfiCond135) CFA_XSP16 add(XSP16, 31)
CFI Block cfiPicker136 Using cfiCommon1
CFI (cfiPicker136) NoFunction
CFI (cfiPicker136) Picker
ADDC A,R1
MOV R5,A
MOV R2,#0x41
MOV R3,#0x0
RET
CFI EndBlock cfiCond133
CFI EndBlock cfiCond134
CFI EndBlock cfiCond135
CFI EndBlock cfiPicker136
// 814
// 815 /*********************************************************************
// 816 * @fn BindWriteNV
// 817 *
// 818 * @brief Save the Binding Table in NV
// 819 *
// 820 * @param none
// 821 *
// 822 * @return none
// 823 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 824 void BindWriteNV( void )
BindWriteNV:
CFI Block cfiBlock137 Using cfiCommon0
CFI Function BindWriteNV
CODE
// 825 {
FUNCALL BindWriteNV, osal_memcpy
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 30, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 30, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL BindWriteNV, osal_nv_write
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 31, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 31, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL BindWriteNV, osal_nv_write
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 31, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 31, 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: 16
MOV A,#-0x10
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 27)
// 826 BindingEntry_t *pBind;
// 827 BindingEntry_t bind;
// 828 nvBindingHdr_t hdr;
// 829 uint16 x;
// 830
// 831 hdr.numRecs = 0;
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
CLR A
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
// 832
// 833 for ( x = 0; x < gNWK_MAX_BINDING_ENTRIES; x++ )
MOV R6,A
MOV R7,A
SJMP ??BindWriteNV_0
// 834 {
// 835 pBind = &BindingTable[x];
??BindWriteNV_1:
LCALL ?Subroutine9 & 0xFFFF
// 836
// 837 if ( pBind->srcEP != NV_BIND_EMPTY )
??CrossCallReturnLabel_73:
CPL A
JZ ??BindWriteNV_2
// 838 {
// 839 osal_memcpy( &bind, pBind, gBIND_REC_SIZE );
; Setup parameters for call to function osal_memcpy
MOV ?V0,DPL
MOV ?V1,DPH
MOV ?V2,#0x0
MOV R0,#?V0
LCALL ?PUSH_XSTACK_I_THREE
CFI CFA_XSP16 add(XSP16, 30)
LCALL ?Subroutine13 & 0xFFFF
??CrossCallReturnLabel_59:
MOV A,#0x5
LCALL ?XSTACK_DISP101_8
LCALL `??osal_memcpy::?relay`; Banked call to: osal_memcpy
MOV A,#0x3
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 27)
// 840
// 841 // Save the record to NV
// 842 osal_nv_write( ZCD_NV_BINDING_TABLE,
// 843 (uint16)((sizeof(nvBindingHdr_t)) + (hdr.numRecs * NV_BIND_REC_SIZE)),
// 844 NV_BIND_REC_SIZE, &bind );
; Setup parameters for call to function osal_nv_write
MOV A,#0x2
LCALL ?XSTACK_DISP100_8
MOV ?V0,R0
MOV ?V1,R1
MOV R0,#?V0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 29)
MOV DPTR,#gBIND_REC_SIZE
LCALL ?PUSH_XSTACK8_C_TWO
CFI CFA_XSP16 add(XSP16, 31)
MOV A,#0x4
LCALL ?XSTACK_DISP0_8
LCALL ??Subroutine49_0 & 0xFFFF
??CrossCallReturnLabel_81:
MOV DPTR,#gBIND_REC_SIZE
LCALL ?Subroutine8 & 0xFFFF
??CrossCallReturnLabel_6:
LCALL ?Subroutine28 & 0xFFFF
??CrossCallReturnLabel_79:
LCALL `??osal_nv_write::?relay`; Banked call to: osal_nv_write
MOV A,#0x4
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 27)
// 845 hdr.numRecs++;
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
ADD A,#0x1
MOVX @DPTR,A
INC DPTR
MOVX A,@DPTR
ADDC A,#0x0
MOVX @DPTR,A
// 846 }
// 847 }
??BindWriteNV_2:
INC R6
MOV A,R6
JNZ ??BindWriteNV_0
INC R7
??BindWriteNV_0:
LCALL ?Subroutine10 & 0xFFFF
??CrossCallReturnLabel_9:
JC ??BindWriteNV_1
// 848
// 849 // Save off the header
// 850 osal_nv_write( ZCD_NV_BINDING_TABLE, 0, sizeof(nvBindingHdr_t), &hdr );
; Setup parameters for call to function osal_nv_write
MOV R0,?XSP + 0
MOV R1,?XSP + 1
MOV ?V0,R0
MOV ?V1,R1
MOV R0,#?V0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 29)
MOV ?V0,#0x2
MOV ?V1,#0x0
MOV R0,#?V0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 31)
MOV R4,#0x0
MOV R5,#0x0
MOV R2,#0x41
MOV R3,#0x0
LCALL `??osal_nv_write::?relay`; Banked call to: osal_nv_write
MOV A,#0x4
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 27)
// 851 }
MOV A,#0x10
LCALL ?DEALLOC_XSTACK8
CFI EndBlock cfiBlock137
REQUIRE ?Subroutine3
; // Fall through to label ?Subroutine3
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine3:
CFI Block cfiBlock138 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 11)
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
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)))
MOV R7,#0x3
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock138
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine8:
CFI Block cfiCond139 Using cfiCommon0
CFI Function BindInitNV
CFI Conditional ??CrossCallReturnLabel_5
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 12)
CFI Block cfiCond140 Using cfiCommon0
CFI (cfiCond140) Function BindWriteNV
CFI (cfiCond140) Conditional ??CrossCallReturnLabel_6
CFI (cfiCond140) R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond140) VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond140) V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond140) V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond140) V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond140) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond140) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond140) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond140) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond140) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond140) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond140) CFA_SP SP+-2
CFI (cfiCond140) CFA_XSP16 add(XSP16, 31)
CFI Block cfiPicker141 Using cfiCommon1
CFI (cfiPicker141) NoFunction
CFI (cfiPicker141) Picker
LCALL ?Subroutine33 & 0xFFFF
??CrossCallReturnLabel_45:
MOV A,R0
MOV B,?V0
MUL AB
XCH A,R0
MOV R2,B
MOV B,?V1
MUL AB
ADD A,R2
MOV R2,A
MOV B,?V0
MOV A,R1
MUL AB
ADD A,R2
MOV R1,A
RET
CFI EndBlock cfiCond139
CFI EndBlock cfiCond140
CFI EndBlock cfiPicker141
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine33:
CFI Block cfiCond142 Using cfiCommon0
CFI Function InitBindingTable
CFI Conditional ??CrossCallReturnLabel_44
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 10)
CFI Block cfiCond143 Using cfiCommon0
CFI (cfiCond143) Function BindInitNV
CFI (cfiCond143) Conditional ??CrossCallReturnLabel_45, ??CrossCallReturnLabel_5
CFI (cfiCond143) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond143) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond143) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond143) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond143) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond143) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond143) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond143) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond143) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond143) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond143) CFA_SP SP+-4
CFI (cfiCond143) CFA_XSP16 add(XSP16, 12)
CFI Block cfiCond144 Using cfiCommon0
CFI (cfiCond144) Function BindWriteNV
CFI (cfiCond144) Conditional ??CrossCallReturnLabel_45, ??CrossCallReturnLabel_6
CFI (cfiCond144) R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond144) VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond144) V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond144) V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond144) V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond144) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond144) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond144) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond144) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond144) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond144) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond144) CFA_SP SP+-4
CFI (cfiCond144) CFA_XSP16 add(XSP16, 31)
CFI Block cfiPicker145 Using cfiCommon1
CFI (cfiPicker145) NoFunction
CFI (cfiPicker145) Picker
CLR A
MOVC A,@A+DPTR
MOV ?V0,A
MOV A,#0x1
MOVC A,@A+DPTR
MOV ?V1,A
RET
CFI EndBlock cfiCond142
CFI EndBlock cfiCond143
CFI EndBlock cfiCond144
CFI EndBlock cfiPicker145
// 852
// 853 /*********************************************************************
// 854 * @fn bindUpdateAddr
// 855 *
// 856 * @brief Update the network address in the binding table.
// 857 *
// 858 * @param oldAddr - old network address
// 859 * @param newAddr - new network address
// 860 *
// 861 * @return none
// 862 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 863 void bindUpdateAddr( uint16 oldAddr, uint16 newAddr )
bindUpdateAddr:
CFI Block cfiBlock146 Using cfiCommon0
CFI Function bindUpdateAddr
CODE
// 864 {
FUNCALL bindUpdateAddr, bindingAddrMgsHelperFind
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 21, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 21, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL bindUpdateAddr, bindingAddrMgsHelperFind
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 21, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 21, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
REQUIRE ?V0
REQUIRE ?V1
REQUIRE ?V2
REQUIRE ?V3
MOV A,#-0xc
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 V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 12)
; Saved register size: 12
; Auto size: 9
MOV A,#-0x9
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 21)
MOV ?V0,R4
MOV ?V1,R5
// 865 uint16 oldIdx;
// 866 uint16 newIdx;
// 867 zAddrType_t addr;
// 868 uint16 x;
// 869 BindingEntry_t *pBind;
// 870
// 871 addr.addrMode = Addr16Bit;
MOV A,#0x8
LCALL ?XSTACK_DISP0_8
MOV A,#0x2
MOVX @DPTR,A
// 872 addr.addr.shortAddr = oldAddr;
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
LCALL ?Subroutine34 & 0xFFFF
// 873 oldIdx = bindingAddrMgsHelperFind( &addr );
??CrossCallReturnLabel_46:
LCALL `??bindingAddrMgsHelperFind::?relay`; Banked call to: bindingAddrMgsHelperFind
MOV ?V2,R2
MOV ?V3,R3
MOV R6,?V2
MOV R7,?V3
// 874 addr.addr.shortAddr = newAddr;
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
LCALL ?Subroutine20 & 0xFFFF
// 875 newIdx = bindingAddrMgsHelperFind( &addr );
??CrossCallReturnLabel_54:
; Setup parameters for call to function bindingAddrMgsHelperFind
MOV R2,?XSP + 0
MOV R3,?XSP + 1
LCALL `??bindingAddrMgsHelperFind::?relay`; Banked call to: bindingAddrMgsHelperFind
MOV ?V0,R2
MOV ?V1,R3
// 876
// 877 for ( x = 0; x < gNWK_MAX_BINDING_ENTRIES; x++ )
MOV R0,#0x0
MOV R1,#0x0
SJMP ??bindUpdateAddr_0
// 878 {
// 879 pBind = &BindingTable[x];
??bindUpdateAddr_1:
MOV A,R0
MOV R2,A
MOV A,R1
MOV R3,A
MOV A,R2
MOV B,#0xe
MUL AB
MOV R2,A
MOV R4,B
MOV B,#0xe
MOV A,R3
MUL AB
ADD A,R4
MOV R3,A
MOV A,#BindingTable & 0xff
ADD A,R2
MOV R2,A
MOV A,#(BindingTable >> 8) & 0xff
ADDC A,R3
MOV R3,A
// 880
// 881 if ( pBind->dstIdx == oldIdx )
MOV DPL,R2
MOV DPH,A
INC DPTR
INC DPTR
MOVX A,@DPTR
XRL A,R6
JNZ ??bindUpdateAddr_2
INC DPTR
MOVX A,@DPTR
XRL A,R7
??bindUpdateAddr_2:
JNZ ??CrossCallReturnLabel_55
// 882 {
// 883 pBind->dstIdx = newIdx;
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
LCALL ?Subroutine20 & 0xFFFF
// 884 }
// 885 }
??CrossCallReturnLabel_55:
INC R0
MOV A,R0
JNZ ??bindUpdateAddr_0
INC R1
??bindUpdateAddr_0:
LCALL ?Subroutine7 & 0xFFFF
??CrossCallReturnLabel_4:
JC ??bindUpdateAddr_1
// 886 }
MOV A,#0x9
LJMP ?Subroutine5 & 0xFFFF
CFI EndBlock cfiBlock146
// 887
// 888 /*********************************************************************
// 889 * @fn bindingAddrMgsHelperFind
// 890 *
// 891 * @brief Turns an zAddrType_t to an Addr Manager index
// 892 *
// 893 * @param addr - zAddrType_t
// 894 *
// 895 * @return INVALID_NODE_ADDR if not found, otherwise an index
// 896 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 897 uint16 bindingAddrMgsHelperFind( zAddrType_t *addr )
bindingAddrMgsHelperFind:
CFI Block cfiBlock147 Using cfiCommon0
CFI Function bindingAddrMgsHelperFind
CODE
// 898 {
FUNCALL bindingAddrMgsHelperFind, AddrMgrEntryLookupNwk
LOCFRAME ISTACK, 2, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 13, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 13, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL bindingAddrMgsHelperFind, AddrMgrExtAddrSet
LOCFRAME ISTACK, 2, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 13, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 13, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL bindingAddrMgsHelperFind, AddrMgrEntryLookupExt
LOCFRAME ISTACK, 2, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 13, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 13, 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: 13
MOV A,#-0xd
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 13)
// 899 AddrMgrEntry_t entry;
// 900
// 901 // Resolve addresses with the address manager
// 902 entry.user = ADDRMGR_USER_BINDING;
LCALL ?Subroutine17 & 0xFFFF
// 903 if ( addr->addrMode == Addr16Bit )
??CrossCallReturnLabel_21:
JNZ ??bindingAddrMgsHelperFind_0
// 904 {
// 905 entry.nwkAddr = addr->addr.shortAddr;
MOV DPL,R2
MOV DPH,R3
LCALL ?Subroutine23 & 0xFFFF
// 906 AddrMgrEntryLookupNwk( &entry );
// 907 }
??CrossCallReturnLabel_29:
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine18 & 0xFFFF
??CrossCallReturnLabel_23:
SJMP ??CrossCallReturnLabel_40
// 908 else
// 909 {
// 910 AddrMgrExtAddrSet( entry.extAddr, addr->addr.extAddr );
??bindingAddrMgsHelperFind_0:
; Setup parameters for call to function AddrMgrExtAddrSet
MOV A,R2
MOV R4,A
MOV A,R3
MOV R5,A
MOV A,#0x3
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine30 & 0xFFFF
// 911 AddrMgrEntryLookupExt( &entry );
// 912 }
// 913
// 914 return ( entry.index );
??CrossCallReturnLabel_40:
SJMP ?Subroutine1
// 915 }
CFI EndBlock cfiBlock147
// 916
// 917 /*********************************************************************
// 918 * @fn bindingAddrMgsHelperConvert
// 919 *
// 920 * @brief Convert an index into an zAddrType_t
// 921 *
// 922 * @param idx -
// 923 * @param addr - zAddrType_t
// 924 *
// 925 * @return TRUE if found, FALSE if not
// 926 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 927 uint8 bindingAddrMgsHelperConvert( uint16 idx, zAddrType_t *addr )
bindingAddrMgsHelperConvert:
CFI Block cfiBlock148 Using cfiCommon0
CFI Function bindingAddrMgsHelperConvert
CODE
// 928 {
FUNCALL bindingAddrMgsHelperConvert, AddrMgrEntryGet
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 22, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 22, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL bindingAddrMgsHelperConvert, sAddrExtCpy
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 22, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 22, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
REQUIRE ?V0
MOV A,#-0x9
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 V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 9)
; Saved register size: 9
; Auto size: 13
MOV A,#-0xd
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 22)
MOV A,R4
MOV R6,A
MOV A,R5
MOV R7,A
// 929 AddrMgrEntry_t entry;
// 930 uint8 stat;
// 931
// 932 // Resolve addresses with the address manager
// 933 entry.user = ADDRMGR_USER_BINDING;
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV A,#0x4
MOVX @DPTR,A
// 934 entry.index = idx;
MOV A,#0xb
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine19 & 0xFFFF
// 935 stat = AddrMgrEntryGet( &entry );
??CrossCallReturnLabel_25:
MOV A,R1
MOV ?V0,A
// 936 if ( stat )
JZ ??bindingAddrMgsHelperConvert_0
// 937 {
// 938 addr->addrMode = Addr64Bit;
MOV DPL,R6
MOV DPH,R7
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOV A,#0x3
MOVX @DPTR,A
// 939 osal_cpyExtAddr( addr->addr.extAddr, entry.extAddr );
; Setup parameters for call to function sAddrExtCpy
LCALL ?XSTACK_DISP0_8
MOV R4,DPL
MOV R5,DPH
MOV A,R6
MOV R2,A
MOV A,R7
MOV R3,A
LCALL `??sAddrExtCpy::?relay`; Banked call to: sAddrExtCpy
// 940 }
// 941
// 942 return ( stat );
??bindingAddrMgsHelperConvert_0:
MOV R1,?V0
MOV A,#0xd
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 9)
LJMP ?Subroutine2 & 0xFFFF
// 943 }
CFI EndBlock cfiBlock148
// 944
// 945 /*********************************************************************
// 946 * @fn bindingAddrMgsHelperConvertShort
// 947 *
// 948 * @brief Convert an index into a short address
// 949 *
// 950 * @param idx -
// 951 *
// 952 * @return INVALID_NODE_ADDR if not available, otherwise the short address
// 953 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 954 uint16 bindingAddrMgsHelperConvertShort( uint16 idx )
bindingAddrMgsHelperConvertShort:
CFI Block cfiBlock149 Using cfiCommon0
CFI Function bindingAddrMgsHelperConvertShort
CODE
// 955 {
FUNCALL bindingAddrMgsHelperConvertShort, AddrMgrEntryGet
LOCFRAME ISTACK, 2, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 13, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 13, 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: 13
MOV A,#-0xd
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 13)
// 956 AddrMgrEntry_t entry;
// 957
// 958 // Resolve addresses with the address manager
// 959 entry.user = ADDRMGR_USER_BINDING;
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV A,#0x4
MOVX @DPTR,A
// 960 entry.index = idx;
MOV A,#0xb
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine19 & 0xFFFF
// 961 AddrMgrEntryGet( &entry );
// 962
// 963 return ( entry.nwkAddr );
??CrossCallReturnLabel_26:
MOV A,#0x1
SJMP ??Subroutine47_0
// 964 }
CFI EndBlock cfiBlock149
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine19:
CFI Block cfiCond150 Using cfiCommon0
CFI Function bindingAddrMgsHelperConvert
CFI Conditional ??CrossCallReturnLabel_25
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 22)
CFI Block cfiCond151 Using cfiCommon0
CFI (cfiCond151) Function bindingAddrMgsHelperConvertShort
CFI (cfiCond151) Conditional ??CrossCallReturnLabel_26
CFI (cfiCond151) DPL0 Frame(CFA_SP, 4)
CFI (cfiCond151) DPH0 Frame(CFA_SP, 5)
CFI (cfiCond151) CFA_SP SP+-7
CFI (cfiCond151) CFA_XSP16 add(XSP16, 13)
CFI Block cfiPicker152 Using cfiCommon1
CFI (cfiPicker152) NoFunction
CFI (cfiPicker152) Picker
LCALL ?Subroutine34 & 0xFFFF
??CrossCallReturnLabel_47:
LCALL `??AddrMgrEntryGet::?relay`; Banked call to: AddrMgrEntryGet
RET
CFI EndBlock cfiCond150
CFI EndBlock cfiCond151
CFI EndBlock cfiPicker152
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine34:
CFI Block cfiCond153 Using cfiCommon0
CFI Function bindUpdateAddr
CFI Conditional ??CrossCallReturnLabel_46
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 21)
CFI Block cfiCond154 Using cfiCommon0
CFI (cfiCond154) Function bindingAddrMgsHelperConvert
CFI (cfiCond154) Conditional ??CrossCallReturnLabel_47, ??CrossCallReturnLabel_25
CFI (cfiCond154) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond154) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond154) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond154) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond154) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond154) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond154) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond154) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond154) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond154) CFA_SP SP+-4
CFI (cfiCond154) CFA_XSP16 add(XSP16, 22)
CFI Block cfiCond155 Using cfiCommon0
CFI (cfiCond155) Function bindingAddrMgsHelperConvertShort
CFI (cfiCond155) Conditional ??CrossCallReturnLabel_47, ??CrossCallReturnLabel_26
CFI (cfiCond155) DPL0 Frame(CFA_SP, 4)
CFI (cfiCond155) DPH0 Frame(CFA_SP, 5)
CFI (cfiCond155) CFA_SP SP+-9
CFI (cfiCond155) CFA_XSP16 add(XSP16, 13)
CFI Block cfiPicker156 Using cfiCommon1
CFI (cfiPicker156) NoFunction
CFI (cfiPicker156) Picker
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
; Setup parameters for call to function bindingAddrMgsHelperFind
; Setup parameters for call to function AddrMgrEntryGet
; Setup parameters for call to function AddrMgrEntryGet
MOV R2,?XSP + 0
MOV R3,?XSP + 1
RET
CFI EndBlock cfiCond153
CFI EndBlock cfiCond154
CFI EndBlock cfiCond155
CFI EndBlock cfiPicker156
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine1:
CFI Block cfiBlock157 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+-5
CFI CFA_XSP16 add(XSP16, 13)
CFI DPL0 Frame(CFA_SP, 4)
CFI DPH0 Frame(CFA_SP, 5)
MOV A,#0xb
CFI EndBlock cfiBlock157
REQUIRE ??Subroutine47_0
; // Fall through to label ??Subroutine47_0
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
??Subroutine47_0:
CFI Block cfiBlock158 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+-5
CFI CFA_XSP16 add(XSP16, 13)
CFI DPL0 Frame(CFA_SP, 4)
CFI DPH0 Frame(CFA_SP, 5)
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R3,A
MOV A,#0xd
LCALL ?DEALLOC_XSTACK8
CFI EndBlock cfiBlock158
REQUIRE ??Subroutine48_0
; // Fall through to label ??Subroutine48_0
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
??Subroutine48_0:
CFI Block cfiBlock159 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 cfiBlock159
// 965
// 966 /*********************************************************************
// 967 * @fn bindAddrMgrLocalLoad
// 968 *
// 969 * @brief Load local(self and parent) address information into
// 970 * Address Manager
// 971 *
// 972 * @param none
// 973 *
// 974 * @return none
// 975 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 976 void bindAddrMgrLocalLoad( void )
bindAddrMgrLocalLoad:
CFI Block cfiBlock160 Using cfiCommon0
CFI Function bindAddrMgrLocalLoad
CODE
// 977 {
FUNCALL bindAddrMgrLocalLoad, NLME_GetExtAddr
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 23, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 23, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL bindAddrMgrLocalLoad, AddrMgrExtAddrSet
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 23, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 23, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL bindAddrMgrLocalLoad, AddrMgrEntryUpdate
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 23, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 23, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL bindAddrMgrLocalLoad, NLME_GetCoordShortAddr
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 23, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 23, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL bindAddrMgrLocalLoad, NLME_GetCoordExtAddr
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 23, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 23, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL bindAddrMgrLocalLoad, AddrMgrEntryUpdate
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 23, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 23, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
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: 13
MOV A,#-0xd
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 23)
// 978 AddrMgrEntry_t entry;
// 979 uint16 parent;
// 980
// 981 // add "local"(self and parent) address informtion into the Address
// 982 // Manager
// 983 if ( bindAddrMgrLocalLoaded == FALSE )
MOV DPTR,#bindAddrMgrLocalLoaded
MOVX A,@DPTR
JNZ ??bindAddrMgrLocalLoad_0
// 984 {
// 985 // add the device's address information
// 986 entry.user = ADDRMGR_USER_BINDING;
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV A,#0x4
MOVX @DPTR,A
// 987 entry.nwkAddr = _NIB.nwkDevAddress;
MOV DPTR,#_NIB + 20
LCALL ?Subroutine23 & 0xFFFF
??CrossCallReturnLabel_30:
LCALL ?XSTACK_DISP0_8
MOV A,R0
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
// 988 AddrMgrExtAddrSet( entry.extAddr, NLME_GetExtAddr() );
; Setup parameters for call to function NLME_GetExtAddr
LCALL `??NLME_GetExtAddr::?relay`; Banked call to: NLME_GetExtAddr
MOV ?V0,R2
MOV ?V1,R3
MOV R4,?V0
MOV R5,?V1
; Setup parameters for call to function AddrMgrExtAddrSet
MOV A,#0x3
LCALL ?XSTACK_DISP0_8
MOV R2,DPL
MOV R3,DPH
LCALL `??AddrMgrExtAddrSet::?relay`; Banked call to: AddrMgrExtAddrSet
// 989 AddrMgrEntryUpdate( &entry );
; Setup parameters for call to function AddrMgrEntryUpdate
MOV R2,?XSP + 0
MOV R3,?XSP + 1
LCALL `??AddrMgrEntryUpdate::?relay`; Banked call to: AddrMgrEntryUpdate
// 990
// 991 // make sure parent address is valid
// 992 parent = NLME_GetCoordShortAddr();
; Setup parameters for call to function NLME_GetCoordShortAddr
LCALL `??NLME_GetCoordShortAddr::?relay`; Banked call to: NLME_GetCoordShortAddr
MOV ?V0,R2
MOV ?V1,R3
MOV R0,?V0
MOV R1,?V1
// 993 if ( ( parent != entry.nwkAddr ) &&
// 994 ( parent != INVALID_NODE_ADDR ) )
MOV A,#0x1
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
XRL A,R0
JNZ ??bindAddrMgrLocalLoad_1
INC DPTR
MOVX A,@DPTR
XRL A,R1
??bindAddrMgrLocalLoad_1:
JZ ??bindAddrMgrLocalLoad_2
MOV A,#-0x2
XRL A,R0
JNZ ??bindAddrMgrLocalLoad_3
MOV A,#-0x1
XRL A,R1
??bindAddrMgrLocalLoad_3:
JZ ??bindAddrMgrLocalLoad_2
// 995 {
// 996 // add the parent's address information
// 997 entry.nwkAddr = parent;
MOV A,#0x1
LCALL ?XSTACK_DISP0_8
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
// 998 NLME_GetCoordExtAddr( entry.extAddr );
; Setup parameters for call to function NLME_GetCoordExtAddr
MOV A,#0x3
LCALL ?XSTACK_DISP0_8
MOV R2,DPL
MOV R3,DPH
LCALL `??NLME_GetCoordExtAddr::?relay`; Banked call to: NLME_GetCoordExtAddr
// 999 AddrMgrEntryUpdate( &entry );
; Setup parameters for call to function AddrMgrEntryUpdate
MOV R2,?XSP + 0
MOV R3,?XSP + 1
LCALL `??AddrMgrEntryUpdate::?relay`; Banked call to: AddrMgrEntryUpdate
// 1000 }
// 1001
// 1002 bindAddrMgrLocalLoaded = TRUE;
??bindAddrMgrLocalLoad_2:
MOV DPTR,#bindAddrMgrLocalLoaded
MOV A,#0x1
MOVX @DPTR,A
// 1003 }
// 1004 }
??bindAddrMgrLocalLoad_0:
MOV A,#0xd
LJMP ?Subroutine0 & 0xFFFF
CFI EndBlock cfiBlock160
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine23:
CFI Block cfiCond161 Using cfiCommon0
CFI Function bindingAddrMgsHelperFind
CFI Conditional ??CrossCallReturnLabel_29
CFI DPL0 Frame(CFA_SP, 4)
CFI DPH0 Frame(CFA_SP, 5)
CFI CFA_SP SP+-7
CFI CFA_XSP16 add(XSP16, 13)
CFI Block cfiCond162 Using cfiCommon0
CFI (cfiCond162) Function bindAddrMgrLocalLoad
CFI (cfiCond162) Conditional ??CrossCallReturnLabel_30
CFI (cfiCond162) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond162) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond162) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond162) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond162) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond162) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond162) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond162) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond162) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond162) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond162) CFA_SP SP+-2
CFI (cfiCond162) CFA_XSP16 add(XSP16, 23)
CFI Block cfiCond163 Using cfiCommon0
CFI (cfiCond163) Function bindAddrIndexGet
CFI (cfiCond163) Conditional ??CrossCallReturnLabel_31
CFI (cfiCond163) DPL0 Frame(CFA_SP, 4)
CFI (cfiCond163) DPH0 Frame(CFA_SP, 5)
CFI (cfiCond163) CFA_SP SP+-7
CFI (cfiCond163) CFA_XSP16 add(XSP16, 13)
CFI Block cfiPicker164 Using cfiCommon1
CFI (cfiPicker164) NoFunction
CFI (cfiPicker164) Picker
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
MOV A,#0x1
RET
CFI EndBlock cfiCond161
CFI EndBlock cfiCond162
CFI EndBlock cfiCond163
CFI EndBlock cfiPicker164
// 1005
// 1006 /*********************************************************************
// 1007 * @fn bindAddrIndexGet
// 1008 *
// 1009 * @brief Get bind address index.
// 1010 *
// 1011 * @param addr - <zAddrType_t>
// 1012 *
// 1013 * @return (uint16) address index
// 1014 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 1015 uint16 bindAddrIndexGet( zAddrType_t* addr )
bindAddrIndexGet:
CFI Block cfiBlock165 Using cfiCommon0
CFI Function bindAddrIndexGet
CODE
// 1016 {
FUNCALL bindAddrIndexGet, AddrMgrEntryLookupNwk
LOCFRAME ISTACK, 2, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 13, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 13, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL bindAddrIndexGet, AddrMgrExtAddrSet
LOCFRAME ISTACK, 2, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 13, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 13, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL bindAddrIndexGet, AddrMgrEntryLookupExt
LOCFRAME ISTACK, 2, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 13, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 13, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL bindAddrIndexGet, AddrMgrEntryUpdate
LOCFRAME ISTACK, 2, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 13, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 13, 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: 13
MOV A,#-0xd
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 13)
// 1017 AddrMgrEntry_t entry;
// 1018 uint8 update;
// 1019
// 1020 update = FALSE;
// 1021
// 1022 // sync binding addresses with the address manager
// 1023 entry.user = ADDRMGR_USER_BINDING;
LCALL ?Subroutine17 & 0xFFFF
// 1024
// 1025 if ( addr->addrMode == Addr16Bit )
??CrossCallReturnLabel_22:
MOV DPL,R2
MOV DPH,R3
JNZ ??bindAddrIndexGet_0
// 1026 {
// 1027 entry.nwkAddr = addr->addr.shortAddr;
LCALL ?Subroutine23 & 0xFFFF
// 1028
// 1029 if ( AddrMgrEntryLookupNwk( &entry ) == FALSE )
// 1030 {
// 1031 update = TRUE;
// 1032 }
// 1033 }
??CrossCallReturnLabel_31:
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine18 & 0xFFFF
??CrossCallReturnLabel_24:
MOV A,R1
JNZ ??bindAddrIndexGet_1
SJMP ??bindAddrIndexGet_2
// 1034 else if ( addr->addrMode == Addr64Bit )
??bindAddrIndexGet_0:
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
XRL A,#0x3
JNZ ??bindAddrIndexGet_3
// 1035 {
// 1036 AddrMgrExtAddrSet( entry.extAddr, addr->addr.extAddr );
; Setup parameters for call to function AddrMgrExtAddrSet
MOV A,R2
MOV R4,A
MOV A,R3
MOV R5,A
MOV A,#0x3
LCALL ?XSTACK_DISP0_8
LCALL ?Subroutine30 & 0xFFFF
// 1037
// 1038 if ( AddrMgrEntryLookupExt( &entry ) == FALSE )
??CrossCallReturnLabel_41:
MOV A,R1
JNZ ??bindAddrIndexGet_1
// 1039 {
// 1040 update = TRUE;
// 1041 }
// 1042 }
// 1043 else if ( addr->addrMode == AddrGroup )
// 1044 {
// 1045 entry.index = addr->addr.shortAddr;
// 1046 }
// 1047 else
// 1048 {
// 1049 entry.index = INVALID_NODE_ADDR;
// 1050 }
// 1051
// 1052 if ( update )
// 1053 {
// 1054 AddrMgrEntryUpdate( &entry );
??bindAddrIndexGet_2:
; Setup parameters for call to function AddrMgrEntryUpdate
MOV R2,?XSP + 0
MOV R3,?XSP + 1
LCALL `??AddrMgrEntryUpdate::?relay`; Banked call to: AddrMgrEntryUpdate
SJMP ??bindAddrIndexGet_1
// 1055 }
??bindAddrIndexGet_3:
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
XRL A,#0x1
JNZ ??bindAddrIndexGet_4
MOV DPL,R2
MOV DPH,R3
LCALL ??Subroutine49_0 & 0xFFFF
??CrossCallReturnLabel_82:
MOV A,#0xb
LCALL ?XSTACK_DISP0_8
MOV A,R0
MOVX @DPTR,A
INC DPTR
MOV A,R1
SJMP ??bindAddrIndexGet_5
??bindAddrIndexGet_4:
MOV A,#0xb
LCALL ?XSTACK_DISP0_8
MOV A,#-0x2
MOVX @DPTR,A
INC DPTR
INC A
??bindAddrIndexGet_5:
MOVX @DPTR,A
// 1056
// 1057 return entry.index;
??bindAddrIndexGet_1:
LJMP ?Subroutine1 & 0xFFFF
// 1058 }
CFI EndBlock cfiBlock165
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine30:
CFI Block cfiCond166 Using cfiCommon0
CFI Function bindingAddrMgsHelperFind
CFI Conditional ??CrossCallReturnLabel_40
CFI DPL0 Frame(CFA_SP, 4)
CFI DPH0 Frame(CFA_SP, 5)
CFI CFA_SP SP+-7
CFI CFA_XSP16 add(XSP16, 13)
CFI Block cfiCond167 Using cfiCommon0
CFI (cfiCond167) Function bindAddrIndexGet
CFI (cfiCond167) Conditional ??CrossCallReturnLabel_41
CFI (cfiCond167) DPL0 Frame(CFA_SP, 4)
CFI (cfiCond167) DPH0 Frame(CFA_SP, 5)
CFI (cfiCond167) CFA_SP SP+-7
CFI (cfiCond167) CFA_XSP16 add(XSP16, 13)
CFI Block cfiPicker168 Using cfiCommon1
CFI (cfiPicker168) NoFunction
CFI (cfiPicker168) Picker
MOV R2,DPL
MOV R3,DPH
LCALL `??AddrMgrExtAddrSet::?relay`; Banked call to: AddrMgrExtAddrSet
; Setup parameters for call to function AddrMgrEntryLookupExt
; Setup parameters for call to function AddrMgrEntryLookupExt
MOV R2,?XSP + 0
MOV R3,?XSP + 1
LCALL `??AddrMgrEntryLookupExt::?relay`; Banked call to: AddrMgrEntryLookupExt
RET
CFI EndBlock cfiCond166
CFI EndBlock cfiCond167
CFI EndBlock cfiPicker168
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine24:
CFI Block cfiCond169 Using cfiCommon0
CFI Function bindAddEntry
CFI Conditional ??CrossCallReturnLabel_83
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 18)
CFI Block cfiCond170 Using cfiCommon0
CFI (cfiCond170) Function bindAddEntry
CFI (cfiCond170) Conditional ??CrossCallReturnLabel_84
CFI (cfiCond170) R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI (cfiCond170) VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond170) V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond170) V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond170) V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond170) V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond170) V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond170) V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond170) V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond170) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond170) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond170) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond170) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond170) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond170) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond170) CFA_SP SP+-2
CFI (cfiCond170) CFA_XSP16 add(XSP16, 18)
CFI Block cfiCond171 Using cfiCommon0
CFI (cfiCond171) Function BindRestoreFromNV
CFI (cfiCond171) Conditional ??CrossCallReturnLabel_85
CFI (cfiCond171) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond171) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond171) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond171) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond171) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond171) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond171) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond171) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond171) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond171) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond171) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond171) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond171) CFA_SP SP+-2
CFI (cfiCond171) CFA_XSP16 add(XSP16, 37)
CFI Block cfiPicker172 Using cfiCommon1
CFI (cfiPicker172) NoFunction
CFI (cfiPicker172) Picker
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
CFI EndBlock cfiCond169
CFI EndBlock cfiCond170
CFI EndBlock cfiCond171
CFI EndBlock cfiPicker172
REQUIRE ??Subroutine49_0
; // Fall through to label ??Subroutine49_0
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
??Subroutine49_0:
CFI Block cfiCond173 Using cfiCommon0
CFI Function BindRestoreFromNV
CFI Conditional ??CrossCallReturnLabel_80
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 37)
CFI Block cfiCond174 Using cfiCommon0
CFI (cfiCond174) Function BindWriteNV
CFI (cfiCond174) Conditional ??CrossCallReturnLabel_81
CFI (cfiCond174) R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond174) VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond174) V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond174) V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond174) V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond174) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond174) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond174) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond174) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond174) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond174) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond174) CFA_SP SP+-2
CFI (cfiCond174) CFA_XSP16 add(XSP16, 31)
CFI Block cfiCond175 Using cfiCommon0
CFI (cfiCond175) Function bindAddrIndexGet
CFI (cfiCond175) Conditional ??CrossCallReturnLabel_82
CFI (cfiCond175) DPL0 Frame(CFA_SP, 4)
CFI (cfiCond175) DPH0 Frame(CFA_SP, 5)
CFI (cfiCond175) CFA_SP SP+-7
CFI (cfiCond175) CFA_XSP16 add(XSP16, 13)
CFI Block cfiCond176 Using cfiCommon0
CFI (cfiCond176) Function bindAddEntry
CFI (cfiCond176) Conditional ??CrossCallReturnLabel_83
CFI (cfiCond176) R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI (cfiCond176) VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond176) V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond176) V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond176) V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond176) V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond176) V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond176) V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond176) V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond176) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond176) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond176) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond176) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond176) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond176) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond176) CFA_SP SP+-2
CFI (cfiCond176) CFA_XSP16 add(XSP16, 18)
CFI Block cfiCond177 Using cfiCommon0
CFI (cfiCond177) Function bindAddEntry
CFI (cfiCond177) Conditional ??CrossCallReturnLabel_84
CFI (cfiCond177) R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI (cfiCond177) VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond177) V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond177) V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond177) V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond177) V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond177) V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond177) V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond177) V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond177) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond177) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond177) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond177) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond177) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond177) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond177) CFA_SP SP+-2
CFI (cfiCond177) CFA_XSP16 add(XSP16, 18)
CFI Block cfiCond178 Using cfiCommon0
CFI (cfiCond178) Function BindRestoreFromNV
CFI (cfiCond178) Conditional ??CrossCallReturnLabel_85
CFI (cfiCond178) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond178) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond178) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond178) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond178) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond178) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond178) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond178) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond178) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond178) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond178) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond178) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond178) CFA_SP SP+-2
CFI (cfiCond178) CFA_XSP16 add(XSP16, 37)
CFI Block cfiPicker179 Using cfiCommon1
CFI (cfiPicker179) NoFunction
CFI (cfiPicker179) Picker
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
RET
CFI EndBlock cfiCond173
CFI EndBlock cfiCond174
CFI EndBlock cfiCond175
CFI EndBlock cfiCond176
CFI EndBlock cfiCond177
CFI EndBlock cfiCond178
CFI EndBlock cfiPicker179
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine18:
CFI Block cfiCond180 Using cfiCommon0
CFI Function bindingAddrMgsHelperFind
CFI Conditional ??CrossCallReturnLabel_23
CFI DPL0 Frame(CFA_SP, 4)
CFI DPH0 Frame(CFA_SP, 5)
CFI CFA_SP SP+-7
CFI CFA_XSP16 add(XSP16, 13)
CFI Block cfiCond181 Using cfiCommon0
CFI (cfiCond181) Function bindAddrIndexGet
CFI (cfiCond181) Conditional ??CrossCallReturnLabel_24
CFI (cfiCond181) DPL0 Frame(CFA_SP, 4)
CFI (cfiCond181) DPH0 Frame(CFA_SP, 5)
CFI (cfiCond181) CFA_SP SP+-7
CFI (cfiCond181) CFA_XSP16 add(XSP16, 13)
CFI Block cfiPicker182 Using cfiCommon1
CFI (cfiPicker182) NoFunction
CFI (cfiPicker182) Picker
MOV A,R0
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
; Setup parameters for call to function AddrMgrEntryLookupNwk
; Setup parameters for call to function AddrMgrEntryLookupNwk
MOV R2,?XSP + 0
MOV R3,?XSP + 1
LCALL `??AddrMgrEntryLookupNwk::?relay`; Banked call to: AddrMgrEntryLookupNwk
RET
CFI EndBlock cfiCond180
CFI EndBlock cfiCond181
CFI EndBlock cfiPicker182
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine17:
CFI Block cfiCond183 Using cfiCommon0
CFI Function bindingAddrMgsHelperFind
CFI Conditional ??CrossCallReturnLabel_21
CFI DPL0 Frame(CFA_SP, 4)
CFI DPH0 Frame(CFA_SP, 5)
CFI CFA_SP SP+-7
CFI CFA_XSP16 add(XSP16, 13)
CFI Block cfiCond184 Using cfiCommon0
CFI (cfiCond184) Function bindAddrIndexGet
CFI (cfiCond184) Conditional ??CrossCallReturnLabel_22
CFI (cfiCond184) DPL0 Frame(CFA_SP, 4)
CFI (cfiCond184) DPH0 Frame(CFA_SP, 5)
CFI (cfiCond184) CFA_SP SP+-7
CFI (cfiCond184) CFA_XSP16 add(XSP16, 13)
CFI Block cfiPicker185 Using cfiCommon1
CFI (cfiPicker185) NoFunction
CFI (cfiPicker185) Picker
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV A,#0x4
LCALL ?Subroutine32 & 0xFFFF
??CrossCallReturnLabel_43:
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
XRL A,#0x2
RET
CFI EndBlock cfiCond183
CFI EndBlock cfiCond184
CFI EndBlock cfiPicker185
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine32:
CFI Block cfiCond186 Using cfiCommon0
CFI Function bindAddEntry
CFI Conditional ??CrossCallReturnLabel_42
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 18)
CFI Block cfiCond187 Using cfiCommon0
CFI (cfiCond187) Function bindingAddrMgsHelperFind
CFI (cfiCond187) Conditional ??CrossCallReturnLabel_43, ??CrossCallReturnLabel_21
CFI (cfiCond187) DPL0 Frame(CFA_SP, 4)
CFI (cfiCond187) DPH0 Frame(CFA_SP, 5)
CFI (cfiCond187) CFA_SP SP+-9
CFI (cfiCond187) CFA_XSP16 add(XSP16, 13)
CFI Block cfiCond188 Using cfiCommon0
CFI (cfiCond188) Function bindAddrIndexGet
CFI (cfiCond188) Conditional ??CrossCallReturnLabel_43, ??CrossCallReturnLabel_22
CFI (cfiCond188) DPL0 Frame(CFA_SP, 4)
CFI (cfiCond188) DPH0 Frame(CFA_SP, 5)
CFI (cfiCond188) CFA_SP SP+-9
CFI (cfiCond188) CFA_XSP16 add(XSP16, 13)
CFI Block cfiPicker189 Using cfiCommon1
CFI (cfiPicker189) NoFunction
CFI (cfiPicker189) Picker
MOVX @DPTR,A
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
INC DPTR
INC DPTR
RET
CFI EndBlock cfiCond186
CFI EndBlock cfiCond187
CFI EndBlock cfiCond188
CFI EndBlock cfiPicker189
// 1059
// 1060 /*********************************************************************
// 1061 * @fn GetBindingTableEntry
// 1062 *
// 1063 * @brief Get a pointer to the Nth valid binding table entry.
// 1064 *
// 1065 * @param Nth valid entry being requested.
// 1066 *
// 1067 * @return The Nth valid binding table entry.
// 1068 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 1069 BindingEntry_t *GetBindingTableEntry( uint16 Nth )
GetBindingTableEntry:
CFI Block cfiBlock190 Using cfiCommon0
CFI Function GetBindingTableEntry
CODE
// 1070 {
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
MOV A,R2
MOV R4,A
MOV A,R3
MOV R5,A
// 1071 BindingEntry_t *rtrn = NULL;
MOV R2,#0x0
MOV R3,#0x0
// 1072
// 1073 #if defined ( REFLECTOR )
// 1074 uint16 idx, cnt = 0;
MOV ?V0,R2
MOV ?V1,R2
// 1075
// 1076 for ( idx = 0; idx < gNWK_MAX_BINDING_ENTRIES; idx++ )
MOV R0,#0x0
MOV R1,#0x0
SJMP ??GetBindingTableEntry_0
??GetBindingTableEntry_1:
INC R0
MOV A,R0
JNZ ??GetBindingTableEntry_0
INC R1
??GetBindingTableEntry_0:
MOV DPTR,#gNWK_MAX_BINDING_ENTRIES
CLR A
MOVC A,@A+DPTR
MOV R6,A
MOV A,#0x1
MOVC A,@A+DPTR
MOV R7,A
CLR C
MOV A,R0
SUBB A,R6
MOV A,R1
SUBB A,R7
JNC ??CrossCallReturnLabel_28
// 1077 {
// 1078 if ( BindingTable[idx].srcEP != NV_BIND_EMPTY )
MOV A,R0
MOV R6,A
MOV A,R1
MOV R7,A
MOV A,R6
MOV B,#0xe
MUL AB
MOV R6,A
MOV ?V2,B
MOV B,#0xe
MOV A,R7
MUL AB
ADD A,?V2
MOV R7,A
MOV A,#BindingTable & 0xff
ADD A,R6
MOV DPL,A
MOV A,#(BindingTable >> 8) & 0xff
ADDC A,R7
MOV DPH,A
MOVX A,@DPTR
CPL A
JZ ??GetBindingTableEntry_1
// 1079 {
// 1080 if ( cnt++ == Nth )
MOV R6,?V0
MOV R7,?V1
MOV A,R6
ADD A,#0x1
MOV ?V0,A
CLR A
ADDC A,R7
MOV ?V1,A
MOV A,R4
XRL A,R6
JNZ ??GetBindingTableEntry_2
MOV A,R5
XRL A,R7
??GetBindingTableEntry_2:
JNZ ??GetBindingTableEntry_1
// 1081 {
// 1082 rtrn = BindingTable+idx;
LCALL ?Subroutine22 & 0xFFFF
// 1083 break;
// 1084 }
// 1085 }
// 1086 }
// 1087 #else
// 1088 (void)Nth;
// 1089 #endif
// 1090
// 1091 return rtrn;
??CrossCallReturnLabel_28:
LJMP ?Subroutine3 & 0xFFFF
// 1092 }
CFI EndBlock cfiBlock190
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine22:
CFI Block cfiCond191 Using cfiCommon0
CFI Function bindFindExisting
CFI Conditional ??CrossCallReturnLabel_27
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-2
CFI CFA_XSP16 add(XSP16, 12)
CFI Block cfiCond192 Using cfiCommon0
CFI (cfiCond192) Function GetBindingTableEntry
CFI (cfiCond192) Conditional ??CrossCallReturnLabel_28
CFI (cfiCond192) R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond192) VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond192) V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond192) V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond192) V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond192) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond192) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond192) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond192) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond192) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond192) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond192) CFA_SP SP+-2
CFI (cfiCond192) CFA_XSP16 add(XSP16, 11)
CFI Block cfiPicker193 Using cfiCommon1
CFI (cfiPicker193) NoFunction
CFI (cfiPicker193) Picker
LCALL ?Subroutine36 & 0xFFFF
??CrossCallReturnLabel_51:
RET
CFI EndBlock cfiCond191
CFI EndBlock cfiCond192
CFI EndBlock cfiPicker193
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine36:
CFI Block cfiCond194 Using cfiCommon0
CFI Function bindRemoveDev
CFI Conditional ??CrossCallReturnLabel_50, ??CrossCallReturnLabel_14
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+-4
CFI CFA_XSP16 add(XSP16, 14)
CFI Block cfiCond195 Using cfiCommon0
CFI (cfiCond195) Function bindRemoveSrcDev
CFI (cfiCond195) Conditional ??CrossCallReturnLabel_50, ??CrossCallReturnLabel_15
CFI (cfiCond195) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond195) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond195) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond195) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond195) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond195) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond195) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond195) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond195) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond195) CFA_SP SP+-4
CFI (cfiCond195) CFA_XSP16 add(XSP16, 9)
CFI Block cfiCond196 Using cfiCommon0
CFI (cfiCond196) Function bindFindExisting
CFI (cfiCond196) Conditional ??CrossCallReturnLabel_51, ??CrossCallReturnLabel_27
CFI (cfiCond196) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond196) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond196) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond196) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond196) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond196) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond196) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond196) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond196) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond196) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond196) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond196) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond196) CFA_SP SP+-4
CFI (cfiCond196) CFA_XSP16 add(XSP16, 12)
CFI Block cfiCond197 Using cfiCommon0
CFI (cfiCond197) Function GetBindingTableEntry
CFI (cfiCond197) Conditional ??CrossCallReturnLabel_51, ??CrossCallReturnLabel_28
CFI (cfiCond197) R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond197) VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond197) V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond197) V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond197) V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond197) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond197) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond197) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond197) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond197) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond197) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond197) CFA_SP SP+-4
CFI (cfiCond197) CFA_XSP16 add(XSP16, 11)
CFI Block cfiPicker198 Using cfiCommon1
CFI (cfiPicker198) NoFunction
CFI (cfiPicker198) Picker
MOV A,R0
MOV B,#0xe
MUL AB
MOV R0,A
MOV R2,B
MOV B,#0xe
MOV A,R1
MUL AB
ADD A,R2
MOV R1,A
MOV A,#BindingTable & 0xff
ADD A,R0
MOV R2,A
MOV A,#(BindingTable >> 8) & 0xff
ADDC A,R1
MOV R3,A
RET
CFI EndBlock cfiCond194
CFI EndBlock cfiCond195
CFI EndBlock cfiCond196
CFI EndBlock cfiCond197
CFI EndBlock cfiPicker198
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??InitBindingTable::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 InitBindingTable
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??bindFindEmpty::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 bindFindEmpty
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??bindNumOfEntries::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 bindNumOfEntries
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??bindCapacity::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 bindCapacity
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??bindAddEntry::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 bindAddEntry
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??bindRemoveEntry::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 bindRemoveEntry
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??bindIsClusterIDinList::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 bindIsClusterIDinList
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??bindRemoveClusterIdFromList::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 bindRemoveClusterIdFromList
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??bindAddClusterIdToList::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 bindAddClusterIdToList
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??bindFindExisting::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 bindFindExisting
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??bindRemoveDev::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 bindRemoveDev
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??bindRemoveSrcDev::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 bindRemoveSrcDev
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??bindNumBoundTo::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 bindNumBoundTo
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??bindNumReflections::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 bindNumReflections
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??bindFind::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 bindFind
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??BindInitNV::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 BindInitNV
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??BindSetDefaultNV::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 BindSetDefaultNV
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??BindRestoreFromNV::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 BindRestoreFromNV
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??BindWriteNV::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 BindWriteNV
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??bindUpdateAddr::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 bindUpdateAddr
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??bindingAddrMgsHelperFind::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 bindingAddrMgsHelperFind
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??bindingAddrMgsHelperConvert::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 bindingAddrMgsHelperConvert
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??bindingAddrMgsHelperConvertShort::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 bindingAddrMgsHelperConvertShort
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??bindAddrMgrLocalLoad::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 bindAddrMgrLocalLoad
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??bindAddrIndexGet::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 bindAddrIndexGet
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??GetBindingTableEntry::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 GetBindingTableEntry
END
// 1093
// 1094 /*********************************************************************
// 1095 *********************************************************************/
//
// 3 551 bytes in segment BANKED_CODE
// 156 bytes in segment BANK_RELAYS
// 15 bytes in segment XDATA_Z
//
// 156 bytes of CODE memory
// 3 551 bytes of HUGECODE memory
// 15 bytes of XDATA memory
//
//Errors: none
//Warnings: none