; generated by Component: ARM Compiler 5.05 update 2 (build 169) Tool: ArmCC [4d0f38]
; commandline ArmCC [--list --debug -c --asm --interleave -o.\obj\retarget.o --asm_dir=.\lst\ --list_dir=.\lst\ --depend=.\obj\retarget.d --cpu=Cortex-M4.fp --apcs=interwork -O0 --diag_suppress=9931 -I..\..\..\Library\CMSIS\Include -I..\..\..\Library\Device\Nuvoton\M451Series\Include -I..\..\..\Library\StdDriver\inc -I..\Bsp -I..\User -I..\lcd_driver -I..\exti_driver -I..\led_driver -I..\touch -I..\dotmatix_lcd -I..\KH -ID:\\A\LCD\͹ϵ_VKL\VKL\VKL060_TESTCODE\project\VKL060_FUNC\Keil\RTE -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\4.3.0\CMSIS\Include -D__UVISION_VERSION=515 -D_RTE_ --omf_browse=.\obj\retarget.crf ..\..\..\Library\StdDriver\src\retarget.c]
                          THUMB

                          AREA ||.text||, CODE, READONLY, ALIGN=2

                          REQUIRE _printf_percent
                          REQUIRE _printf_x
                          REQUIRE _printf_longlong_hex
                  stackDump PROC
