⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 osal_memory.s51

📁 CC2431无线定位程序非常有参考价值
💻 S51
📖 第 1 页 / 共 4 页
字号:
//  409      */
//  410     if ( (size <= OSALMEM_SMALL_BLKSZ) && (hdr > ff2) )
//  411     {
//  412       proSmallBlkMiss++;
//  413     }
//  414 #endif
//  415   }
//  416 
//  417   HAL_EXIT_CRITICAL_SECTION( intState );  // Re-enable interrupts.
??osal_mem_alloc_8:
        MOV	A,R4
        MOV	C,0xE0 /* A   */.0
        MOV	0xa8.7,C
//  418 
//  419   return (void *)hdr;
        MOV	R7,#0x6
        LJMP	?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock6
//  420 }

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine1:
        CFI Block cfiCond7 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_4
        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+0
        CFI CFA_XSP16 add(XSP16, 14)
        CFI Block cfiCond8 Using cfiCommon0
        CFI (cfiCond8) NoFunction
        CFI (cfiCond8) Conditional ??CrossCallReturnLabel_2
        CFI (cfiCond8) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond8) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond8) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond8) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond8) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond8) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond8) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond8) V5 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+0
        CFI (cfiCond8) CFA_XSP16 add(XSP16, 14)
        CFI Block cfiCond9 Using cfiCommon0
        CFI (cfiCond9) NoFunction
        CFI (cfiCond9) Conditional ??CrossCallReturnLabel_3
        CFI (cfiCond9) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond9) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond9) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond9) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond9) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond9) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond9) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond9) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond9) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond9) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond9) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond9) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond9) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond9) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond9) CFA_SP SP+0
        CFI (cfiCond9) CFA_XSP16 add(XSP16, 14)
        CFI Block cfiPicker10 Using cfiCommon1
        CFI (cfiPicker10) NoFunction
        CFI (cfiPicker10) Picker
        MOV	R3,A
        MOV	DPL,R2
        MOV	DPH,R3
        CFI Block cfiCond11 Using cfiCommon0
        CFI (cfiCond11) NoFunction
        CFI (cfiCond11) Conditional ??CrossCallReturnLabel_5, ??CrossCallReturnLabel_1
        CFI (cfiCond11) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond11) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond11) CFA_SP SP+-5
        CFI Block cfiCond12 Using cfiCommon0
        CFI (cfiCond12) NoFunction
        CFI (cfiCond12) Conditional ??CrossCallReturnLabel_5, ??CrossCallReturnLabel_0
        CFI (cfiCond12) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond12) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond12) CFA_SP SP+-5
??Subroutine1_0:
        MOVX	A,@DPTR
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R1,A
        RET
        CFI EndBlock cfiCond7
        CFI EndBlock cfiCond8
        CFI EndBlock cfiCond9
        CFI EndBlock cfiPicker10
        CFI EndBlock cfiCond11
        CFI EndBlock cfiCond12
//  421 
//  422 /*********************************************************************
//  423  * @fn      osal_mem_free
//  424  *
//  425  * @brief   Implementation of the de-allocator functionality.
//  426  *
//  427  * @param   ptr - pointer to the memory to free.
//  428  *
//  429  * @return  void
//  430  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  431 void osal_mem_free( void *ptr )
osal_mem_free:
        CFI Block cfiBlock13 Using cfiCommon0
        CFI Function osal_mem_free
//  432 {
        FUNCALL osal_mem_free, osal_mem_init
        LOCFRAME XSTACK, 9, STACK
        ARGFRAME XSTACK, 9, STACK
        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	A,R2
        MOV	R6,A
        MOV	A,R3
        MOV	R7,A
//  433   osalMemHdr_t *currHdr;
//  434   halIntState_t intState;
//  435 
//  436 #if ( OSALMEM_GUARD )
//  437   // Try to protect against premature use by HAL / OSAL.
//  438   if ( ready != OSALMEM_READY )
        MOV	DPTR,#??ready
        MOVX	A,@DPTR
        XRL	A,#0xe2
        JZ	??osal_mem_free_0
//  439   {
//  440     osal_mem_init();
        ; Setup parameters for call to function osal_mem_init
        MOV	DPTR,#(osal_mem_init & 0xffff)
        MOV	A,#((osal_mem_init >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  441   }
//  442 #endif
//  443 
//  444   HAL_ENTER_CRITICAL_SECTION( intState );  // Hold off interrupts.
??osal_mem_free_0:
        MOV	C,0xa8.7
        CLR	A
        MOV	0xE0 /* A   */.0,C
        MOV	R4,A
        CLR	0xa8.7
//  445 
//  446   OSALMEM_ASSERT( ptr );
//  447 
//  448   currHdr = (osalMemHdr_t *)ptr - 1;
        MOV	A,R6
        ADD	A,#-0x2
        MOV	R0,A
        MOV	A,R7
        ADDC	A,#-0x1
        MOV	R1,A
