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

📄 tdes_fips81.lst

📁 AT91SAM7X256芯片底层驱动源码。在IAR430环境下编译
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   00000072   3021               MOV         R1,#+0x30
   \   00000074   6143               MUL         R1,R4
   \   00000076   2B1C               MOV         R3,R5
   \   00000078   2033               ADD         R3,#+0x20
   \   0000007A   5B58               LDR         R3,[R3, R1]
   \   0000007C   9842               CMP         R0,R3
   \   0000007E   03D1               BNE         ??AT91F_TDES_Manual_Auto_Mode_4
   \   00000080   6818               ADD         R0,R5,R1
   \   00000082   406A               LDR         R0,[R0, #+0x24]
   \   00000084   8242               CMP         R2,R0
   \   00000086   00D0               BEQ         ??AT91F_TDES_Manual_Auto_Mode_5
    128                TRACE_ERROR("........ => FAILED\n\r");
   \                     ??AT91F_TDES_Manual_Auto_Mode_4:
   \   00000088   ....               B           ?Subroutine1
    129                return FALSE;
    130              }		
    131            }
   \                     ??AT91F_TDES_Manual_Auto_Mode_5:
   \   0000008A   761C               ADD         R6,R6,#+0x1
   \   0000008C   641C               ADD         R4,R4,#+0x1
   \   0000008E   3006               LSL         R0,R6,#+0x18
   \   00000090   000E               LSR         R0,R0,#+0x18
   \   00000092   0328               CMP         R0,#+0x3
   \   00000094   D5D3               BCC         ??AT91F_TDES_Manual_Auto_Mode_1
    132          
    133            TRACE_INFO("........ => OK\n\r");
   \   00000096   ....               B           ?Subroutine0
   \                     ??AT91F_TDES_Manual_Auto_Mode_3:
   \   00000098   5480FAFF           DC32        0xfffa8054
    134            return TRUE;
    135          }

   \                                 In segment CODE, align 4, keep-with-next
   \                     ?Subroutine1:
   \   00000000   E420               MOV         R0,#+0xE4
   \   00000002   C000               LSL         R0,R0,#+0x3        ;; #+0x720
   \   00000004   2918               ADD         R1,R5,R0
   \   00000006   ....               LDR         R0,??DataTable28   ;; _Stdout
   \   00000008   ........           _BLF        fprintf,fprintf??rT
   \   0000000C   0020               MOV         R0,#+0
   \   0000000E   F8BD               POP         {R3-R7,PC}         ;; return

   \                                 In segment CODE, align 4, keep-with-next
   \                     ?Subroutine0:
   \   00000000   E720               MOV         R0,#+0xE7
   \   00000002   C000               LSL         R0,R0,#+0x3        ;; #+0x738
   \   00000004   2918               ADD         R1,R5,R0
   \   00000006   ....               LDR         R0,??DataTable28   ;; _Stdout
   \                     ??Subroutine0_0:
   \   00000008   ........           _BLF        fprintf,fprintf??rT
   \   0000000C   0120               MOV         R0,#+0x1
   \   0000000E   F8BD               POP         {R3-R7,PC}         ;; return
    136          
    137          //*----------------------------------------------------------------------------
    138          //* \fn    AT91C_TDES_Manual_Auto_Mode_CFB8
    139          //* \brief
    140          //*----------------------------------------------------------------------------

   \                                 In segment CODE, align 4, keep-with-next
    141          unsigned int AT91C_TDES_Manual_Auto_Mode_CFB8(unsigned int startmode,unsigned int cipher,unsigned int index)
    142          {
   \                     AT91C_TDES_Manual_Auto_Mode_CFB8:
   \   00000000   F1B5               PUSH        {R0,R4-R7,LR}
   \   00000002   141C               MOV         R4,R2
   \   00000004   ....               LDR         R0,??DataTable18   ;; 0xfffa8000
   \   00000006   8022               MOV         R2,#+0x80
   \   00000008   5200               LSL         R2,R2,#+0x1        ;; #+0x100
   \   0000000A   0260               STR         R2,[R0, #+0]
    143            unsigned int out1;
    144            unsigned char i;
    145          
    146            AT91F_TDES_SoftReset(AT91C_BASE_TDES);
    147            AT91F_TDES_CfgModeReg(AT91C_BASE_TDES,cipher|startmode|AT91C_TDES_OPMOD_CFB|AT91C_TDES_CFBS_8_BIT);
   \   0000000C   ....               LDR         R0,??DataTable19   ;; 0xfffa8004
   \   0000000E   009A               LDR         R2,[SP, #+0]
   \   00000010   0A43               ORR         R2,R1
   \   00000012   CC21               MOV         R1,#+0xCC
   \   00000014   8902               LSL         R1,R1,#+0xA        ;; #+0x33000
   \   00000016   1143               ORR         R1,R2
   \   00000018   0160               STR         R1,[R0, #+0]
    148          
    149            // Set Key
    150            AT91F_TDES_SetKeys1(tdes_fips81,index);
   \   0000001A   ....               LDR         R5,??DataTable24   ;; tdes_fips81
   \   0000001C   211C               MOV         R1,R4
   \   0000001E   281C               MOV         R0,R5
   \   00000020   ........           BL          AT91F_TDES_SetKeys1
    151            AT91F_TDES_SetKeys2(tdes_fips81,index);
   \   00000024   211C               MOV         R1,R4
   \   00000026   281C               MOV         R0,R5
   \   00000028   ........           BL          AT91F_TDES_SetKeys2
    152            AT91F_TDES_SetKeys3(tdes_fips81,index);
   \   0000002C   211C               MOV         R1,R4
   \   0000002E   281C               MOV         R0,R5
   \   00000030   ........           BL          AT91F_TDES_SetKeys3
    153          
    154            // Set Initialization Vector
    155            AT91F_TDES_SetInitializationVectors(tdes_fips81,index);
   \   00000034   211C               MOV         R1,R4
   \   00000036   281C               MOV         R0,R5
   \   00000038   ........           BL          AT91F_TDES_SetInitializationVectors
    156          
    157            for(i=0;i<10;i++,index++) {
   \   0000003C   0020               MOV         R0,#+0
   \   0000003E   0121               MOV         R1,#+0x1
   \   00000040   ....               LDR         R2,??DataTable25   ;; test
    158          
    159              // DATRDY flag already cleared (output data reg read before)
    160              test = AT91C_TEST_NOK;
   \                     ??AT91C_TDES_Manual_Auto_Mode_CFB8_0:
   \   00000042   0023               MOV         R3,#+0
   \   00000044   1370               STRB        R3,[R2, #+0]
    161              AT91F_TDES_EnableIt(AT91C_BASE_TDES,AT91C_TDES_DATRDY);
   \   00000046   ....               LDR         R3,??DataTable26   ;; 0xfffa8010
   \   00000048   1960               STR         R1,[R3, #+0]
    162          
    163              // 1 access required for CFB 8-,16-,32-bit to Start Processing (for AUTO Mode)
    164              AT91F_TDES_InputData(AT91C_BASE_TDES,0,tdes_fips81[index][0+IN_OFFSET]);
   \   0000004A   3023               MOV         R3,#+0x30
   \   0000004C   6343               MUL         R3,R4
   \   0000004E   ....               LDR         R6,??DataTable13   ;; 0xfffa8040
   \   00000050   2F1C               MOV         R7,R5
   \   00000052   1837               ADD         R7,#+0x18
   \   00000054   FF58               LDR         R7,[R7, R3]
   \   00000056   3760               STR         R7,[R6, #+0]
    165          
    166              // Start Processing (for MANUAL Mode)
    167              if( !(startmode & AT91C_TDES_SMOD_AUTO) )
   \   00000058   009E               LDR         R6,[SP, #+0]
   \   0000005A   0F02               LSL         R7,R1,#+0x8
   \   0000005C   3E42               TST         R6,R7
   \   0000005E   01D1               BNE         ??AT91C_TDES_Manual_Auto_Mode_CFB8_1
    168                AT91F_TDES_StartProcessing(AT91C_BASE_TDES);
   \   00000060   ....               LDR         R6,??DataTable18   ;; 0xfffa8000
   \   00000062   3160               STR         R1,[R6, #+0]
    169          
    170              // Wait 4 end of processing
    171              while(test != AT91C_TEST_OK);
   \                     ??AT91C_TDES_Manual_Auto_Mode_CFB8_1:
   \   00000064   1678               LDRB        R6,[R2, #+0]
   \   00000066   012E               CMP         R6,#+0x1
   \   00000068   FCD1               BNE         ??AT91C_TDES_Manual_Auto_Mode_CFB8_1
    172          
    173              // Retrieve Output DATA => Reset DATRDY Status Flag
    174              out1 = AT91F_TDES_GetOutputData(AT91C_BASE_TDES,0);
   \   0000006A   ....               LDR         R6,??DataTable15   ;; 0xfffa8050
   \   0000006C   3668               LDR         R6,[R6, #+0]
    175          
    176              // Comparison Test
    177              if( (out1 != tdes_fips81[index][0+OUT_OFFSET]) ) {
   \   0000006E   2F1C               MOV         R7,R5
   \   00000070   2037               ADD         R7,#+0x20
   \   00000072   FB58               LDR         R3,[R7, R3]
   \   00000074   9E42               CMP         R6,R3
   \   00000076   00D0               BEQ         ??AT91C_TDES_Manual_Auto_Mode_CFB8_2
    178                TRACE_ERROR("........ => FAILED\n\r");
   \   00000078   ....               B           ?Subroutine1
    179                return FALSE;
    180              }
    181            }		
   \                     ??AT91C_TDES_Manual_Auto_Mode_CFB8_2:
   \   0000007A   401C               ADD         R0,R0,#+0x1
   \   0000007C   641C               ADD         R4,R4,#+0x1
   \   0000007E   0306               LSL         R3,R0,#+0x18
   \   00000080   1B0E               LSR         R3,R3,#+0x18
   \   00000082   0A2B               CMP         R3,#+0xA
   \   00000084   DDD3               BCC         ??AT91C_TDES_Manual_Auto_Mode_CFB8_0
    182          
    183            TRACE_INFO("........ => OK\n\r");
   \   00000086   ....               B           ?Subroutine0
    184            return TRUE;
    185          }
    186          
    187          //*----------------------------------------------------------------------------
    188          //* \fn    AT91F_TDES_PDC_Mode
    189          //* \brief
    190          //*----------------------------------------------------------------------------

   \                                 In segment CODE, align 4, keep-with-next
    191          unsigned int AT91F_TDES_PDC_Mode(unsigned int mode,unsigned int submode,unsigned int cipher,unsigned char index)
    192          {
   \                     AT91F_TDES_PDC_Mode:
   \   00000000   F1B5               PUSH        {R0,R4-R7,LR}
   \   00000002   061C               MOV         R6,R0
   \   00000004   0C1C               MOV         R4,R1
   \   00000006   1D1C               MOV         R5,R3
    193            unsigned char i;
    194          
    195            AT91F_TDES_SoftReset(AT91C_BASE_TDES);
   \   00000008   ....               LDR         R0,??DataTable18   ;; 0xfffa8000
   \   0000000A   8021               MOV         R1,#+0x80
   \   0000000C   4900               LSL         R1,R1,#+0x1        ;; #+0x100
   \   0000000E   0160               STR         R1,[R0, #+0]
    196            AT91F_TDES_CfgModeReg(AT91C_BASE_TDES,AT91C_TDES_SMOD_PDC|cipher|mode|submode);
   \   00000010   ....               LDR         R0,??DataTable19   ;; 0xfffa8004
   \   00000012   3243               ORR         R2,R6
   \   00000014   2243               ORR         R2,R4
   \   00000016   4900               LSL         R1,R1,#+0x1
   \   00000018   1143               ORR         R1,R2
   \   0000001A   0160               STR         R1,[R0, #+0]
   \   0000001C   191C               MOV         R1,R3
   \   0000001E   ....               LDR         R0,??DataTable24   ;; tdes_fips81
    197          
    198            // Set Key
    199            AT91F_TDES_SetKeys1(tdes_fips81,index);
   \   00000020   ........           BL          AT91F_TDES_SetKeys1
    200            AT91F_TDES_SetKeys2(tdes_fips81,index);
   \   00000024   291C               MOV         R1,R5
   \   00000026   ....               LDR         R0,??DataTable24   ;; tdes_fips81
   \   00000028   ........           BL          AT91F_TDES_SetKeys2
    201            AT91F_TDES_SetKeys3(tdes_fips81,index);
   \   0000002C   291C               MOV         R1,R5
   \   0000002E   ....               LDR         R0,??DataTable24   ;; tdes_fips81
   \   00000030   ........           BL          AT91F_TDES_SetKeys3
    202          
    203            // Set Init Vector for Chained Modes
    204            if(mode != AT91C_TDES_OPMOD_ECB)
   \   00000034   002E               CMP         R6,#+0
   \   00000036   03D0               BEQ         ??AT91F_TDES_PDC_Mode_0
    205              AT91F_TDES_SetInitializationVectors(tdes_fips81,index);
   \   00000038   291C               MOV         R1,R5
   \   0000003A   ....               LDR         R0,??DataTable24   ;; tdes_fips81
   \   0000003C   ........           BL          AT91F_TDES_SetInitializationVectors
   \                     ??AT91F_TDES_PDC_Mode_0:
   \   00000040   0023               MOV         R3,#+0
   \   00000042   3020               MOV         R0,#+0x30
   \   00000044   4543               MUL         R5,R0
   \   00000046   ....               LDR         R0,??DataTable24   ;; tdes_fips81
   \   00000048   4119               ADD         R1,R0,R5
   \   0000004A   244A               LDR         R2,??AT91F_TDES_PDC_Mode_1  ;; TestBuf
    206          
    207            for(i=0;i<0x2;i++)

⌨️ 快捷键说明

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