; 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\retarget.o --asm_dir=.\lst\ --list_dir=.\lst\ --depend=.\obj\retarget.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\retarget.crf ..\..\..\Library\StdDriver\src\retarget.c] THUMB AREA ||i.GetChar||, CODE, READONLY, ALIGN=2 GetChar PROC ;;;371 ;;;372 char GetChar(void) 000000 4803 LDR r0,|L1.16| |L1.2| ;;;373 { ;;;374 #if defined(DEBUG_ENABLE_SEMIHOST) ;;;375 # if defined ( __CC_ARM ) ;;;376 int nRet; ;;;377 while(SH_DoCommand(0x101, 0, &nRet) != 0) ;;;378 { ;;;379 if(nRet != 0) ;;;380 { ;;;381 SH_DoCommand(0x07, 0, &nRet); ;;;382 return (char)nRet; ;;;383 } ;;;384 } ;;;385 # else ;;;386 int nRet; ;;;387 while(SH_DoCommand(0x7, 0, &nRet) != 0) ;;;388 { ;;;389 if(nRet != 0) ;;;390 return (char)nRet; ;;;391 } ;;;392 # endif ;;;393 #endif ;;;394 #ifndef DISABLE_UART ;;;395 while (1){ ;;;396 if(!(DEBUG_PORT->FIFOSTS & UART_FIFOSTS_RXEMPTY_Msk)) 000002 6981 LDR r1,[r0,#0x18] 000004 0449 LSLS r1,r1,#17 000006 d4fc BMI |L1.2| ;;;397 { ;;;398 return (DEBUG_PORT->DAT); 000008 6800 LDR r0,[r0,#0] 00000a b2c0 UXTB r0,r0 ;;;399 ;;;400 } ;;;401 } ;;;402 #else ;;;403 return(0); ;;;404 #endif ;;;405 } 00000c 4770 BX lr ;;;406 ENDP 00000e 0000 DCW 0x0000 |L1.16| DCD 0x40050000 AREA ||i.Hard_Fault_Handler||, CODE, READONLY, ALIGN=2 Hard_Fault_Handler PROC ||__tagsym$$used|| ;;;60 ;;;61 void Hard_Fault_Handler(uint32_t stack[]) 000000 4604 MOV r4,r0 ;;;62 { ;;;63 printf("In Hard Fault Handler\n"); 000002 a003 ADR r0,|L2.16| 000004 f7fffffe BL __2printf ;;;64 ;;;65 stackDump(stack); 000008 4620 MOV r0,r4 00000a f7fffffe BL stackDump |L2.14| ;;;66 ;;;67 //Chip Reset ;;;68 //SYS_UnlockReg(); ;;;69 //SYS->IPRSTC1 |= SYS_IPRSTC1_CHIP_RST_Msk; ;;;70 ;;;71 while(1); 00000e e7fe B |L2.14| ;;;72 } ;;;73 ENDP |L2.16| 000010 496e2048 DCB "In Hard Fault Handler\n",0 000014 61726420 000018 4661756c 00001c 74204861 000020 6e646c65 000024 720a00 000027 00 DCB 0 AREA ||i.IsDebugFifoEmpty||, CODE, READONLY, ALIGN=2 IsDebugFifoEmpty PROC ;;;430 */ ;;;431 int IsDebugFifoEmpty(void) 000000 4802 LDR r0,|L3.12| ;;;432 { ;;;433 #ifndef DISABLE_UART ;;;434 return (DEBUG_PORT->FIFOSTS & UART_FIFOSTS_TXEMPTYF_Msk) ? 1 : 0; 000002 6980 LDR r0,[r0,#0x18] 000004 00c0 LSLS r0,r0,#3 000006 0fc0 LSRS r0,r0,#31 ;;;435 #else ;;;436 return(1); ;;;437 #endif ;;;438 ;;;439 } 000008 4770 BX lr ;;;440 ENDP 00000a 0000 DCW 0x0000 |L3.12| DCD 0x40050000 AREA ||i.SendChar||, CODE, READONLY, ALIGN=1 SendChar PROC ;;;334 ;;;335 void SendChar(int ch) 000000 b500 PUSH {lr} ;;;336 { ;;;337 #if defined(DEBUG_ENABLE_SEMIHOST) ;;;338 g_buf[g_buf_len++] = ch; ;;;339 g_buf[g_buf_len] = '\0'; ;;;340 if(g_buf_len + 1 >= sizeof(g_buf) || ch == '\n' || ch == '\0') ;;;341 { ;;;342 ;;;343 /* Send the char */ ;;;344 ;;;345 if(SH_DoCommand(0x04, (int)g_buf, NULL) != 0) ;;;346 { ;;;347 g_buf_len = 0; ;;;348 return; ;;;349 } ;;;350 else ;;;351 { ;;;352 int i; ;;;353 ;;;354 for(i=0;iFIFOSTS & UART_FIFOSTS_TXFULL_Msk); 000002 698a LDR r2,[r1,#0x18] 000004 0212 LSLS r2,r2,#8 000006 d4fc BMI |L5.2| ;;;320 DEBUG_PORT->DAT = ch; 000008 6008 STR r0,[r1,#0] ;;;321 if(ch == '\n'){ 00000a 280a CMP r0,#0xa 00000c d104 BNE |L5.24| |L5.14| ;;;322 while(DEBUG_PORT->FIFOSTS & UART_FIFOSTS_TXFULL_Msk); 00000e 6988 LDR r0,[r1,#0x18] 000010 0200 LSLS r0,r0,#8 000012 d4fc BMI |L5.14| ;;;323 DEBUG_PORT->DAT = '\r'; 000014 200d MOVS r0,#0xd 000016 6008 STR r0,[r1,#0] |L5.24| ;;;324 } ;;;325 #endif ;;;326 } 000018 4770 BX lr ;;;327 ENDP 00001a 0000 DCW 0x0000 |L5.28| DCD 0x40050000 AREA ||i._ttywrch||, CODE, READONLY, ALIGN=1 _ttywrch PROC ;;;443 /*---------------------------------------------------------------------------------------------------------*/ ;;;444 void _ttywrch(int ch) 000000 b500 PUSH {lr} 000002 f7fffffe BL SendChar_ToUART ;;;445 { ;;;446 SendChar(ch); ;;;447 return; ;;;448 } 000006 bd00 POP {pc} ;;;449 ENDP AREA ||i.ferror||, CODE, READONLY, ALIGN=1 ferror PROC ;;;460 ;;;461 int ferror(FILE *f) { 000000 2000 MOVS r0,#0 ;;;462 return EOF; 000002 43c0 MVNS r0,r0 ;;;463 } 000004 4770 BX lr ;;;464 ENDP AREA ||i.fgetc||, CODE, READONLY, ALIGN=1 fgetc PROC ;;;455 ;;;456 int fgetc(FILE *f) { 000000 b500 PUSH {lr} ;;;457 return (GetChar()); 000002 f7fffffe BL GetChar ;;;458 } 000006 bd00 POP {pc} ;;;459 ENDP AREA ||i.fputc||, CODE, READONLY, ALIGN=1 fputc PROC ;;;449 ;;;450 int fputc(int ch, FILE *f) 000000 b500 PUSH {lr} ;;;451 { 000002 4603 MOV r3,r0 000004 f7fffffe BL SendChar_ToUART ;;;452 SendChar(ch); ;;;453 return ch; 000008 4618 MOV r0,r3 ;;;454 } 00000a bd00 POP {pc} ;;;455 ENDP AREA ||i.kbhit||, CODE, READONLY, ALIGN=2 kbhit PROC ;;;414 */ ;;;415 int kbhit(void) 000000 4802 LDR r0,|L10.12| ;;;416 { ;;;417 #ifndef DISABLE_UART ;;;418 return !(DEBUG_PORT->FIFOSTS & UART_FIFOSTS_RXEMPTY_Msk); 000002 6980 LDR r0,[r0,#0x18] 000004 0440 LSLS r0,r0,#17 000006 17c0 ASRS r0,r0,#31 000008 1c40 ADDS r0,r0,#1 ;;;419 #else ;;;420 return(0); ;;;421 #endif ;;;422 } 00000a 4770 BX lr ;;;423 ENDP |L10.12| DCD 0x40050000 AREA ||i.stackDump||, CODE, READONLY, ALIGN=2 REQUIRE _printf_percent REQUIRE _printf_x REQUIRE _printf_longlong_hex stackDump PROC ;;;48 ;;;49 void stackDump(uint32_t stack[]) 000000 b510 PUSH {r4,lr} ;;;50 { 000002 4604 MOV r4,r0 ;;;51 printf("r0 = 0x%x\n", stack[r0]); 000004 6801 LDR r1,[r0,#0] 000006 a010 ADR r0,|L11.72| 000008 f7fffffe BL __2printf ;;;52 printf("r1 = 0x%x\n", stack[r1]); 00000c a011 ADR r0,|L11.84| 00000e 6861 LDR r1,[r4,#4] 000010 f7fffffe BL __2printf ;;;53 printf("r2 = 0x%x\n", stack[r2]); 000014 a012 ADR r0,|L11.96| 000016 68a1 LDR r1,[r4,#8] 000018 f7fffffe BL __2printf ;;;54 printf("r3 = 0x%x\n", stack[r3]); 00001c a013 ADR r0,|L11.108| 00001e 68e1 LDR r1,[r4,#0xc] 000020 f7fffffe BL __2printf ;;;55 printf("r12 = 0x%x\n", stack[r12]); 000024 a014 ADR r0,|L11.120| 000026 6921 LDR r1,[r4,#0x10] 000028 f7fffffe BL __2printf ;;;56 printf("lr = 0x%x\n", stack[lr]); 00002c a015 ADR r0,|L11.132| 00002e 6961 LDR r1,[r4,#0x14] 000030 f7fffffe BL __2printf ;;;57 printf("pc = 0x%x\n", stack[pc]); 000034 a016 ADR r0,|L11.144| 000036 69a1 LDR r1,[r4,#0x18] 000038 f7fffffe BL __2printf ;;;58 printf("psr = 0x%x\n", stack[psr]); 00003c a017 ADR r0,|L11.156| 00003e 69e1 LDR r1,[r4,#0x1c] 000040 f7fffffe BL __2printf ;;;59 } 000044 bd10 POP {r4,pc} ;;;60 ENDP 000046 0000 DCW 0x0000 |L11.72| 000048 72302020 DCB "r0 = 0x%x\n",0 00004c 3d203078 000050 25780a00 |L11.84| 000054 72312020 DCB "r1 = 0x%x\n",0 000058 3d203078 00005c 25780a00 |L11.96| 000060 72322020 DCB "r2 = 0x%x\n",0 000064 3d203078 000068 25780a00 |L11.108| 00006c 72332020 DCB "r3 = 0x%x\n",0 000070 3d203078 000074 25780a00 |L11.120| 000078 72313220 DCB "r12 = 0x%x\n",0 00007c 3d203078 000080 25780a00 |L11.132| 000084 6c722020 DCB "lr = 0x%x\n",0 000088 3d203078 00008c 25780a00 |L11.144| 000090 70632020 DCB "pc = 0x%x\n",0 000094 3d203078 000098 25780a00 |L11.156| 00009c 70737220 DCB "psr = 0x%x\n",0 0000a0 3d203078 0000a4 25780a00 AREA ||.data||, DATA, ALIGN=2 __stdout DCD 0x00000000 AREA ||area_number.15||, DATA, ALIGN=2 EXPORTAS ||area_number.15||, ||.data|| __stdin DCD 0x00000000 ;*** Start embedded assembler *** #line 1 "..\\..\\..\\Library\\StdDriver\\src\\retarget.c" AREA ||.rev16_text||, CODE THUMB EXPORT |__asm___10_retarget_c_8c64092a____REV16| #line 388 "..\\..\\..\\Library\\CMSIS\\Include\\cmsis_armcc.h" |__asm___10_retarget_c_8c64092a____REV16| PROC #line 389 rev16 r0, r0 bx lr ENDP AREA ||.revsh_text||, CODE THUMB EXPORT |__asm___10_retarget_c_8c64092a____REVSH| #line 402 |__asm___10_retarget_c_8c64092a____REVSH| PROC #line 403 revsh r0, r0 bx lr ENDP AREA ||.emb_text||, CODE THUMB EXPORT |HardFault_Handler| #line 289 "..\\..\\..\\Library\\StdDriver\\src\\retarget.c" |HardFault_Handler| PROC #line 290 MOVS r0, #4 MOV r1, LR TST r0, r1 BEQ Stack_Use_MSP MRS R0, PSP B Get_LR_and_Branch Stack_Use_MSP MRS R0, MSP Get_LR_and_Branch MOV R1, LR LDR R2,= |Hard_Fault_Handler| BX R2 ENDP ;*** End embedded assembler ***