; generated by Component: ARM Compiler 5.06 update 7 (build 960) Tool: ArmCC [4d365d]
; commandline ArmCC [--list --split_sections --debug -c --asm --interleave -o.\obj\retarget.o --asm_dir=.\lst\ --list_dir=.\lst\ --depend=.\obj\retarget.d --cpu=Cortex-M4.fp.sp --apcs=interwork --diag_suppress=9931 -I..\..\..\Library\CMSIS\Include -I..\..\..\Library\Device\Nuvoton\M480\Include -I..\..\..\Library\StdDriver\inc -IC:\Keil_v5\ARM\RV31\INC -IC:\Keil_v5\ARM\CMSIS\Include -D__MICROLIB -D__UVISION_VERSION=538 --omf_browse=.\obj\retarget.crf ..\..\..\Library\StdDriver\src\retarget.c]
                          THUMB

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

                  Hard_Fault_Handler PROC
                  ||__tagsym$$used||
;;;75      */
;;;76     void Hard_Fault_Handler(uint32_t stack[])
000000  4604              MOV      r4,r0
;;;77     {
;;;78         printf("In Hard Fault Handler\n");
000002  a003              ADR      r0,|L1.16|
000004  f7fffffe          BL       __2printf
;;;79     
;;;80         stackDump(stack);
000008  4620              MOV      r0,r4
00000a  f7fffffe          BL       stackDump
                  |L1.14|
;;;81         /* Replace while(1) with chip reset if WDT is not enabled for end product */
;;;82         while(1);
00000e  e7fe              B        |L1.14|
;;;83         /* SYS->IPRST0 = SYS_IPRST0_CHIPRST_Msk; */
;;;84     }
;;;85     
                          ENDP

                  |L1.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
