ChipTest/PAN159/PAN159-Template/SampleCode/Template/Keil/lst/fmc.txt
2021-09-26 17:19:12 +08:00

580 lines
20 KiB
Plaintext

; generated by Component: ARM Compiler 5.06 update 4 (build 422) Tool: ArmCC [4d3604]
; commandline ArmCC [--c99 --list --split_sections --debug -c --asm --interleave -o.\obj\fmc.o --asm_dir=.\lst\ --list_dir=.\lst\ --depend=.\obj\fmc.d --cpu=Cortex-M0 --apcs=interwork -O3 --diag_suppress=9931 -I..\..\..\Library\CMSIS\Include -I..\..\..\Library\Device\Nuvoton\Mini58Series\Include -I..\..\..\Library\StdDriver\inc -I..\..\Template -I..\..\..\Library\StdDriver\driver -I.\RTE\_Template -ID:\Keil_v5\ARM\PACK\Nuvoton\NuMicro_DFP\1.0.9\Device\Mini58\Include -ID:\Keil_v5\ARM\CMSIS\Include -D__MICROLIB -D__UVISION_VERSION=523 --omf_browse=.\obj\fmc.crf ..\..\..\Library\StdDriver\src\fmc.c]
THUMB
AREA ||i.FMC_Close||, CODE, READONLY, ALIGN=2
FMC_Close PROC
;;;35 */
;;;36 void FMC_Close(void)
000000 4802 LDR r0,|L1.12|
;;;37 {
;;;38 FMC->ISPCTL &= ~FMC_ISPCTL_ISPEN_Msk;
000002 6801 LDR r1,[r0,#0]
000004 0849 LSRS r1,r1,#1
000006 0049 LSLS r1,r1,#1
000008 6001 STR r1,[r0,#0]
;;;39 }
00000a 4770 BX lr
;;;40
ENDP
|L1.12|
DCD 0x5000c000
AREA ||i.FMC_Erase||, CODE, READONLY, ALIGN=2
FMC_Erase PROC
;;;47 */
;;;48 int32_t FMC_Erase(uint32_t u32PageAddr)
000000 490a LDR r1,|L2.44|
;;;49 {
;;;50 FMC->ISPCMD = FMC_ISPCMD_PAGE_ERASE;
000002 2222 MOVS r2,#0x22
000004 60ca STR r2,[r1,#0xc]
;;;51 FMC->ISPADDR = u32PageAddr;
000006 6048 STR r0,[r1,#4]
;;;52 FMC->ISPTRG = FMC_ISPTRG_ISPGO_Msk;
000008 2001 MOVS r0,#1
00000a 6108 STR r0,[r1,#0x10]
|L2.12|
;;;53
;;;54 while (FMC->ISPTRG & FMC_ISPTRG_ISPGO_Msk) ;
00000c 6908 LDR r0,[r1,#0x10]
00000e 07c0 LSLS r0,r0,#31
000010 d1fc BNE |L2.12|
;;;55
;;;56 if (FMC->ISPCTL & FMC_ISPCTL_ISPFF_Msk) {
000012 6808 LDR r0,[r1,#0]
000014 0640 LSLS r0,r0,#25
000016 d506 BPL |L2.38|
;;;57 FMC->ISPCTL |= FMC_ISPCTL_ISPFF_Msk;
000018 6808 LDR r0,[r1,#0]
00001a 2240 MOVS r2,#0x40
00001c 4310 ORRS r0,r0,r2
00001e 6008 STR r0,[r1,#0]
;;;58 return -1;
000020 2000 MOVS r0,#0
000022 43c0 MVNS r0,r0
;;;59 }
;;;60 return 0;
;;;61 }
000024 4770 BX lr
|L2.38|
000026 2000 MOVS r0,#0 ;60
000028 4770 BX lr
;;;62
ENDP
00002a 0000 DCW 0x0000
|L2.44|
DCD 0x5000c000
AREA ||i.FMC_GetBootSource||, CODE, READONLY, ALIGN=2
FMC_GetBootSource PROC
;;;68 */
;;;69 int32_t FMC_GetBootSource (void)
000000 4803 LDR r0,|L3.16|
;;;70 {
;;;71 if (FMC->ISPCTL & FMC_ISPCTL_BS_Msk)
000002 6800 LDR r0,[r0,#0]
000004 0780 LSLS r0,r0,#30
000006 d501 BPL |L3.12|
;;;72 return 1;
000008 2001 MOVS r0,#1
;;;73 else
;;;74 return 0;
;;;75 }
00000a 4770 BX lr
|L3.12|
00000c 2000 MOVS r0,#0 ;74
00000e 4770 BX lr
;;;76
ENDP
|L3.16|
DCD 0x5000c000
AREA ||i.FMC_GetCRC32Sum||, CODE, READONLY, ALIGN=2
FMC_GetCRC32Sum PROC
;;;270 */
;;;271 int32_t FMC_GetCRC32Sum(uint32_t addr, uint32_t count, uint32_t *chksum)
000000 b570 PUSH {r4-r6,lr}
;;;272 {
;;;273 FMC->ISPCMD = FMC_ISPCMD_CAL_CRC32;
000002 4b12 LDR r3,|L4.76|
000004 242d MOVS r4,#0x2d
000006 60dc STR r4,[r3,#0xc]
;;;274 FMC->ISPADDR = addr;
000008 6058 STR r0,[r3,#4]
;;;275 FMC->ISPDAT = count;
00000a 6099 STR r1,[r3,#8]
;;;276 FMC->ISPTRG = FMC_ISPTRG_ISPGO_Msk;
00000c 2401 MOVS r4,#1
00000e 611c STR r4,[r3,#0x10]
|L4.16|
;;;277
;;;278 while (FMC->ISPTRG & FMC_ISPTRG_ISPGO_Msk) ;
000010 6919 LDR r1,[r3,#0x10]
000012 07c9 LSLS r1,r1,#31
000014 d1fc BNE |L4.16|
;;;279
;;;280 if (FMC->ISPCTL & FMC_ISPCTL_ISPFF_Msk) {
000016 6819 LDR r1,[r3,#0]
;;;281 FMC->ISPCTL |= FMC_ISPCTL_ISPFF_Msk;
;;;282 return -1;
000018 2500 MOVS r5,#0
00001a 064e LSLS r6,r1,#25 ;280
00001c 2140 MOVS r1,#0x40 ;281
00001e 43ed MVNS r5,r5
000020 2e00 CMP r6,#0 ;280
000022 db09 BLT |L4.56|
;;;283 }
;;;284
;;;285 FMC->ISPCMD = FMC_ISPCMD_READ_CRC32;
000024 260d MOVS r6,#0xd
000026 60de STR r6,[r3,#0xc]
;;;286 FMC->ISPADDR = addr;
000028 6058 STR r0,[r3,#4]
;;;287 FMC->ISPTRG = FMC_ISPTRG_ISPGO_Msk;
00002a 611c STR r4,[r3,#0x10]
|L4.44|
;;;288
;;;289 while (FMC->ISPTRG & FMC_ISPTRG_ISPGO_Msk) ;
00002c 6918 LDR r0,[r3,#0x10]
00002e 07c0 LSLS r0,r0,#31
000030 d1fc BNE |L4.44|
;;;290
;;;291 if (FMC->ISPCTL & FMC_ISPCTL_ISPFF_Msk) {
000032 6818 LDR r0,[r3,#0]
000034 0640 LSLS r0,r0,#25
000036 d504 BPL |L4.66|
|L4.56|
;;;292 FMC->ISPCTL |= FMC_ISPCTL_ISPFF_Msk;
000038 6818 LDR r0,[r3,#0]
00003a 4308 ORRS r0,r0,r1
00003c 6018 STR r0,[r3,#0]
;;;293 return -1;
00003e 4628 MOV r0,r5
;;;294 }
;;;295
;;;296 *chksum = FMC->ISPDAT;
;;;297
;;;298 return 0;
;;;299 }
000040 bd70 POP {r4-r6,pc}
|L4.66|
000042 6898 LDR r0,[r3,#8] ;296
000044 6010 STR r0,[r2,#0] ;298
000046 2000 MOVS r0,#0 ;298
000048 bd70 POP {r4-r6,pc}
;;;300
ENDP
00004a 0000 DCW 0x0000
|L4.76|
DCD 0x5000c000
AREA ||i.FMC_GetVectorPageAddr||, CODE, READONLY, ALIGN=2
FMC_GetVectorPageAddr PROC
;;;193 */
;;;194 uint32_t FMC_GetVectorPageAddr(void)
000000 4802 LDR r0,|L5.12|
;;;195 {
;;;196 return (FMC->ISPSTS & 0x0FFFFF00ul);
000002 6800 LDR r0,[r0,#0]
000004 4902 LDR r1,|L5.16|
000006 4008 ANDS r0,r0,r1
;;;197 }
000008 4770 BX lr
;;;198
ENDP
00000a 0000 DCW 0x0000
|L5.12|
DCD 0x5000c040
|L5.16|
DCD 0x0fffff00
AREA ||i.FMC_Open||, CODE, READONLY, ALIGN=2
FMC_Open PROC
;;;80 */
;;;81 void FMC_Open(void)
000000 4802 LDR r0,|L6.12|
;;;82 {
;;;83 FMC->ISPCTL |= FMC_ISPCTL_ISPEN_Msk;
000002 6801 LDR r1,[r0,#0]
000004 2201 MOVS r2,#1
000006 4311 ORRS r1,r1,r2
000008 6001 STR r1,[r0,#0]
;;;84 }
00000a 4770 BX lr
;;;85
ENDP
|L6.12|
DCD 0x5000c000
AREA ||i.FMC_Read||, CODE, READONLY, ALIGN=2
FMC_Read PROC
;;;91 */
;;;92 uint32_t FMC_Read(uint32_t u32Addr)
000000 4905 LDR r1,|L7.24|
;;;93 {
;;;94 FMC->ISPCMD = FMC_ISPCMD_READ;
000002 2200 MOVS r2,#0
000004 60ca STR r2,[r1,#0xc]
;;;95 FMC->ISPADDR = u32Addr;
000006 6048 STR r0,[r1,#4]
;;;96 FMC->ISPTRG = FMC_ISPTRG_ISPGO_Msk;
000008 2001 MOVS r0,#1
00000a 6108 STR r0,[r1,#0x10]
|L7.12|
;;;97
;;;98 while (FMC->ISPTRG & FMC_ISPTRG_ISPGO_Msk) ;
00000c 6908 LDR r0,[r1,#0x10]
00000e 07c0 LSLS r0,r0,#31
000010 d1fc BNE |L7.12|
;;;99
;;;100 return FMC->ISPDAT;
000012 6888 LDR r0,[r1,#8]
;;;101 }
000014 4770 BX lr
;;;102
ENDP
000016 0000 DCW 0x0000
|L7.24|
DCD 0x5000c000
AREA ||i.FMC_ReadCID||, CODE, READONLY, ALIGN=2
FMC_ReadCID PROC
;;;107 */
;;;108 uint32_t FMC_ReadCID(void)
000000 4805 LDR r0,|L8.24|
;;;109 {
;;;110 FMC->ISPCMD = FMC_ISPCMD_READ_CID;
000002 210b MOVS r1,#0xb
000004 60c1 STR r1,[r0,#0xc]
;;;111 FMC->ISPADDR = 0x0;
000006 2100 MOVS r1,#0
000008 6041 STR r1,[r0,#4]
;;;112 FMC->ISPTRG = FMC_ISPTRG_ISPGO_Msk;
00000a 2101 MOVS r1,#1
00000c 6101 STR r1,[r0,#0x10]
|L8.14|
;;;113 while (FMC->ISPTRG & FMC_ISPTRG_ISPGO_Msk) ;
00000e 6901 LDR r1,[r0,#0x10]
000010 07c9 LSLS r1,r1,#31
000012 d1fc BNE |L8.14|
;;;114 return FMC->ISPDAT;
000014 6880 LDR r0,[r0,#8]
;;;115 }
000016 4770 BX lr
;;;116
ENDP
|L8.24|
DCD 0x5000c000
AREA ||i.FMC_ReadConfig||, CODE, READONLY, ALIGN=2
FMC_ReadConfig PROC
;;;223 */
;;;224 int32_t FMC_ReadConfig(uint32_t *u32Config, uint32_t u32Count)
000000 b510 PUSH {r4,lr}
;;;225 {
000002 000b MOVS r3,r1
000004 4604 MOV r4,r0
000006 d00a BEQ |L9.30|
;;;226 if (u32Count < 1)
;;;227 return 0;
;;;228
;;;229 u32Config[0] = FMC_Read(FMC_CONFIG_BASE);
000008 2003 MOVS r0,#3
00000a 0500 LSLS r0,r0,#20
00000c f7fffffe BL FMC_Read
;;;230 if (u32Count < 2)
000010 6020 STR r0,[r4,#0]
000012 2b02 CMP r3,#2
000014 d303 BCC |L9.30|
;;;231 return 0;
;;;232
;;;233 u32Config[1] = FMC_Read(FMC_CONFIG_BASE+4);
000016 4803 LDR r0,|L9.36|
000018 f7fffffe BL FMC_Read
00001c 6060 STR r0,[r4,#4]
|L9.30|
00001e 2000 MOVS r0,#0 ;231
;;;234 return 0;
;;;235 }
000020 bd10 POP {r4,pc}
;;;236
ENDP
000022 0000 DCW 0x0000
|L9.36|
DCD 0x00300004
AREA ||i.FMC_ReadDataFlashBaseAddr||, CODE, READONLY, ALIGN=2
FMC_ReadDataFlashBaseAddr PROC
;;;169 */
;;;170 uint32_t FMC_ReadDataFlashBaseAddr(void)
000000 4801 LDR r0,|L10.8|
;;;171 {
;;;172 return FMC->DFBA;
000002 6940 LDR r0,[r0,#0x14]
;;;173 }
000004 4770 BX lr
;;;174
ENDP
000006 0000 DCW 0x0000
|L10.8|
DCD 0x5000c000
AREA ||i.FMC_ReadPID||, CODE, READONLY, ALIGN=2
FMC_ReadPID PROC
;;;121 */
;;;122 uint32_t FMC_ReadPID(void)
000000 4805 LDR r0,|L11.24|
;;;123 {
;;;124 FMC->ISPCMD = FMC_ISPCMD_READ_PID;
000002 210c MOVS r1,#0xc
000004 60c1 STR r1,[r0,#0xc]
;;;125 FMC->ISPADDR = 0x04;
000006 2104 MOVS r1,#4
000008 6041 STR r1,[r0,#4]
;;;126 FMC->ISPTRG = FMC_ISPTRG_ISPGO_Msk;
00000a 2101 MOVS r1,#1
00000c 6101 STR r1,[r0,#0x10]
|L11.14|
;;;127 while (FMC->ISPTRG & FMC_ISPTRG_ISPGO_Msk) ;
00000e 6901 LDR r1,[r0,#0x10]
000010 07c9 LSLS r1,r1,#31
000012 d1fc BNE |L11.14|
;;;128 return FMC->ISPDAT;
000014 6880 LDR r0,[r0,#8]
;;;129 }
000016 4770 BX lr
;;;130
ENDP
|L11.24|
DCD 0x5000c000
AREA ||i.FMC_ReadUCID||, CODE, READONLY, ALIGN=2
FMC_ReadUCID PROC
;;;136 */
;;;137 uint32_t FMC_ReadUCID(uint32_t u32Index)
000000 4906 LDR r1,|L12.28|
;;;138 {
;;;139 FMC->ISPCMD = FMC_ISPCMD_READ_UID;
000002 2204 MOVS r2,#4
000004 60ca STR r2,[r1,#0xc]
;;;140 FMC->ISPADDR = (0x04 * u32Index) + 0x10;
000006 0080 LSLS r0,r0,#2
000008 3010 ADDS r0,r0,#0x10
00000a 6048 STR r0,[r1,#4]
;;;141 FMC->ISPTRG = FMC_ISPTRG_ISPGO_Msk;
00000c 2001 MOVS r0,#1
00000e 6108 STR r0,[r1,#0x10]
|L12.16|
;;;142
;;;143 while (FMC->ISPTRG & FMC_ISPTRG_ISPGO_Msk) ;
000010 6908 LDR r0,[r1,#0x10]
000012 07c0 LSLS r0,r0,#31
000014 d1fc BNE |L12.16|
;;;144
;;;145 return FMC->ISPDAT;
000016 6888 LDR r0,[r1,#8]
;;;146 }
000018 4770 BX lr
;;;147
ENDP
00001a 0000 DCW 0x0000
|L12.28|
DCD 0x5000c000
AREA ||i.FMC_ReadUID||, CODE, READONLY, ALIGN=2
FMC_ReadUID PROC
;;;153 */
;;;154 uint32_t FMC_ReadUID(uint32_t u32Index)
000000 4905 LDR r1,|L13.24|
;;;155 {
;;;156 FMC->ISPCMD = FMC_ISPCMD_READ_UID;
000002 2204 MOVS r2,#4
000004 60ca STR r2,[r1,#0xc]
;;;157 FMC->ISPADDR = 0x04 * u32Index;
000006 0080 LSLS r0,r0,#2
000008 6048 STR r0,[r1,#4]
;;;158 FMC->ISPTRG = FMC_ISPTRG_ISPGO_Msk;
00000a 2001 MOVS r0,#1
00000c 6108 STR r0,[r1,#0x10]
|L13.14|
;;;159
;;;160 while (FMC->ISPTRG & FMC_ISPTRG_ISPGO_Msk) ;
00000e 6908 LDR r0,[r1,#0x10]
000010 07c0 LSLS r0,r0,#31
000012 d1fc BNE |L13.14|
;;;161
;;;162 return FMC->ISPDAT;
000014 6888 LDR r0,[r1,#8]
;;;163 }
000016 4770 BX lr
;;;164
ENDP
|L13.24|
DCD 0x5000c000
AREA ||i.FMC_SetVectorPageAddr||, CODE, READONLY, ALIGN=2
FMC_SetVectorPageAddr PROC
;;;180 */
;;;181 void FMC_SetVectorPageAddr(uint32_t u32PageAddr)
000000 4904 LDR r1,|L14.20|
;;;182 {
;;;183 FMC->ISPCMD = FMC_ISPCMD_VECMAP;
000002 222e MOVS r2,#0x2e
000004 60ca STR r2,[r1,#0xc]
;;;184 FMC->ISPADDR = u32PageAddr;
000006 6048 STR r0,[r1,#4]
;;;185 FMC->ISPTRG = FMC_ISPTRG_ISPGO_Msk;
000008 2001 MOVS r0,#1
00000a 6108 STR r0,[r1,#0x10]
|L14.12|
;;;186 while (FMC->ISPTRG & FMC_ISPTRG_ISPGO_Msk) ;
00000c 6908 LDR r0,[r1,#0x10]
00000e 07c0 LSLS r0,r0,#31
000010 d1fc BNE |L14.12|
;;;187 }
000012 4770 BX lr
;;;188
ENDP
|L14.20|
DCD 0x5000c000
AREA ||i.FMC_Write||, CODE, READONLY, ALIGN=2
FMC_Write PROC
;;;206 */
;;;207 void FMC_Write(uint32_t u32Addr, uint32_t u32Data)
000000 4a05 LDR r2,|L15.24|
;;;208 {
;;;209 FMC->ISPCMD = FMC_ISPCMD_PROGRAM;
000002 2321 MOVS r3,#0x21
000004 60d3 STR r3,[r2,#0xc]
;;;210 FMC->ISPADDR = u32Addr;
000006 6050 STR r0,[r2,#4]
;;;211 FMC->ISPDAT = u32Data;
000008 6091 STR r1,[r2,#8]
;;;212 FMC->ISPTRG = FMC_ISPTRG_ISPGO_Msk;
00000a 2001 MOVS r0,#1
00000c 6110 STR r0,[r2,#0x10]
|L15.14|
;;;213 while (FMC->ISPTRG & FMC_ISPTRG_ISPGO_Msk) ;
00000e 6910 LDR r0,[r2,#0x10]
000010 07c0 LSLS r0,r0,#31
000012 d1fc BNE |L15.14|
;;;214 }
000014 4770 BX lr
;;;215
ENDP
000016 0000 DCW 0x0000
|L15.24|
DCD 0x5000c000
AREA ||i.FMC_WriteConfig||, CODE, READONLY, ALIGN=2
FMC_WriteConfig PROC
;;;244 */
;;;245 int32_t FMC_WriteConfig(uint32_t *u32Config, uint32_t u32Count)
000000 b5f0 PUSH {r4-r7,lr}
;;;246 {
000002 000d MOVS r5,r1
000004 4606 MOV r6,r0
000006 d015 BEQ |L16.52|
;;;247 if (u32Count < 1)
;;;248 return 0;
;;;249
;;;250 FMC_ENABLE_CFG_UPDATE();
000008 4c0b LDR r4,|L16.56|
00000a 6820 LDR r0,[r4,#0]
00000c 2710 MOVS r7,#0x10
00000e 4338 ORRS r0,r0,r7
000010 6020 STR r0,[r4,#0]
;;;251 FMC_Erase(FMC_CONFIG_BASE);
000012 01a3 LSLS r3,r4,#6
000014 4618 MOV r0,r3
000016 f7fffffe BL FMC_Erase
;;;252 FMC_Write(FMC_CONFIG_BASE, u32Config[0]);
00001a 4618 MOV r0,r3
00001c 6831 LDR r1,[r6,#0]
00001e f7fffffe BL FMC_Write
;;;253
;;;254 if (u32Count < 2)
000022 2d02 CMP r5,#2
000024 d306 BCC |L16.52|
;;;255 return 0;
;;;256
;;;257 FMC_Write(FMC_CONFIG_BASE+4, u32Config[1]);
000026 4805 LDR r0,|L16.60|
000028 6871 LDR r1,[r6,#4]
00002a f7fffffe BL FMC_Write
;;;258 FMC_DISABLE_CFG_UPDATE();
00002e 6820 LDR r0,[r4,#0]
000030 43b8 BICS r0,r0,r7
000032 6020 STR r0,[r4,#0]
|L16.52|
000034 2000 MOVS r0,#0 ;255
;;;259 return 0;
;;;260 }
000036 bdf0 POP {r4-r7,pc}
;;;261
ENDP
|L16.56|
DCD 0x5000c000
|L16.60|
DCD 0x00300004
;*** Start embedded assembler ***
#line 1 "..\\..\\..\\Library\\StdDriver\\src\\fmc.c"
AREA ||.rev16_text||, CODE
THUMB
EXPORT |__asm___5_fmc_c_65c03504____REV16|
#line 388 "..\\..\\..\\Library\\CMSIS\\Include\\cmsis_armcc.h"
|__asm___5_fmc_c_65c03504____REV16| PROC
#line 389
rev16 r0, r0
bx lr
ENDP
AREA ||.revsh_text||, CODE
THUMB
EXPORT |__asm___5_fmc_c_65c03504____REVSH|
#line 402
|__asm___5_fmc_c_65c03504____REVSH| PROC
#line 403
revsh r0, r0
bx lr
ENDP
;*** End embedded assembler ***