//  449 
//  450   // Has this block already been freed?
//  451   OSALMEM_ASSERT( *currHdr & OSALMEM_IN_USE );
//  452 
//  453   *currHdr &= ~OSALMEM_IN_USE;
        MOV	DPL,R0
        MOV	DPH,R1
        MOVX	A,@DPTR
        MOVX	@DPTR,A
        INC	DPTR
        MOVX	A,@DPTR
        ANL	A,#0x7f
        MOVX	@DPTR,A
//  454 
//  455 #if ( OSALMEM_PROFILER )
//  456   {
//  457     uint16 size = *currHdr;
//  458     byte idx;
//  459 
//  460     for ( idx = 0; idx < OSALMEM_PROMAX; idx++ )
//  461     {
//  462       if ( size <= proCnt[idx] )
//  463       {
//  464         break;
//  465       }
//  466     }
//  467 
//  468     proCur[idx]--;
//  469   }
//  470 #endif
//  471 
//  472 #if ( OSALMEM_METRICS )
//  473   memAlo -= *currHdr;
//  474   blkFree++;
//  475 #endif
//  476 
//  477   if ( ff1 > currHdr )
        MOV	DPTR,#??ff1
        MOVX	A,@DPTR
        MOV	R2,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R3,A
        CLR	C
        MOV	A,R0
        SUBB	A,R2
        MOV	A,R1
        SUBB	A,R3
        JNC	??osal_mem_free_1
//  478   {
//  479     ff1 = currHdr;
        MOV	DPTR,#??ff1
        MOV	A,R0
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R1
        MOVX	@DPTR,A
//  480   }
//  481 
//  482 #if ( OSALMEM_PROFILER )
//  483   osal_memset( (byte *)currHdr+HDRSZ, OSALMEM_REIN, (*currHdr - HDRSZ) );
//  484 #endif
//  485 
//  486   HAL_EXIT_CRITICAL_SECTION( intState );  // Re-enable interrupts.
??osal_mem_free_1:
        MOV	A,R4
        MOV	C,0xE0 /* A   */.0
        MOV	0xa8.7,C
//  487 }
        MOV	R7,#0x1
        LJMP	?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock13

        RSEG XDATA_ID:CODE:NOROOT(0)
`?<Initializer for theHeap>`:
        DW ??_theHeap

        ASEGN SFR_AN:DATA:NOROOT,0a8H
// union <unnamed> volatile __sfr _A_IEN0
_A_IEN0:
        DS 1

        END
//  488 
//  489 #if ( OSALMEM_METRICS )
//  490 /*********************************************************************
//  491  * @fn      osal_heap_block_max
//  492  *
//  493  * @brief   Return the maximum number of blocks ever allocated at once.
//  494  *
//  495  * @param   none
//  496  *
//  497  * @return  Maximum number of blocks ever allocated at once.
//  498  */
//  499 uint16 osal_heap_block_max( void )
//  500 {
//  501   return blkMax;
//  502 }
//  503 
//  504 /*********************************************************************
//  505  * @fn      osal_heap_block_cnt
//  506  *
//  507  * @brief   Return the current number of blocks now allocated.
//  508  *
//  509  * @param   none
//  510  *
//  511  * @return  Current number of blocks now allocated.
//  512  */
//  513 uint16 osal_heap_block_cnt( void )
//  514 {
//  515   return blkCnt;
//  516 }
//  517 
//  518 /*********************************************************************
//  519  * @fn      osal_heap_block_free
//  520  *
//  521  * @brief   Return the current number of free blocks.
//  522  *
//  523  * @param   none
//  524  *
//  525  * @return  Current number of free blocks.
//  526  */
//  527 uint16 osal_heap_block_free( void )
//  528 {
//  529   return blkFree;
//  530 }
//  531 
//  532 /*********************************************************************
//  533  * @fn      osal_heap_mem_used
//  534  *
//  535  * @brief   Return the current number of bytes allocated.
//  536  *
//  537  * @param   none
//  538  *
//  539  * @return  Current number of bytes allocated.
//  540  */
//  541 uint16 osal_heap_mem_used( void )
//  542 {
//  543   return memAlo;
//  544 }
//  545 #endif
//  546 
//  547 #if defined (ZTOOL_P1) || defined (ZTOOL_P2)
//  548 /*********************************************************************
//  549  * @fn      osal_heap_high_water
//  550  *
//  551  * @brief   Return the highest byte ever allocated in the heap.
//  552  *
//  553  * @param   none
//  554  *
//  555  * @return  Highest number of bytes ever used by the stack.
//  556  */
//  557 uint16 osal_heap_high_water( void )
//  558 {
//  559 #if ( OSALMEM_METRICS )
//  560   return memMax;
//  561 #else
//  562   return MAXMEMHEAP;
//  563 #endif
//  564 }
//  565 #endif
//  566 
//  567 /*********************************************************************
//  568 *********************************************************************/
// 
//   507 bytes in segment BANKED_CODE
//     1 byte  in segment SFR_AN
//     2 bytes in segment XDATA_I
//     2 bytes in segment XDATA_ID
// 1 669 bytes in segment XDATA_Z
// 
//   509 bytes of CODE  memory
//     0 bytes of DATA  memory (+ 1 byte shared)
// 1 671 bytes of XDATA memory
//
//Errors: none
//Warnings: none

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -