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

📄 po_kernel.lst

📁 at91sam7x256 FREERTOS sd卡的读写程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
##############################################################################
#                                                                            #
# IAR ARM ANSI C/C++ Compiler V4.31A/W32 EVALUATION    29/Nov/2007  16:54:01 #
# Copyright 1999-2005 IAR Systems. All rights reserved.                      #
#                                                                            #
#    Cpu mode        =  interwork                                            #
#    Endian          =  little                                               #
#    Stack alignment =  4                                                    #
#    Source file     =  G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\COMMON_FS_MS\po_Ke #
#                       rnel.c                                               #
#    Command line    =  G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\COMMON_FS_MS\po_Ke #
#                       rnel.c -D AT91SAM7X256 -D PULL_UP_USB -D USE_LED     #
#                       -lC "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mas #
#                       s Storage\compil\Binary\List\" -o                    #
#                       "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass    #
#                       Storage\compil\Binary\Obj\" -z9 --debug --cpu_mode   #
#                       thumb --endian little --cpu ARM7TDMI --stack_align   #
#                       4 --interwork -e --fpu None --dlib_config            #
#                       "C:\Program Files\IAR Systems\Embedded Workbench     #
#                       4.0 Evaluation\ARM\LIB\dl4tptinl8f.h" -I             #
#                       "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass    #
#                       Storage\compil\srcIAR\" -I                           #
#                       "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass    #
#                       Storage\compil\..\src\" -I                           #
#                       "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass    #
#                       Storage\compil\..\..\" -I                            #
#                       "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass    #
#                       Storage\compil\..\..\FILESYSTEM\inc\" -I             #
#                       "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass    #
#                       Storage\compil\..\..\MASSSTORAGE\inc\" -I            #
#                       "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass    #
#                       Storage\compil\..\..\AT91SAM7X256\" -I               #
#                       "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass    #
#                       Storage\compil\..\inc\" -I                           #
#                       "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass    #
#                       Storage\compil\..\..\mmc_sd\" -I                     #
#                       "G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass    #
#                       Storage\compil\..\..\COMMON_FS_MS\" -I "C:\Program   #
#                       Files\IAR Systems\Embedded Workbench 4.0             #
#                       Evaluation\ARM\INC\"                                 #
#    List file       =  G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass     #
#                       Storage\compil\Binary\List\po_Kernel.lst             #
#    Object file     =  G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\AT91SAM7X-Mass     #
#                       Storage\compil\Binary\Obj\po_Kernel.r79              #
#                                                                            #
#                                                                            #
##############################################################################

G:\AT91_ENERGY\ATMEL_ARM\x256_mmc\COMMON_FS_MS\po_Kernel.c
      1          //  ----------------------------------------------------------------------------
      2          //          ATMEL Microcontroller Software Support  -  ROUSSET  -
      3          //  ----------------------------------------------------------------------------
      4          //  DISCLAIMER:  THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
      5          //  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
      6          //  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
      7          //  DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
      8          //  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
      9          //  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
     10          //  OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
     11          //  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
     12          //  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
     13          //  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     14          //  ----------------------------------------------------------------------------
     15          // File Name           : po_kernel.c
     16          // Object              : Encapsulation of specific kernel functions
     17          // Creation            : JCB 15/apr/2005
     18          // Modif               :
     19          // ----------------------------------------------------------------------------
     20          #include <stdlib.h>     // malloc etc...
     21          #include <string.h>     // memcpy, memset, etc...
     22          
     23          #include "trace.h"
     24          #include "po_types.h"
     25          #include "po_kernel.h"
     26          
     27          

   \                                 In segment DATA_Z, align 4, align-sorted
     28          ULONG CPT_LOCK = 0;
   \                     CPT_LOCK:
   \   00000000                      DS8 4
     29          
     30          /******************************************************************
     31          *
     32          * SUB-ROUTINE  po_unlock
     33          *
     34          *------------------------------------------------------------------
     35          *
     36          * purpose : releases a spin lock and restores the original IRQL at
     37          *      which the caller was running.
     38          *
     39          * input parameters :
     40          *
     41          * output parameters :
     42          *
     43          * global data :
     44          *
     45          ******************************************************************/
     46          #ifdef ADS_COMPIL
     47          void po_unlock()
     48          #else

   \                                 In segment CODE_I, align 4, keep-with-next
     49          __ramfunc void po_unlock()
     50          #endif
     51          {
   \                     po_unlock:
   \   00000000   00B5               PUSH        {LR}
     52            CPT_LOCK--;
   \   00000002   ....               LDR         R0,??DataTable1    ;; CPT_LOCK
   \   00000004   0168               LDR         R1,[R0, #+0]
   \   00000006   491E               SUB         R1,R1,#+1
   \   00000008   0160               STR         R1,[R0, #+0]
     53            if( 0 == CPT_LOCK )
   \   0000000A   01D1               BNE         ??po_unlock_0
     54            {
     55              AT91F_enable_interrupt();
   \   0000000C   ........           _BLF        AT91F_enable_interrupt,??AT91F_enable_interrupt??rT?CODE_I
     56            }
     57          }
   \                     ??po_unlock_0:
   \   00000010   01BC               POP         {R0}
   \   00000012   0047               BX          R0                 ;; return
     58          
     59          /******************************************************************
     60          *
     61          * SUB-ROUTINE  po_lock
     62          *
     63          *------------------------------------------------------------------
     64          *
     65          * purpose : acquires a spin lock so the caller can synchronize access
     66          *      to shared data in a multiprocessor-safe way by raising IRQL.
     67          *
     68          * input parameters :
     69          *
     70          * output parameters :
     71          *
     72          * global data :
     73          *
     74          ******************************************************************/
     75          #ifdef ADS_COMPIL
     76          void po_lock()
     77          #else

   \                                 In segment CODE_I, align 4, keep-with-next
     78          void po_lock()
     79          #endif
     80          {
   \                     po_lock:
   \   00000000   10B5               PUSH        {R4,LR}
     81            if( 0 == CPT_LOCK )
   \   00000002   ....               LDR         R4,??DataTable1    ;; CPT_LOCK
   \   00000004   2068               LDR         R0,[R4, #+0]
   \   00000006   0028               CMP         R0,#+0
   \   00000008   01D1               BNE         ??po_lock_0
     82            {
     83              AT91F_disable_interrupt();
   \   0000000A   ........           _BLF        AT91F_disable_interrupt,??AT91F_disable_interrupt??rT?CODE_I
     84            }
     85            CPT_LOCK++;
   \                     ??po_lock_0:
   \   0000000E   2068               LDR         R0,[R4, #+0]
   \   00000010   401C               ADD         R0,R0,#+1
   \   00000012   2060               STR         R0,[R4, #+0]
     86          }
   \   00000014   ....               B           ?Subroutine13

   \                                 In segment CODE_I, align 4, keep-with-next
   \                     ?Subroutine13:
   \   00000000   10BC               POP         {R4}
   \   00000002   01BC               POP         {R0}
   \   00000004   0047               BX          R0                 ;; return
     87          
     88          /******************************************************************
     89          *
     90          * SUB-ROUTINE  po_malloc
     91          *
     92          *------------------------------------------------------------------
     93          *
     94          * purpose : kernel memory allocation in non paged poool
     95          *
     96          * input parameters : size to allocate
     97          *
     98          * output parameters : pointer on allocated memory zone.
     99          *
    100          * global data : no
    101          *
    102          ******************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    103          void* po_malloc( ULONG size )
    104          {
   \                     po_malloc:
   \   00000000   00B5               PUSH        {LR}
    105            TRACE_DEBUG_H( "malloc %d\n\r", (int)size );
    106            return malloc( (unsigned int)size );
   \   00000002   ........           _BLF        __data_malloc,??__data_malloc??rT
   \   00000006   02BC               POP         {R1}
   \   00000008   0847               BX          R1                 ;; return
    107          }
    108          
    109          /******************************************************************
    110          *
    111          * SUB-ROUTINE  po_free
    112          *
    113          *------------------------------------------------------------------
    114          *
    115          * purpose : Kernel memory free routine
    116          *
    117          * input parameters : buffer to free
    118          *
    119          * output parameters :
    120          *
    121          * global data :
    122          *
    123          ******************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    124          void po_free( void* buffer )
    125          {
   \                     po_free:
   \   00000000   00B5               PUSH        {LR}
    126            TRACE_DEBUG_H( "free buff\n\r" );
    127            free( buffer );
   \   00000002   ........           _BLF        __data_free,??__data_free??rT
    128          }
   \   00000006   01BC               POP         {R0}
   \   00000008   0047               BX          R0                 ;; return
    129          
    130          /******************************************************************
    131          *
    132          * SUB-ROUTINE  po_memcpy
    133          *
    134          *------------------------------------------------------------------
    135          *
    136          * purpose : memcpy
    137          *
    138          * input parameters : dest
    139          *                    src
    140          *                    len
    141          *
    142          * output parameters :
    143          *
    144          * global data :
    145          *
    146          ******************************************************************/
    147          #ifdef ADS_COMPIL
    148          void po_memcpy( void *dest, void *src, unsigned int len )
    149          #else

   \                                 In segment CODE_I, align 4, keep-with-next
    150          __ramfunc void po_memcpy( void *dest, void *src, unsigned int len )
    151          #endif
    152          {
    153            unsigned char *_dst = dest;
    154            const unsigned char *_src1 = src;
   \                     po_memcpy:
   \   00000000   03E0               B           ??po_memcpy_0
    155          
    156            // memcpy(dest,src,len);
    157            while( len-- > 0 )
    158            {
    159              *_dst++ = *_src1++;
   \                     ??po_memcpy_1:
   \   00000002   0B78               LDRB        R3,[R1, #+0]
   \   00000004   0370               STRB        R3,[R0, #+0]
   \   00000006   491C               ADD         R1,R1,#+1
   \   00000008   401C               ADD         R0,R0,#+1
    160            }
   \                     ??po_memcpy_0:
   \   0000000A   131C               MOV         R3,R2
   \   0000000C   521E               SUB         R2,R2,#+1
   \   0000000E   002B               CMP         R3,#+0
   \   00000010   F7D1               BNE         ??po_memcpy_1
    161          }
   \   00000012   00B0               ADD         SP,#+0
   \   00000014   7047               BX          LR                 ;; return
    162          
    163          /******************************************************************
    164          *
    165          * SUB-ROUTINE  po_rngNBytes
    166          *
    167          *------------------------------------------------------------------
    168          *
    169          * purpose : return number of bytes in rounding buffer
    170          *
    171          * input parameters : rounding buffer
    172          *
    173          *
    174          *
    175          * output parameters :
    176          *
    177          * global data :
    178          *
    179          ******************************************************************/

⌨️ 快捷键说明

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