📄 efs.lst
字号:
ARM COMPILER V2.42, efs 27/03/06 10:45:49 PAGE 1
ARM COMPILER V2.42, COMPILATION OF MODULE efs
OBJECT MODULE PLACED IN .\obj\efs.obj
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe src\efs.c THUMB DEBUG PRINT(.\LST\EFS.LST) TABS(4) OBJECT(.\obj\efs.obj)
stmt level source
1 /*****************************************************************************\
2 * efs - General purpose Embedded Filesystem library *
3 * --------------------- ----------------------------------- *
4 * *
5 * Filename : efs.h *
6 * Description : This should become the wrapper around efs. It will contain *
7 * functions like efs_init etc. *
8 * *
9 * This library is free software; you can redistribute it and/or *
10 * modify it under the terms of the GNU Lesser General Public *
11 * License as published by the Free Software Foundation; either *
12 * version 2.1 of the License, or (at your option) any later version. *
13 * *
14 * This library is distributed in the hope that it will be useful, *
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
17 * Lesser General Public License for more details. *
18 * *
19 * (c)2005 Michael De Nil *
20 * (c)2005 Lennart Yseboodt *
21 \*****************************************************************************/
22
23 /*****************************************************************************/
24 #include "efs.h"
25 /*****************************************************************************/
26
27 /* ****************************************************************************
28 * esint8 efs_init(EmbeddedFileSystem * efs,eint8* opts)
29 * Description: This function initialises all subelements of a filesystem.
30 * It sets the pointerchain and verifies each step.
31 * Return value: 0 on success and -1 on failure.
32 */
33 esint8 efs_init(EmbeddedFileSystem * efs,eint8* opts)
34 {
35 1 if(if_initInterface(&efs->myCard, opts)==0)
36 1 {
37 2 ioman_init(&efs->myIOman,&efs->myCard,0);
38 2 disc_initDisc(&efs->myDisc, &efs->myIOman);
39 2 part_initPartition(&efs->myPart, &efs->myDisc);
40 2 if(efs->myPart.activePartition==-1){
41 3 efs->myDisc.partitions[0].type=0x0B;
42 3 efs->myDisc.partitions[0].LBA_begin=0;
43 3 efs->myDisc.partitions[0].numSectors=efs->myCard.sectorCount;
44 3 /*efs->myPart.activePartition = 0;*/
45 3 /*efs->myPart.disc = &(efs->myDisc);*/
46 3 part_initPartition(&efs->myPart, &efs->myDisc);
47 3 }
48 2 /*part_initPartition(&efs->myPart, &efs->myDisc);*/
49 2 if(fs_initFs(&efs->myFs, &efs->myPart))
50 2 return(-2);
51 2 return(0);
52 2 }
53 1 return(-1);
54 1 }
55 /*****************************************************************************/
56
57
ARM COMPILER V2.42, efs 27/03/06 10:45:49 PAGE 2
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN CODE16 (if_initInterface?T)
EXTERN CODE16 (ioman_init?T)
EXTERN CODE16 (disc_initDisc?T)
EXTERN CODE16 (part_initPartition?T)
EXTERN CODE16 (fs_initFs?T)
*** PUBLICS:
PUBLIC efs_init?T
*** CODE SEGMENT '?PR?efs_init?T?efs':
33: esint8 efs_init(EmbeddedFileSystem * efs,eint8* opts)
00000000 B510 PUSH {R4,LR}
00000002 1C0A MOV R2,R1 ; opts
00000004 ---- Variable 'opts' assigned to Register 'R2' ----
00000004 1C04 MOV R4,R0 ; efs
00000006 ---- Variable 'efs' assigned to Register 'R4' ----
35: if(if_initInterface(&efs->myCard, opts)==0)
00000006 1C20 MOV R0,R4 ; efs
00000008 1C11 MOV R1,R2 ; opts
0000000A F7FF BL if_initInterface?T ; T=0x0001 (1)
0000000C FFF9 BL if_initInterface?T ; T=0x0001 (2)
0000000E 0600 LSL R0,R0,#0x18 ; if_initInterface?T
00000010 1600 ASR R0,R0,#0x18
00000012 2800 CMP R0,#0x0
00000014 D13F BNE L_1 ; T=0x00000096
37: ioman_init(&efs->myIOman,&efs->myCard,0);
00000016 1C20 MOV R0,R4 ; efs
00000018 3004 ADD R0,#0x4
0000001A 1C21 MOV R1,R4 ; efs
0000001C 2200 MOV R2,#0x0
0000001E F7FF BL ioman_init?T ; T=0x0001 (1)
00000020 FFEF BL ioman_init?T ; T=0x0001 (2)
38: disc_initDisc(&efs->myDisc, &efs->myIOman);
00000022 4800 LDR R1,=0xCD4
00000024 1C20 MOV R0,R4 ; efs
00000026 1840 ADD R0,R1 ; efs
00000028 1C21 MOV R1,R4 ; efs
0000002A 3104 ADD R1,#0x4
0000002C F7FF BL disc_initDisc?T ; T=0x0001 (1)
0000002E FFE8 BL disc_initDisc?T ; T=0x0001 (2)
39: part_initPartition(&efs->myPart, &efs->myDisc);
00000030 4800 LDR R1,=0xD1C
00000032 1C20 MOV R0,R4 ; efs
00000034 1840 ADD R0,R1 ; efs
00000036 4800 LDR R2,=0xCD4
00000038 1C21 MOV R1,R4 ; efs
0000003A 1889 ADD R1,R2 ; efs
0000003C F7FF BL part_initPartition?T ; T=0x0001 (1)
0000003E FFE0 BL part_initPartition?T ; T=0x0001 (2)
40: if(efs->myPart.activePartition==-1){
00000040 4800 LDR R1,=0xD20
00000042 1C20 MOV R0,R4 ; efs
00000044 5C40 LDRB R0,[R0,R1]
00000046 0600 LSL R0,R0,#0x18
00000048 1600 ASR R0,R0,#0x18
0000004A 2101 MOV R1,#0x1
0000004C 42C8 CMN R0,R1
0000004E D114 BNE L_2 ; T=0x0000007A
41: efs->myDisc.partitions[0].type=0x0B;
00000050 210B MOV R1,#0xB
00000052 4800 LDR R2,=0xCE0
00000054 1C20 MOV R0,R4 ; efs
ARM COMPILER V2.42, efs 27/03/06 10:45:49 PAGE 3
00000056 5481 STRB R1,[R0,R2]
42: efs->myDisc.partitions[0].LBA_begin=0;
00000058 2100 MOV R1,#0x0
0000005A 4800 LDR R2,=0xCE4
0000005C 1C20 MOV R0,R4 ; efs
0000005E 5081 STR R1,[R0,R2]
43: efs->myDisc.partitions[0].numSectors=efs->myCard.sectorCount;
00000060 1C20 MOV R0,R4 ; efs
00000062 6801 LDR R1,[R0,#0x0] ; efs
00000064 4800 LDR R2,=0xCE8
00000066 1C20 MOV R0,R4 ; efs
00000068 5081 STR R1,[R0,R2]
46: part_initPartition(&efs->myPart, &efs->myDisc);
0000006A 4800 LDR R1,=0xD1C
0000006C 1C20 MOV R0,R4 ; efs
0000006E 1840 ADD R0,R1 ; efs
00000070 4800 LDR R2,=0xCD4
00000072 1C21 MOV R1,R4 ; efs
00000074 1889 ADD R1,R2 ; efs
00000076 F7FF BL part_initPartition?T ; T=0x0001 (1)
00000078 FFC3 BL part_initPartition?T ; T=0x0001 (2)
47: }
0000007A L_2:
49: if(fs_initFs(&efs->myFs, &efs->myPart))
0000007A 4800 LDR R1,=0xD24
0000007C 1C20 MOV R0,R4 ; efs
0000007E 1840 ADD R0,R1 ; efs
00000080 4800 LDR R2,=0xD1C
00000082 1C21 MOV R1,R4 ; efs
00000084 1889 ADD R1,R2 ; efs
00000086 F7FF BL fs_initFs?T ; T=0x0001 (1)
00000088 FFBB BL fs_initFs?T ; T=0x0001 (2)
0000008A 2800 CMP R0,#0x0 ; fs_initFs?T
0000008C D001 BEQ L_3 ; T=0x00000092
50: return(-2);
0000008E 4800 LDR R0,=0xFFFFFFFE
00000090 E002 B L_4 ; T=0x00000098
00000092 L_3:
51: return(0);
00000092 2000 MOV R0,#0x0
00000094 E000 B L_4 ; T=0x00000098
52: }
00000096 L_1:
53: return(-1);
00000096 4800 LDR R0,=0xFFFFFFFF
54: }
00000098 L_4:
00000098 BC10 POP {R4}
0000009A BC08 POP {R3}
0000009C 4718 BX R3
0000009E ENDP ; 'efs_init?T'
Module Information Static
----------------------------------
code size = ------
data size = ------
const size = ------
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -