; generated by ARM C/C++ Compiler, 4.1 [Build 894]
; commandline ArmCC [--list --split_sections --debug -c --asm --interleave -o.\obj\retarget.o --asm_dir=.\lst\ --list_dir=.\lst\ --depend=.\obj\retarget.d --feedback=.\obj\PWM_Capture.fed --cpu=Cortex-M0 --apcs=interwork -O0 -I..\..\..\..\Library\CMSIS\Include -I..\..\..\..\Library\Device\Nuvoton\Nano100Series\Include -I..\..\..\..\Library\StdDriver\inc -IC:\Keil\ARM\RV31\Inc -IC:\Keil\ARM\CMSIS\Include -D__MICROLIB --omf_browse=.\obj\retarget.crf ..\..\..\..\Library\StdDriver\src\retarget.c]
                          THUMB

                          AREA ||i.GetChar||, CODE, READONLY, ALIGN=2

                  GetChar PROC
;;;362    
;;;363    char GetChar(void)
000000  e008              B        |L1.20|
                  |L1.2|
;;;364    {
;;;365    #if defined(DEBUG_ENABLE_SEMIHOST)
;;;366    # if defined ( __CC_ARM   )
;;;367        int nRet;
;;;368        while(SH_DoCommand(0x101, 0, &nRet) != 0) {
;;;369            if(nRet != 0) {
;;;370                SH_DoCommand(0x07, 0, &nRet);
;;;371                return (char)nRet;
;;;372            }
;;;373        }
;;;374    # else
;;;375        int nRet;
;;;376        while(SH_DoCommand(0x7, 0, &nRet) != 0) {
;;;377            if(nRet != 0)
;;;378                return (char)nRet;
;;;379        }
;;;380    # endif
;;;381    #endif
;;;382    #ifndef DISABLE_UART
;;;383        while (1) {
;;;384            if(!(DEBUG_PORT->FSR & UART_FSR_RX_EMPTY_F_Msk)) {
000002  4805              LDR      r0,|L1.24|
000004  6980              LDR      r0,[r0,#0x18]
000006  2102              MOVS     r1,#2
000008  4208              TST      r0,r1
00000a  d103              BNE      |L1.20|
;;;385                return (DEBUG_PORT->RBR);
00000c  4802              LDR      r0,|L1.24|
00000e  6800              LDR      r0,[r0,#0]
000010  b2c0              UXTB     r0,r0
;;;386    
;;;387            }
;;;388        }
;;;389    #else
;;;390        return(0);
;;;391    #endif
;;;392    }
000012  4770              BX       lr
                  |L1.20|
000014  e7f5              B        |L1.2|
;;;393    
                          ENDP

000016  0000              DCW      0x0000
                  |L1.24|
                          DCD      0x40050000

                          AREA ||i.Hard_Fault_Handler||, CODE, READONLY, ALIGN=2

                  Hard_Fault_Handler PROC
                  ||__tagsym$$used||
;;;55     
;;;56     void Hard_Fault_Handler(uint32_t stack[])
000000  4604              MOV      r4,r0
;;;57     {     
;;;58         printf("In Hard Fault Handler\n");
000002  a004              ADR      r0,|L2.20|
000004  f7fffffe          BL       __2printf
;;;59     
;;;60         stackDump(stack);
000008  4620              MOV      r0,r4
00000a  f7fffffe          BL       stackDump
;;;61     	
;;;62     	//Chip Reset
;;;63     	//SYS_UnlockReg();
;;;64     	//SYS->IPRST_CTL1 |= SYS_IPRST_CTL1_CHIP_RST_Msk;
;;;65     
;;;66         while(1);
00000e  bf00              NOP      
                  |L2.16|
000010  e7fe              B        |L2.16|
;;;67     }
;;;68     
                          ENDP

000012  0000              DCW      0x0000
                  |L2.20|
000014  496e2048          DCB      "In Hard Fault Handler\n",0
000018  61726420
00001c  4661756c
000020  74204861
000024  6e646c65
000028  720a00  
00002b  00                DCB      0

                          AREA ||i.IsDebugFifoEmpty||, CODE, READONLY, ALIGN=2

                  IsDebugFifoEmpty PROC
;;;417      */
;;;418    int IsDebugFifoEmpty(void)
000000  4803              LDR      r0,|L3.16|
;;;419    {
;;;420    #ifndef DISABLE_UART
;;;421        return (DEBUG_PORT->FSR & UART_FSR_TE_F_Msk) ? 1 : 0;
000002  6980              LDR      r0,[r0,#0x18]
000004  2101              MOVS     r1,#1
000006  02c9              LSLS     r1,r1,#11
000008  4008              ANDS     r0,r0,r1
00000a  0ac0              LSRS     r0,r0,#11
;;;422    #else
;;;423        return(1);
;;;424    #endif
;;;425    
;;;426    }
00000c  4770              BX       lr
;;;427    
                          ENDP

00000e  0000              DCW      0x0000
                  |L3.16|
                          DCD      0x40050000

                          AREA ||i.SendChar||, CODE, READONLY, ALIGN=1

                  SendChar PROC
;;;329    
;;;330    void SendChar(int ch)
000000  b500              PUSH     {lr}
;;;331    {
000002  4603              MOV      r3,r0
;;;332    #if defined(DEBUG_ENABLE_SEMIHOST)
;;;333        g_buf[g_buf_len++] = ch;
;;;334        g_buf[g_buf_len] = '\0';
;;;335        if(g_buf_len + 1 >= sizeof(g_buf) || ch == '\n' || ch == '\0') {
;;;336    
;;;337            /* Send the char */
;;;338    
;;;339            if(SH_DoCommand(0x04, (int)g_buf, NULL) != 0) {
;;;340                g_buf_len = 0;
;;;341                return;
;;;342            } else {
;;;343                int i;
;;;344    
;;;345                for(i=0; i<g_buf_len; i++)
;;;346                    SendChar_ToUART(g_buf[i]);
;;;347                g_buf_len = 0;
;;;348            }
;;;349        }
;;;350    #else
;;;351        SendChar_ToUART(ch);
000004  4618              MOV      r0,r3
000006  f7fffffe          BL       SendChar_ToUART
;;;352    #endif
;;;353    }
00000a  bd00              POP      {pc}
;;;354    
                          ENDP


                          AREA ||i.SendChar_ToUART||, CODE, READONLY, ALIGN=2

                  SendChar_ToUART PROC
;;;310    
;;;311    void SendChar_ToUART(int ch)
000000  bf00              NOP      
                  |L5.2|
;;;312    {
;;;313    #ifndef DISABLE_UART
;;;314        while(DEBUG_PORT->FSR & UART_FSR_TX_FULL_F_Msk);
000002  490a              LDR      r1,|L5.44|
000004  6989              LDR      r1,[r1,#0x18]
000006  2201              MOVS     r2,#1
000008  0292              LSLS     r2,r2,#10
00000a  4211              TST      r1,r2
00000c  d1f9              BNE      |L5.2|
;;;315        DEBUG_PORT->THR = ch;
00000e  4907              LDR      r1,|L5.44|
000010  6008              STR      r0,[r1,#0]
;;;316        if(ch == '\n') {
000012  280a              CMP      r0,#0xa
000014  d109              BNE      |L5.42|
;;;317            while(DEBUG_PORT->FSR & UART_FSR_TX_FULL_F_Msk);
000016  bf00              NOP      
                  |L5.24|
000018  4904              LDR      r1,|L5.44|
00001a  6989              LDR      r1,[r1,#0x18]
00001c  2201              MOVS     r2,#1
00001e  0292              LSLS     r2,r2,#10
000020  4211              TST      r1,r2
000022  d1f9              BNE      |L5.24|
;;;318            DEBUG_PORT->THR = '\r';
000024  210d              MOVS     r1,#0xd
000026  4a01              LDR      r2,|L5.44|
000028  6011              STR      r1,[r2,#0]
                  |L5.42|
;;;319        }
;;;320    #endif
;;;321    }
00002a  4770              BX       lr
;;;322    
                          ENDP

                  |L5.44|
                          DCD      0x40050000

                          AREA ||i._ttywrch||, CODE, READONLY, ALIGN=1

                  _ttywrch PROC
;;;430    /*---------------------------------------------------------------------------------------------------------*/
;;;431    void _ttywrch(int ch)
000000  b510              PUSH     {r4,lr}
;;;432    {
000002  4604              MOV      r4,r0
;;;433        SendChar(ch);
000004  4620              MOV      r0,r4
000006  f7fffffe          BL       SendChar
;;;434        return;
;;;435    }
00000a  bd10              POP      {r4,pc}
;;;436    
                          ENDP


                          AREA ||i.ferror||, CODE, READONLY, ALIGN=1

                  ferror PROC
;;;448    
;;;449    int ferror(FILE *f)
000000  4601              MOV      r1,r0
;;;450    {
;;;451        return EOF;
000002  2000              MOVS     r0,#0
000004  43c0              MVNS     r0,r0
;;;452    }
000006  4770              BX       lr
;;;453    
                          ENDP


                          AREA ||i.fgetc||, CODE, READONLY, ALIGN=1

                  fgetc PROC
;;;442    
;;;443    int fgetc(FILE *f)
000000  b500              PUSH     {lr}
;;;444    {
000002  4602              MOV      r2,r0
;;;445        return (GetChar());
000004  f7fffffe          BL       GetChar
;;;446    }
000008  bd00              POP      {pc}
;;;447    
                          ENDP


                          AREA ||i.fputc||, CODE, READONLY, ALIGN=1

                  fputc PROC
;;;436    
;;;437    int fputc(int ch, FILE *f)
000000  b530              PUSH     {r4,r5,lr}
;;;438    {
000002  4604              MOV      r4,r0
000004  460d              MOV      r5,r1
;;;439        SendChar(ch);
000006  4620              MOV      r0,r4
000008  f7fffffe          BL       SendChar
;;;440        return ch;
00000c  4620              MOV      r0,r4
;;;441    }
00000e  bd30              POP      {r4,r5,pc}
;;;442    
                          ENDP


                          AREA ||i.kbhit||, CODE, READONLY, ALIGN=2

                  kbhit PROC
;;;401      */
;;;402    int kbhit(void)
000000  4802              LDR      r0,|L10.12|
;;;403    {
;;;404    #ifndef DISABLE_UART
;;;405        return !(DEBUG_PORT->FSR & UART_FSR_RX_EMPTY_F_Msk);
000002  6980              LDR      r0,[r0,#0x18]
000004  0841              LSRS     r1,r0,#1
000006  2001              MOVS     r0,#1
000008  4388              BICS     r0,r0,r1
;;;406    #else
;;;407        return(0);
;;;408    #endif
;;;409    }
00000a  4770              BX       lr
;;;410    
                          ENDP

                  |L10.12|
                          DCD      0x40050000

                          AREA ||i.stackDump||, CODE, READONLY, ALIGN=2

                          REQUIRE _printf_percent
                          REQUIRE _printf_x
                          REQUIRE _printf_longlong_hex
                  stackDump PROC
;;;43     
;;;44     void stackDump(uint32_t stack[])
000000  b510              PUSH     {r4,lr}
;;;45     {
000002  4604              MOV      r4,r0
;;;46     	printf("r0  = 0x%x\n", stack[r0]);
000004  a010              ADR      r0,|L11.72|
000006  6821              LDR      r1,[r4,#0]
000008  f7fffffe          BL       __2printf
;;;47     	printf("r1  = 0x%x\n", stack[r1]);
00000c  a011              ADR      r0,|L11.84|
00000e  6861              LDR      r1,[r4,#4]
000010  f7fffffe          BL       __2printf
;;;48     	printf("r2  = 0x%x\n", stack[r2]);
000014  a012              ADR      r0,|L11.96|
000016  68a1              LDR      r1,[r4,#8]
000018  f7fffffe          BL       __2printf
;;;49     	printf("r3  = 0x%x\n", stack[r3]);
00001c  a013              ADR      r0,|L11.108|
00001e  68e1              LDR      r1,[r4,#0xc]
000020  f7fffffe          BL       __2printf
;;;50     	printf("r12 = 0x%x\n", stack[r12]);
000024  a014              ADR      r0,|L11.120|
000026  6921              LDR      r1,[r4,#0x10]
000028  f7fffffe          BL       __2printf
;;;51     	printf("lr  = 0x%x\n", stack[lr]);
00002c  a015              ADR      r0,|L11.132|
00002e  6961              LDR      r1,[r4,#0x14]
000030  f7fffffe          BL       __2printf
;;;52     	printf("pc  = 0x%x\n", stack[pc]);
000034  a016              ADR      r0,|L11.144|
000036  69a1              LDR      r1,[r4,#0x18]
000038  f7fffffe          BL       __2printf
;;;53     	printf("psr = 0x%x\n", stack[psr]);
00003c  a017              ADR      r0,|L11.156|
00003e  69e1              LDR      r1,[r4,#0x1c]
000040  f7fffffe          BL       __2printf
;;;54     } 
000044  bd10              POP      {r4,pc}
;;;55     
                          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
                  __stdin
                          DCD      0x00000000

;*** Start embedded assembler ***

#line 1 "..\\..\\..\\..\\Library\\StdDriver\\src\\retarget.c"
	AREA ||.rev16_text||, CODE, READONLY
	THUMB
	EXPORT |__asm___10_retarget_c_8c64092a____REV16|
#line 118 "..\\..\\..\\..\\Library\\CMSIS\\Include\\core_cmInstr.h"
|__asm___10_retarget_c_8c64092a____REV16| PROC
#line 119

 rev16 r0, r0
 bx lr
	ENDP
	AREA ||.revsh_text||, CODE, READONLY
	THUMB
	EXPORT |__asm___10_retarget_c_8c64092a____REVSH|
#line 132
|__asm___10_retarget_c_8c64092a____REVSH| PROC
#line 133

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

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