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

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

                  SYS_ClearResetSrc PROC
;;;30       */
;;;31     void SYS_ClearResetSrc(uint32_t u32Src)
000000  2105              MOVS     r1,#5
;;;32     {
;;;33         SYS->RST_SRC |= u32Src;
000002  0709              LSLS     r1,r1,#28
000004  684a              LDR      r2,[r1,#4]
000006  4302              ORRS     r2,r2,r0
000008  604a              STR      r2,[r1,#4]
;;;34     }
00000a  4770              BX       lr
;;;35     
                          ENDP


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

                  SYS_DisableBOD PROC
;;;181      */
;;;182    void SYS_DisableBOD(void)
000000  4802              LDR      r0,|L2.12|
;;;183    {
;;;184        SYS->BODCTL = SYS->BODCTL & ~(SYS_BODCTL_BOD25_EN_Msk | SYS_BODCTL_BOD20_EN_Msk | SYS_BODCTL_BOD17_EN_Msk);
000002  6a41              LDR      r1,[r0,#0x24]
000004  08c9              LSRS     r1,r1,#3
000006  00c9              LSLS     r1,r1,#3
000008  6241              STR      r1,[r0,#0x24]
;;;185    }
00000a  4770              BX       lr
;;;186    
                          ENDP

                  |L2.12|
                          DCD      0x50000040

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

                  SYS_EnableBOD PROC
;;;171      */
;;;172    void SYS_EnableBOD(int32_t i32Mode, uint32_t u32BODLevel)
000000  4a03              LDR      r2,|L3.16|
;;;173    {
;;;174        SYS->BODCTL = (SYS->BODCTL & ~0xFFF) | (i32Mode | u32BODLevel);
000002  6a53              LDR      r3,[r2,#0x24]
000004  4308              ORRS     r0,r0,r1
000006  0b1b              LSRS     r3,r3,#12
000008  031b              LSLS     r3,r3,#12
00000a  4303              ORRS     r3,r3,r0
00000c  6253              STR      r3,[r2,#0x24]
;;;175    }
00000e  4770              BX       lr
;;;176    
                          ENDP

                  |L3.16|
                          DCD      0x50000040

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

                  SYS_GetBODStatus PROC
;;;42       */
;;;43     uint32_t SYS_GetBODStatus()
000000  4801              LDR      r0,|L4.8|
;;;44     {
;;;45         return (SYS->BODSTS);
000002  6a80              LDR      r0,[r0,#0x28]
;;;46     }
000004  4770              BX       lr
;;;47     
                          ENDP

000006  0000              DCW      0x0000
                  |L4.8|
                          DCD      0x50000040

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

                  SYS_GetResetSrc PROC
;;;52       */
;;;53     uint32_t SYS_GetResetSrc(void)
000000  2005              MOVS     r0,#5
;;;54     {
;;;55         return (SYS->RST_SRC);
000002  0700              LSLS     r0,r0,#28
000004  6840              LDR      r0,[r0,#4]
;;;56     }
000006  4770              BX       lr
;;;57     
                          ENDP


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

                  SYS_IsRegLocked PROC
;;;63       */
;;;64     uint32_t SYS_IsRegLocked(void)
000000  4802              LDR      r0,|L6.12|
;;;65     {
;;;66         return (SYS->RegLockAddr & SYS_RegLockAddr_RegUnLock_Msk);
000002  6800              LDR      r0,[r0,#0]
000004  07c0              LSLS     r0,r0,#31
000006  0fc0              LSRS     r0,r0,#31
;;;67     }
000008  4770              BX       lr
;;;68     
                          ENDP

00000a  0000              DCW      0x0000
                  |L6.12|
                          DCD      0x50000100

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

                  SYS_LockReg PROC
;;;74       */
;;;75     void SYS_LockReg(void)
000000  4901              LDR      r1,|L7.8|
;;;76     {
;;;77         SYS->RegLockAddr = 0;
000002  2000              MOVS     r0,#0
000004  6008              STR      r0,[r1,#0]
;;;78     }
000006  4770              BX       lr
;;;79     
                          ENDP

                  |L7.8|
                          DCD      0x50000100

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

                  SYS_ReadPDID PROC
;;;100      */
;;;101    uint32_t  SYS_ReadPDID(void)
000000  2005              MOVS     r0,#5
;;;102    {
;;;103        return SYS->PDID;
000002  0700              LSLS     r0,r0,#28
000004  6800              LDR      r0,[r0,#0]
;;;104    }
000006  4770              BX       lr
;;;105    
                          ENDP


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

                  SYS_ResetCPU PROC
;;;120      */
;;;121    void SYS_ResetCPU(void)
000000  2005              MOVS     r0,#5
;;;122    {
;;;123        SYS->IPRST_CTL1 |= SYS_IPRST_CTL1_CPU_RST_Msk;
000002  0700              LSLS     r0,r0,#28
000004  6881              LDR      r1,[r0,#8]
000006  2202              MOVS     r2,#2
000008  4311              ORRS     r1,r1,r2
00000a  6081              STR      r1,[r0,#8]
;;;124    }
00000c  4770              BX       lr
;;;125    
                          ENDP


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

                  SYS_ResetChip PROC
;;;110      */
;;;111    void SYS_ResetChip(void)
000000  2005              MOVS     r0,#5
;;;112    {
;;;113        SYS->IPRST_CTL1 |= SYS_IPRST_CTL1_CHIP_RST_Msk;
000002  0700              LSLS     r0,r0,#28
000004  6881              LDR      r1,[r0,#8]
000006  2201              MOVS     r2,#1
000008  4311              ORRS     r1,r1,r2
00000a  6081              STR      r1,[r0,#8]
;;;114    }
00000c  4770              BX       lr
;;;115    
                          ENDP


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

                  SYS_ResetModule PROC
;;;150      */
;;;151    void SYS_ResetModule(uint32_t u32ModuleIndex)
000000  2105              MOVS     r1,#5
;;;152    {
;;;153        *(volatile uint32_t *)((uint32_t)&(SYS->IPRST_CTL1) + (u32ModuleIndex>>24)) |= 1<<(u32ModuleIndex & 0x00ffffff);
000002  0e02              LSRS     r2,r0,#24
000004  0709              LSLS     r1,r1,#28
000006  1851              ADDS     r1,r2,r1
000008  688b              LDR      r3,[r1,#8]
00000a  2201              MOVS     r2,#1
00000c  4082              LSLS     r2,r2,r0
00000e  4313              ORRS     r3,r3,r2
000010  608b              STR      r3,[r1,#8]
;;;154        *(volatile uint32_t *)((uint32_t)&(SYS->IPRST_CTL1) + (u32ModuleIndex>>24)) &= ~(1<<(u32ModuleIndex & 0x00ffffff));
000012  6888              LDR      r0,[r1,#8]
000014  4390              BICS     r0,r0,r2
000016  6088              STR      r0,[r1,#8]
;;;155    }
000018  4770              BX       lr
;;;156    
                          ENDP


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

                  SYS_UnlockReg PROC
;;;86       */
;;;87     void SYS_UnlockReg(void)
000000  b510              PUSH     {r4,lr}
;;;88     {
;;;89         while(SYS->RegLockAddr != SYS_RegLockAddr_RegUnLock_Msk) {
;;;90             SYS->RegLockAddr = 0x59;
000002  2159              MOVS     r1,#0x59
;;;91             SYS->RegLockAddr = 0x16;
000004  2316              MOVS     r3,#0x16
000006  4805              LDR      r0,|L12.28|
;;;92             SYS->RegLockAddr = 0x88;
000008  2288              MOVS     r2,#0x88
00000a  e002              B        |L12.18|
                  |L12.12|
00000c  6001              STR      r1,[r0,#0]            ;90
00000e  6003              STR      r3,[r0,#0]            ;91
000010  6002              STR      r2,[r0,#0]
                  |L12.18|
000012  6804              LDR      r4,[r0,#0]            ;89
000014  2c01              CMP      r4,#1                 ;89
000016  d1f9              BNE      |L12.12|
;;;93         }
;;;94     }
000018  bd10              POP      {r4,pc}
;;;95     
                          ENDP

00001a  0000              DCW      0x0000
                  |L12.28|
                          DCD      0x50000100

;*** Start embedded assembler ***

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

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

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