;;;44      */
;;;45     static void stackDump(unsigned int stack[])
000000  b510              PUSH     {r4,lr}
;;;46     {   
000002  4604              MOV      r4,r0
;;;47         printf("r0  = 0x%x\n", stack[r0]);
000004  a038              ADR      r0,|L1.232|
000006  6821              LDR      r1,[r4,#0]
000008  f7fffffe          BL       __2printf
;;;48         printf("r1  = 0x%x\n", stack[r1]);
00000c  a039              ADR      r0,|L1.244|
00000e  6861              LDR      r1,[r4,#4]
000010  f7fffffe          BL       __2printf
;;;49         printf("r2  = 0x%x\n", stack[r2]);
000014  a03a              ADR      r0,|L1.256|
000016  68a1              LDR      r1,[r4,#8]
000018  f7fffffe          BL       __2printf
;;;50         printf("r3  = 0x%x\n", stack[r3]);
00001c  a03b              ADR      r0,|L1.268|
00001e  68e1              LDR      r1,[r4,#0xc]
000020  f7fffffe          BL       __2printf
;;;51         printf("r12 = 0x%x\n", stack[r12]);
000024  a03c              ADR      r0,|L1.280|
000026  6921              LDR      r1,[r4,#0x10]
000028  f7fffffe          BL       __2printf
;;;52         printf("lr  = 0x%x\n", stack[lr]);
00002c  a03d              ADR      r0,|L1.292|
00002e  6961              LDR      r1,[r4,#0x14]
000030  f7fffffe          BL       __2printf
;;;53         printf("pc  = 0x%x\n", stack[pc]);
000034  a03e              ADR      r0,|L1.304|
000036  69a1              LDR      r1,[r4,#0x18]
000038  f7fffffe          BL       __2printf
;;;54         printf("psr = 0x%x\n", stack[psr]);
00003c  a03f              ADR      r0,|L1.316|
00003e  69e1              LDR      r1,[r4,#0x1c]
000040  f7fffffe          BL       __2printf
;;;55     }
000044  bd10              POP      {r4,pc}
;;;56     
                          ENDP

                  Hard_Fault_Handler PROC
                  ||__tagsym$$used||
;;;62      */
;;;63     void Hard_Fault_Handler(unsigned int stack[])
000046  4604              MOV      r4,r0
;;;64     {
;;;65         printf("In Hard Fault Handler\n");
000048  a03f              ADR      r0,|L1.328|
00004a  f7fffffe          BL       __2printf
;;;66     
;;;67         stackDump(stack);
00004e  4620              MOV      r0,r4
000050  f7fffffe          BL       stackDump
;;;68         // Replace while(1) with chip reset if WDT is not enabled for end product
;;;69         while(1);
000054  bf00              NOP      
                  |L1.86|
000056  e7fe              B        |L1.86|
;;;70         //SYS->IPRST0 = SYS_IPRST0_CHIPRST_Msk;
;;;71     }
;;;72     
                          ENDP

                  SendChar_ToUART PROC
;;;392    #ifndef NONBLOCK_PRINTF
;;;393    void SendChar_ToUART(int ch)
000058  bf00              NOP      
                  |L1.90|
;;;394    {
;;;395        while(DEBUG_PORT->FIFOSTS & UART_FIFOSTS_TXFULL_Msk);
00005a  4941              LDR      r1,|L1.352|
00005c  6989              LDR      r1,[r1,#0x18]
00005e  f4010100          AND      r1,r1,#0x800000
000062  2900              CMP      r1,#0
000064  d1f9              BNE      |L1.90|
;;;396        
;;;397        DEBUG_PORT->DAT = ch;
000066  493e              LDR      r1,|L1.352|
000068  6008              STR      r0,[r1,#0]
;;;398        if(ch == '\n')
00006a  280a              CMP      r0,#0xa
00006c  d109              BNE      |L1.130|
;;;399        {
;;;400            while(DEBUG_PORT->FIFOSTS & UART_FIFOSTS_TXFULL_Msk);
00006e  bf00              NOP      
                  |L1.112|
000070  493b              LDR      r1,|L1.352|
000072  6989              LDR      r1,[r1,#0x18]
000074  f4010100          AND      r1,r1,#0x800000
000078  2900              CMP      r1,#0
00007a  d1f9              BNE      |L1.112|
;;;401            DEBUG_PORT->DAT = '\r';
00007c  210d              MOVS     r1,#0xd
00007e  4a38              LDR      r2,|L1.352|
000080  6011              STR      r1,[r2,#0]
                  |L1.130|
;;;402        }
;;;403    }
000082  4770              BX       lr
;;;404    
                          ENDP

                  SendChar PROC
;;;469     */
;;;470    void SendChar(int ch)
000084  b500              PUSH     {lr}
;;;471    {
000086  4603              MOV      r3,r0
;;;472    #if defined(DEBUG_ENABLE_SEMIHOST)
;;;473        g_buf[g_buf_len++] = ch;
;;;474        g_buf[g_buf_len] = '\0';
;;;475        if(g_buf_len + 1 >= sizeof(g_buf) || ch == '\n' || ch == '\0')
;;;476        {
;;;477            /* Send the char */
;;;478            if(SH_DoCommand(0x04, (int)g_buf, NULL) != 0)
;;;479            {
;;;480                g_buf_len = 0;
;;;481                return;
;;;482            }
;;;483            else
;;;484            {
;;;485                g_buf_len = 0;
;;;486            }
;;;487        }
;;;488    #else
;;;489        SendChar_ToUART(ch);
000088  4618              MOV      r0,r3
00008a  f7fffffe          BL       SendChar_ToUART
;;;490    #endif
;;;491    }
00008e  bd00              POP      {pc}
;;;492    
                          ENDP

                  GetChar PROC
;;;501     */
;;;502    char GetChar(void)
000090  e008              B        |L1.164|
                  |L1.146|
;;;503    {
;;;504    #ifdef DEBUG_ENABLE_SEMIHOST
;;;505    # if defined (__CC_ARM)
;;;506        int nRet;
;;;507        while(SH_DoCommand(0x101, 0, &nRet) != 0)
;;;508        {
;;;509            if(nRet != 0)
;;;510            {
;;;511                SH_DoCommand(0x07, 0, &nRet);
;;;512                return (char)nRet;
;;;513            }
;;;514        }
;;;515    # else
;;;516        int nRet;
;;;517        while(SH_DoCommand(0x7, 0, &nRet) != 0)
;;;518        {
;;;519            if(nRet != 0)
;;;520                return (char)nRet;
;;;521        }
;;;522    # endif
;;;523        return (0);
;;;524    #else
;;;525    
;;;526        while(1)
;;;527        {
;;;528            if((DEBUG_PORT->FIFOSTS & UART_FIFOSTS_RXEMPTY_Msk) == 0)
000092  4833              LDR      r0,|L1.352|
000094  6980              LDR      r0,[r0,#0x18]
000096  f4004080          AND      r0,r0,#0x4000
00009a  b918              CBNZ     r0,|L1.164|
;;;529            {
;;;530                return (DEBUG_PORT->DAT);
00009c  4830              LDR      r0,|L1.352|
00009e  6800              LDR      r0,[r0,#0]
0000a0  b2c0              UXTB     r0,r0
;;;531            }
;;;532        }
;;;533    
;;;534    #endif
;;;535    }
0000a2  4770              BX       lr
                  |L1.164|
0000a4  e7f5              B        |L1.146|
;;;536    
                          ENDP

                  kbhit PROC
;;;547    
;;;548    int kbhit(void)
0000a6  482e              LDR      r0,|L1.352|
;;;549    {
;;;550        return !((DEBUG_PORT->FIFOSTS & UART_FIFOSTS_RXEMPTY_Msk) == 0);
0000a8  6980              LDR      r0,[r0,#0x18]
0000aa  f3c03080          UBFX     r0,r0,#14,#1
;;;551    }
0000ae  4770              BX       lr
;;;552    /**
                          ENDP

                  IsDebugFifoEmpty PROC
;;;562    
;;;563    int IsDebugFifoEmpty(void)
0000b0  482b              LDR      r0,|L1.352|
;;;564    {
;;;565        return ((DEBUG_PORT->FIFOSTS & UART_FIFOSTS_TXEMPTYF_Msk) != 0);
0000b2  6980              LDR      r0,[r0,#0x18]
0000b4  f3c07000          UBFX     r0,r0,#28,#1
;;;566    }
0000b8  4770              BX       lr
;;;567    
                          ENDP

                  _ttywrch PROC
;;;577    
;;;578    void _ttywrch(int ch)
0000ba  b510              PUSH     {r4,lr}
;;;579    {
0000bc  4604              MOV      r4,r0
;;;580        SendChar(ch);
0000be  4620              MOV      r0,r4
0000c0  f7fffffe          BL       SendChar
;;;581        return;
;;;582    }
0000c4  bd10              POP      {r4,pc}
;;;583    
                          ENDP

                  fputc PROC
;;;602    
;;;603    int fputc(int ch, FILE *stream)
0000c6  b530              PUSH     {r4,r5,lr}
;;;604    {
0000c8  4604              MOV      r4,r0
0000ca  460d              MOV      r5,r1
;;;605        SendChar(ch);
0000cc  4620              MOV      r0,r4
0000ce  f7fffffe          BL       SendChar
;;;606        return ch;
0000d2  4620              MOV      r0,r4
;;;607    }
0000d4  bd30              POP      {r4,r5,pc}
;;;608    
                          ENDP

                  fgetc PROC
;;;620    
;;;621    int fgetc(FILE *stream)
0000d6  b500              PUSH     {lr}
;;;622    {
0000d8  4601              MOV      r1,r0
;;;623        return (GetChar());
0000da  f7fffffe          BL       GetChar
;;;624    }
0000de  bd00              POP      {pc}
;;;625    
                          ENDP

                  ferror PROC
;;;640    
;;;641    int ferror(FILE *stream)
0000e0  4601              MOV      r1,r0
;;;642    {
;;;643        return EOF;
0000e2  f04f30ff          MOV      r0,#0xffffffff
;;;644    }
0000e6  4770              BX       lr
;;;645    
                          ENDP

                  |L1.232|
0000e8  72302020          DCB      "r0  = 0x%x\n",0
0000ec  3d203078
0000f0  25780a00
                  |L1.244|
0000f4  72312020          DCB      "r1  = 0x%x\n",0
0000f8  3d203078
0000fc  25780a00
                  |L1.256|
000100  72322020          DCB      "r2  = 0x%x\n",0
000104  3d203078
000108  25780a00
                  |L1.268|
00010c  72332020          DCB      "r3  = 0x%x\n",0
000110  3d203078
000114  25780a00
                  |L1.280|
000118  72313220          DCB      "r12 = 0x%x\n",0
00011c  3d203078
000120  25780a00
                  |L1.292|
000124  6c722020          DCB      "lr  = 0x%x\n",0
000128  3d203078
00012c  25780a00
                  |L1.304|
000130  70632020          DCB      "pc  = 0x%x\n",0
000134  3d203078
000138  25780a00
                  |L1.316|
00013c  70737220          DCB      "psr = 0x%x\n",0
000140  3d203078
000144  25780a00
                  |L1.328|
000148  496e2048          DCB      "In Hard Fault Handler\n",0
00014c  61726420
000150  4661756c
000154  74204861
000158  6e646c65
00015c  720a00  
00015f  00                DCB      0
                  |L1.352|
                          DCD      0x40070000

                          AREA ||.data||, DATA, ALIGN=2

                  __stdout
                          DCD      0x00000000
                  __stdin
                          DCD      0x00000000

;*** Start embedded assembler ***

#line 1 "..\\..\\..\\Library\\StdDriver\\src\\retarget.c"
	AREA ||.rev16_text||, CODE
	THUMB
	EXPORT |__asm___10_retarget_c_d5a1b03f____REV16|
#line 114 "..\\..\\..\\Library\\CMSIS\\Include\\core_cmInstr.h"
|__asm___10_retarget_c_d5a1b03f____REV16| PROC
#line 115

 rev16 r0, r0
 bx lr
	ENDP
	AREA ||.revsh_text||, CODE
	THUMB
	EXPORT |__asm___10_retarget_c_d5a1b03f____REVSH|
#line 128
|__asm___10_retarget_c_d5a1b03f____REVSH| PROC
#line 129

 revsh r0, r0
 bx lr
	ENDP
	AREA ||.emb_text||, CODE
	THUMB
	EXPORT |HardFault_Handler|
#line 362 "..\\..\\..\\Library\\StdDriver\\src\\retarget.c"
|HardFault_Handler| PROC
#line 363

 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 ***
