; generated by Component: ARM Compiler 5.06 update 6 (build 750) Tool: ArmCC [4d3637]
; 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 -Otime --diag_suppress=9931 -I..\..\..\..\Library\CMSIS\Include -I..\..\..\..\Library\Device\Nuvoton\M0A21\Include -I..\..\..\..\Library\StdDriver\inc -I..\ -IC:\Keil_v5\ARM\RV31\INC -IC:\Keil_v5\ARM\CMSIS\Include -D__MICROLIB -D__UVISION_VERSION=538 --omf_browse=.\obj\sys.crf ..\..\..\..\Library\StdDriver\src\sys.c]
                          THUMB

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

                  SYS_ClearResetSrc PROC
;;;39       */
;;;40     void SYS_ClearResetSrc(uint32_t u32Src)
000000  2101              MOVS     r1,#1
;;;41     {
;;;42         SYS->RSTSTS = u32Src;
000002  0789              LSLS     r1,r1,#30
000004  6048              STR      r0,[r1,#4]
;;;43     }
000006  4770              BX       lr
;;;44     
                          ENDP


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

                  SYS_DisableBOD PROC
;;;179      */
;;;180    void SYS_DisableBOD(void)
000000  2001              MOVS     r0,#1
;;;181    {
;;;182        SYS->BODCTL &= ~SYS_BODCTL_BODEN_Msk;
000002  0780              LSLS     r0,r0,#30
000004  6981              LDR      r1,[r0,#0x18]
000006  0849              LSRS     r1,r1,#1
000008  0049              LSLS     r1,r1,#1
00000a  6181              STR      r1,[r0,#0x18]
;;;183    }
00000c  4770              BX       lr
;;;184    
                          ENDP


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

                  SYS_EnableBOD PROC
;;;160      */
;;;161    void SYS_EnableBOD(int32_t i32Mode, uint32_t u32BODLevel)
000000  b410              PUSH     {r4}
;;;162    {
;;;163        /* Enable Brown-out Detector function */
;;;164        SYS->BODCTL |= SYS_BODCTL_BODEN_Msk;
000002  2201              MOVS     r2,#1
000004  0792              LSLS     r2,r2,#30
000006  6993              LDR      r3,[r2,#0x18]
000008  2401              MOVS     r4,#1
00000a  4323              ORRS     r3,r3,r4
00000c  6193              STR      r3,[r2,#0x18]
;;;165    
;;;166        /* Enable Brown-out interrupt or reset function */
;;;167        SYS->BODCTL = (SYS->BODCTL & ~SYS_BODCTL_BODRSTEN_Msk) | i32Mode;
00000e  6993              LDR      r3,[r2,#0x18]
000010  2408              MOVS     r4,#8
000012  43a3              BICS     r3,r3,r4
000014  4303              ORRS     r3,r3,r0
000016  6193              STR      r3,[r2,#0x18]
;;;168    
;;;169        /* Select Brown-out Detector threshold voltage */
;;;170        SYS->BODCTL = (SYS->BODCTL & ~SYS_BODCTL_BODVL_Msk) | u32BODLevel;
000018  6990              LDR      r0,[r2,#0x18]
00001a  2303              MOVS     r3,#3
00001c  041b              LSLS     r3,r3,#16
00001e  4398              BICS     r0,r0,r3
000020  4308              ORRS     r0,r0,r1
000022  6190              STR      r0,[r2,#0x18]
;;;171    }
000024  bc10              POP      {r4}
000026  4770              BX       lr
;;;172    
                          ENDP


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

                  SYS_GetBODStatus PROC
;;;51       */
;;;52     uint32_t SYS_GetBODStatus(void)
000000  2001              MOVS     r0,#1
;;;53     {
;;;54         return ((SYS->BODCTL & SYS_BODCTL_BODOUT_Msk) >> SYS_BODCTL_BODOUT_Pos);
000002  0780              LSLS     r0,r0,#30
000004  6980              LDR      r0,[r0,#0x18]
000006  0640              LSLS     r0,r0,#25
000008  0fc0              LSRS     r0,r0,#31
;;;55     }
00000a  4770              BX       lr
;;;56     
                          ENDP


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

                  SYS_GetResetSrc PROC
;;;62       */
;;;63     uint32_t SYS_GetResetSrc(void)
000000  2001              MOVS     r0,#1
;;;64     {
;;;65         return (SYS->RSTSTS);
000002  0780              LSLS     r0,r0,#30
000004  6840              LDR      r0,[r0,#4]
;;;66     }
000006  4770              BX       lr
;;;67     
                          ENDP


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

                  SYS_IsRegLocked PROC
;;;74       */
;;;75     uint32_t SYS_IsRegLocked(void)
000000  4802              LDR      r0,|L6.12|
;;;76     {
;;;77         return !(SYS->REGLCTL & 0x1);
000002  6800              LDR      r0,[r0,#0]
000004  07c0              LSLS     r0,r0,#31
000006  17c0              ASRS     r0,r0,#31
000008  1c40              ADDS     r0,r0,#1
;;;78     }
00000a  4770              BX       lr
;;;79     
                          ENDP

                  |L6.12|
                          DCD      0x40000100

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

                  SYS_ReadPDID PROC
;;;85       */
;;;86     uint32_t  SYS_ReadPDID(void)
000000  2001              MOVS     r0,#1
;;;87     {
;;;88         return SYS->PDID;
000002  0780              LSLS     r0,r0,#30
000004  6800              LDR      r0,[r0,#0]
;;;89     }
000006  4770              BX       lr
;;;90     
                          ENDP


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

                  SYS_ResetCPU PROC
;;;109      */
;;;110    void SYS_ResetCPU(void)
000000  2001              MOVS     r0,#1
;;;111    {
;;;112        SYS->IPRST0 |= SYS_IPRST0_CPURST_Msk;
000002  0780              LSLS     r0,r0,#30
000004  6881              LDR      r1,[r0,#8]
000006  2202              MOVS     r2,#2
000008  4311              ORRS     r1,r1,r2
00000a  6081              STR      r1,[r0,#8]
;;;113    }
00000c  4770              BX       lr
;;;114    
                          ENDP


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

                  SYS_ResetChip PROC
;;;97       */
;;;98     void SYS_ResetChip(void)
000000  2001              MOVS     r0,#1
;;;99     {
;;;100        SYS->IPRST0 |= SYS_IPRST0_CHIPRST_Msk;
000002  0780              LSLS     r0,r0,#30
000004  6881              LDR      r1,[r0,#8]
000006  2201              MOVS     r2,#1
000008  4311              ORRS     r1,r1,r2
00000a  6081              STR      r1,[r0,#8]
;;;101    }
00000c  4770              BX       lr
;;;102    
                          ENDP


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

                  SYS_ResetModule PROC
;;;137      */
;;;138    void SYS_ResetModule(uint32_t u32ModuleIndex)
000000  2101              MOVS     r1,#1
;;;139    {
;;;140        /* Generate reset signal to the corresponding module */
;;;141        *(volatile uint32_t *)((uint32_t)&SYS->IPRST0 + (u32ModuleIndex >> 24))  |= 1 << (u32ModuleIndex & 0x00ffffff);
000002  0e02              LSRS     r2,r0,#24
000004  0789              LSLS     r1,r1,#30
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]
;;;142    
;;;143        /* Release corresponding module from reset state */
;;;144        *(volatile uint32_t *)((uint32_t)&SYS->IPRST0 + (u32ModuleIndex >> 24))  &= ~(1 << (u32ModuleIndex & 0x00ffffff));
000012  6888              LDR      r0,[r1,#8]
000014  4390              BICS     r0,r0,r2
000016  6088              STR      r0,[r1,#8]
;;;145    }
000018  4770              BX       lr
;;;146    
                          ENDP


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

                  SYS_SetVRef PROC
;;;198      */
;;;199    void SYS_SetVRef(uint32_t u32VRefCTL)
000000  2101              MOVS     r1,#1
;;;200    {
;;;201        /* Set reference voltage */
;;;202        SYS->VREFCTL = (SYS->VREFCTL & (~SYS_VREFCTL_VREFCTL_Msk)) | (u32VRefCTL);
000002  0789              LSLS     r1,r1,#30
000004  6a8a              LDR      r2,[r1,#0x28]
000006  0912              LSRS     r2,r2,#4
000008  0112              LSLS     r2,r2,#4
00000a  4302              ORRS     r2,r2,r0
00000c  628a              STR      r2,[r1,#0x28]
;;;203    }
00000e  4770              BX       lr
;;;204    
                          ENDP


;*** Start embedded assembler ***

#line 1 "..\\..\\..\\..\\Library\\StdDriver\\src\\sys.c"
	AREA ||.rev16_text||, CODE
	THUMB
	EXPORT |__asm___5_sys_c_962b9fbe____REV16|
#line 464 "..\\..\\..\\..\\Library\\CMSIS\\Include\\cmsis_armcc.h"
|__asm___5_sys_c_962b9fbe____REV16| PROC
#line 465

 rev16 r0, r0
 bx lr
	ENDP
	AREA ||.revsh_text||, CODE
	THUMB
	EXPORT |__asm___5_sys_c_962b9fbe____REVSH|
#line 479
|__asm___5_sys_c_962b9fbe____REVSH| PROC
#line 480

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