;;;626    
;;;627    int IsDebugFifoEmpty(void)
000000  4802              LDR      r0,|L2.12|
;;;628    {
;;;629    #ifndef DISABLE_UART
;;;630        return ((DEBUG_PORT->FIFOSTS & UART_FIFOSTS_TXEMPTYF_Msk) != 0);
000002  6980              LDR      r0,[r0,#0x18]
000004  f3c07000          UBFX     r0,r0,#28,#1
;;;631    #else
;;;632        return 1;
;;;633    #endif
;;;634    }
000008  4770              BX       lr
;;;635    
                          ENDP

00000a  0000              DCW      0x0000
                  |L2.12|
                          DCD      0x40070000

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

                  SendChar PROC
;;;519     */
;;;520    static void SendChar(int ch)
000000  4906              LDR      r1,|L3.28|
                  |L3.2|
000002  698a              LDR      r2,[r1,#0x18]
000004  0212              LSLS     r2,r2,#8
000006  d4fc              BMI      |L3.2|
000008  280a              CMP      r0,#0xa
00000a  d104              BNE      |L3.22|
00000c  220d              MOVS     r2,#0xd
00000e  600a              STR      r2,[r1,#0]
                  |L3.16|
000010  698a              LDR      r2,[r1,#0x18]
000012  0212              LSLS     r2,r2,#8
000014  d4fc              BMI      |L3.16|
                  |L3.22|
000016  6008              STR      r0,[r1,#0]
;;;521    {
;;;522    #if defined(DEBUG_ENABLE_SEMIHOST)
;;;523        g_buf[g_buf_len++] = ch;
;;;524        g_buf[g_buf_len] = '\0';
;;;525        if(g_buf_len + 1 >= sizeof(g_buf) || ch == '\n' || ch == '\0')
;;;526        {
;;;527            /* Send the char */
;;;528            if(SH_DoCommand(0x04, (int)g_buf, NULL) != 0)
;;;529            {
;;;530                g_buf_len = 0;
;;;531                return;
;;;532            }
;;;533            else
;;;534            {
;;;535    #ifndef DISABLE_UART
;;;536                int i;
;;;537    
;;;538                for(i = 0; i < g_buf_len; i++)
;;;539                    SendChar_ToUART(g_buf[i]);
;;;540    #endif
;;;541                g_buf_len = 0;
;;;542            }
;;;543        }
;;;544    #else
;;;545    #ifndef DISABLE_UART
;;;546        SendChar_ToUART(ch);
;;;547    #endif
;;;548    #endif
;;;549    }
000018  4770              BX       lr
;;;550    
                          ENDP

00001a  0000              DCW      0x0000
                  |L3.28|
                          DCD      0x40070000

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

                  _ttywrch PROC
;;;645    
;;;646    void _ttywrch(int ch)
000000  f7ffbffe          B.W      SendChar
;;;647    {
;;;648        SendChar(ch);
;;;649        return;
;;;650    }
;;;651    
                          ENDP


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

                  ferror PROC
;;;740    
;;;741    int ferror(FILE *stream)
000000  f04f30ff          MOV      r0,#0xffffffff
;;;742    {
;;;743        return EOF;
;;;744    }
000004  4770              BX       lr
;;;745    #endif
                          ENDP


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

                  fgetc PROC
;;;720    
;;;721    int fgetc(FILE *stream)
000000  4803              LDR      r0,|L6.16|
                  |L6.2|
000002  6981              LDR      r1,[r0,#0x18]
000004  0449              LSLS     r1,r1,#17
000006  d4fc              BMI      |L6.2|
000008  6800              LDR      r0,[r0,#0]
00000a  b2c0              UXTB     r0,r0
;;;722    {
;;;723        return (GetChar());
;;;724    }
00000c  4770              BX       lr
;;;725    
                          ENDP

00000e  0000              DCW      0x0000
                  |L6.16|
                          DCD      0x40070000

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

                  fputc PROC
;;;670    
;;;671    int fputc(int ch, FILE *stream)
000000  b510              PUSH     {r4,lr}
;;;672    {
000002  4604              MOV      r4,r0
;;;673        SendChar(ch);
000004  f7fffffe          BL       SendChar
;;;674        return ch;
000008  4620              MOV      r0,r4
;;;675    }
00000a  bd10              POP      {r4,pc}
;;;676    
                          ENDP


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

                  kbhit PROC
;;;607    
;;;608    int kbhit(void)
000000  4802              LDR      r0,|L8.12|
;;;609    {
;;;610    #ifndef DISABLE_UART
;;;611        return !((DEBUG_PORT->FIFOSTS & UART_FIFOSTS_RXEMPTY_Msk) == 0);
000002  6980              LDR      r0,[r0,#0x18]
000004  f3c03080          UBFX     r0,r0,#14,#1
;;;612    #else
;;;613        return 0;
;;;614    #endif
;;;615    }
000008  4770              BX       lr
;;;616    /**
                          ENDP

00000a  0000              DCW      0x0000
                  |L8.12|
                          DCD      0x40070000

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

                          REQUIRE _printf_percent
                          REQUIRE _printf_x
                          REQUIRE _printf_longlong_hex
                  stackDump PROC
;;;57      */
;;;58     static void stackDump(uint32_t stack[])
000000  b510              PUSH     {r4,lr}
;;;59     {
000002  4604              MOV      r4,r0
;;;60         printf("r0  = 0x%x\n", stack[r0]);
000004  6801              LDR      r1,[r0,#0]
000006  a010              ADR      r0,|L9.72|
000008  f7fffffe          BL       __2printf
;;;61         printf("r1  = 0x%x\n", stack[r1]);
00000c  a011              ADR      r0,|L9.84|
00000e  6861              LDR      r1,[r4,#4]
000010  f7fffffe          BL       __2printf
;;;62         printf("r2  = 0x%x\n", stack[r2]);
000014  a012              ADR      r0,|L9.96|
000016  68a1              LDR      r1,[r4,#8]
000018  f7fffffe          BL       __2printf
;;;63         printf("r3  = 0x%x\n", stack[r3]);
00001c  a013              ADR      r0,|L9.108|
00001e  68e1              LDR      r1,[r4,#0xc]
000020  f7fffffe          BL       __2printf
;;;64         printf("r12 = 0x%x\n", stack[r12]);
000024  a014              ADR      r0,|L9.120|
000026  6921              LDR      r1,[r4,#0x10]
000028  f7fffffe          BL       __2printf
;;;65         printf("lr  = 0x%x\n", stack[lr]);
00002c  a015              ADR      r0,|L9.132|
00002e  6961              LDR      r1,[r4,#0x14]
000030  f7fffffe          BL       __2printf
;;;66         printf("pc  = 0x%x\n", stack[pc]);
000034  a016              ADR      r0,|L9.144|
000036  69a1              LDR      r1,[r4,#0x18]
000038  f7fffffe          BL       __2printf
;;;67         printf("psr = 0x%x\n", stack[psr]);
00003c  69e1              LDR      r1,[r4,#0x1c]
00003e  e8bd4010          POP      {r4,lr}
000042  a016              ADR      r0,|L9.156|
000044  f7ffbffe          B.W      __2printf
;;;68     }
;;;69     
                          ENDP

                  |L9.72|
000048  72302020          DCB      "r0  = 0x%x\n",0
00004c  3d203078
000050  25780a00
                  |L9.84|
000054  72312020          DCB      "r1  = 0x%x\n",0
000058  3d203078
00005c  25780a00
                  |L9.96|
000060  72322020          DCB      "r2  = 0x%x\n",0
000064  3d203078
000068  25780a00
                  |L9.108|
00006c  72332020          DCB      "r3  = 0x%x\n",0
000070  3d203078
000074  25780a00
                  |L9.120|
000078  72313220          DCB      "r12 = 0x%x\n",0
00007c  3d203078
000080  25780a00
                  |L9.132|
000084  6c722020          DCB      "lr  = 0x%x\n",0
000088  3d203078
00008c  25780a00
                  |L9.144|
000090  70632020          DCB      "pc  = 0x%x\n",0
000094  3d203078
000098  25780a00
                  |L9.156|
00009c  70737220          DCB      "psr = 0x%x\n",0
0000a0  3d203078
0000a4  25780a00

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

                  __stdout
                          DCD      0x00000000

                          AREA ||area_number.13||, DATA, ALIGN=2

                          EXPORTAS ||area_number.13||, ||.data||
                  __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 388 "..\\..\\..\\Library\\CMSIS\\Include\\cmsis_armcc.h"
|__asm___10_retarget_c_d5a1b03f____REV16| PROC
#line 389

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

 revsh r0, r0
 bx lr
	ENDP
	AREA ||.rrx_text||, CODE
	THUMB
	EXPORT |__asm___10_retarget_c_d5a1b03f____RRX|
#line 587
|__asm___10_retarget_c_d5a1b03f____RRX| PROC
#line 588

 rrx r0, r0
 bx lr
	ENDP
	AREA ||.emb_text||, CODE
	THUMB
	EXPORT |HardFault_Handler|
#line 410 "..\\..\\..\\Library\\StdDriver\\src\\retarget.c"
|HardFault_Handler| PROC
#line 411

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