; generated by Component: ARM Compiler 5.04 update 1 (build 49) Tool: ArmCC [5040049]
; commandline ArmCC [--list --split_sections --debug -c --asm --interleave -o.\obj\gpio.o --asm_dir=.\lst\ --list_dir=.\lst\ --depend=.\obj\gpio.d --cpu=Cortex-M0 --apcs=interwork -I..\..\..\..\Library\CMSIS\Include -I..\..\..\..\Library\Device\Nuvoton\NM1120\Include -I..\..\..\..\Library\StdDriver\inc -I.\source -IC:\Keil_v5\ARM\RV31\INC -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\3.20.4\CMSIS\Include -D__MICROLIB --omf_browse=.\obj\gpio.crf ..\..\..\..\Library\StdDriver\src\gpio.c]
                          THUMB

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

                  GPIO_DisableInt PROC
;;;114     */
;;;115    void GPIO_DisableInt(GPIO_T *port, uint32_t u32Pin)
000000  0600              LSLS     r0,r0,#24
;;;116    {
;;;117        uint32_t u32Idx;
;;;118    
;;;119        u32Idx = GPIO_GET_OFFSET((uint32_t)port);
000002  0f80              LSRS     r0,r0,#30
;;;120    
;;;121        *s_pu32INTEN[u32Idx] &= ~((0x00010001UL) << u32Pin);
000004  0082              LSLS     r2,r0,#2
000006  4804              LDR      r0,|L1.24|
000008  5880              LDR      r0,[r0,r2]
00000a  6802              LDR      r2,[r0,#0]
00000c  4b03              LDR      r3,|L1.28|
00000e  408b              LSLS     r3,r3,r1
000010  439a              BICS     r2,r2,r3
000012  6002              STR      r2,[r0,#0]
;;;122    }
000014  4770              BX       lr
;;;123    
                          ENDP

000016  0000              DCW      0x0000
                  |L1.24|
                          DCD      ||.constdata||
                  |L1.28|
                          DCD      0x00010001

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

                  GPIO_EnableInt PROC
;;;81      */
;;;82     void GPIO_EnableInt(GPIO_T *port, uint32_t u32Pin, uint32_t u32IntAttribs)
000000  b530              PUSH     {r4,r5,lr}
;;;83     {
;;;84         uint32_t u32Value;
;;;85         uint32_t u32Idx;
;;;86         uint32_t u32Type;
;;;87     
;;;88         u32Idx = GPIO_GET_OFFSET((uint32_t)port);
000002  0600              LSLS     r0,r0,#24
000004  0f80              LSRS     r0,r0,#30
;;;89         u32Value = *s_pu32INTEN[u32Idx];
000006  4b0d              LDR      r3,|L2.60|
000008  0080              LSLS     r0,r0,#2
00000a  581b              LDR      r3,[r3,r0]
00000c  681c              LDR      r4,[r3,#0]
;;;90         *s_pu32INTEN[u32Idx] = (u32Value & ~(0x00010001UL << u32Pin)) | (u32IntAttribs << u32Pin);
00000e  4d0c              LDR      r5,|L2.64|
000010  408d              LSLS     r5,r5,r1
000012  43ac              BICS     r4,r4,r5
000014  4615              MOV      r5,r2
000016  408d              LSLS     r5,r5,r1
000018  432c              ORRS     r4,r4,r5
00001a  601c              STR      r4,[r3,#0]
;;;91     
;;;92         u32Value = *s_pu32INTTYPE[u32Idx];
00001c  4b07              LDR      r3,|L2.60|
00001e  3310              ADDS     r3,r3,#0x10
000020  581b              LDR      r3,[r3,r0]
000022  681c              LDR      r4,[r3,#0]
;;;93         if (u32IntAttribs & 0x01000000)
000024  01d0              LSLS     r0,r2,#7
000026  d501              BPL      |L2.44|
;;;94             u32Type = GPIO_INTTYPE_LEVEL;
000028  2001              MOVS     r0,#1
00002a  e000              B        |L2.46|
                  |L2.44|
;;;95         else
;;;96             u32Type = GPIO_INTTYPE_EDGE;
00002c  2000              MOVS     r0,#0
                  |L2.46|
;;;97         *s_pu32INTTYPE[u32Idx] = (u32Value & ~(0x00000001UL << u32Pin)) | (u32Type << u32Pin);
00002e  2201              MOVS     r2,#1
000030  408a              LSLS     r2,r2,r1
000032  4394              BICS     r4,r4,r2
000034  4088              LSLS     r0,r0,r1
000036  4304              ORRS     r4,r4,r0
000038  601c              STR      r4,[r3,#0]
;;;98     }
00003a  bd30              POP      {r4,r5,pc}
;;;99     
                          ENDP

                  |L2.60|
                          DCD      ||.constdata||
                  |L2.64|
                          DCD      0x00010001

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

                  GPIO_SetMode PROC
;;;48      */
;;;49     void GPIO_SetMode(GPIO_T *port, uint32_t u32PinMask, uint32_t u32Mode)
000000  b5f0              PUSH     {r4-r7,lr}
;;;50     {
;;;51         uint32_t i;
;;;52         uint32_t field_len = 2;
000002  2702              MOVS     r7,#2
;;;53     
;;;54         for (i=0; i<GPIO_PIN_MAX; i++) {
000004  2300              MOVS     r3,#0
                  |L3.6|
;;;55             if (u32PinMask & (1 << i)) {
000006  2401              MOVS     r4,#1
000008  409c              LSLS     r4,r4,r3
00000a  420c              TST      r4,r1
00000c  d00b              BEQ      |L3.38|
;;;56                 port->MODE |= (port->MODE & ~(0x3 << (i*field_len))) | (u32Mode << (i*field_len));
00000e  6805              LDR      r5,[r0,#0]
000010  461c              MOV      r4,r3
000012  437c              MULS     r4,r7,r4
000014  2603              MOVS     r6,#3
000016  40a6              LSLS     r6,r6,r4
000018  43b5              BICS     r5,r5,r6
00001a  4616              MOV      r6,r2
00001c  40a6              LSLS     r6,r6,r4
00001e  6804              LDR      r4,[r0,#0]
000020  4335              ORRS     r5,r5,r6
000022  4325              ORRS     r5,r5,r4
000024  6005              STR      r5,[r0,#0]
                  |L3.38|
000026  1c5b              ADDS     r3,r3,#1
000028  2b07              CMP      r3,#7                 ;54
00002a  d3ec              BCC      |L3.6|
;;;57             }
;;;58         }
;;;59     }
00002c  bdf0              POP      {r4-r7,pc}
;;;60     
                          ENDP


                          AREA ||.constdata||, DATA, READONLY, ALIGN=2

                  s_pu32INTEN
                          DCD      0x5000401c
                          DCD      0x5000405c
                          DCD      0x5000409c
                          DCD      0x500040dc
                  s_pu32INTTYPE
                          DCD      0x50004018
                          DCD      0x50004058
                          DCD      0x50004098
                          DCD      0x500040d8

;*** Start embedded assembler ***

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

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

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
