亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cstartup.s

?? 國外LPC2000系列的一些源程序,請大家快快下載
?? S
字號:
/*------------------------------------------------------------------------------
//*-         ATMEL Microcontroller Software Support  -  ROUSSET  -
//*------------------------------------------------------------------------------
//* The software is delivered "AS IS" without warranty or condition of any
//* kind, either express, implied or statutory. This includes without
//* limitation any warranty or condition with respect to merchantability or
//* fitness for any particular purpose, or against the infringements of
//* intellectual property rights of others.
//*-----------------------------------------------------------------------------
//*- File source          : Cstartup.s
//*- Object               : Generic CStartup for KEIL and GCC
//*- Compilation flag     : None
//*-
//*- 1.0 18/Oct/04 JPP    : Creation
//*- 1.1 21/Feb/05 JPP    : Set Interrupt
//*- 1.1 01/Apr/05 JPP    : save SPSR 
//*
//*- WinARM/arm-elf-gcc-version by Martin Thomas - Modifications:
//*  remapping-support, vector-location, stack-position and more...
//*-----------------------------------------------------------------------------*/

/* 
   20060902 (mth) : moved IRQ-Handler from section .vect* to 
                    .init/.fastrun
*/

/* check configuration-options and map to "assembler symbols": */

#ifdef ROM_RUN
.set RAM_MODE, 0
#ifdef VECTORS_IN_RAM
.set REMAP, 1
.set VECTREMAPPED, 1
#else
.set REMAP, 0
.set VECTREMAPPED, 0
#endif
#endif

#ifdef RAM_RUN
.set RAM_MODE, 1
.set REMAP, 1
.set VECTREMAPPED, 0
#endif


.if (RAM_MODE)
.print "RAM_MODE enabled"
.else
.print "ROM_MODE enabled"
.endif

.if (REMAP)
.print "remapping enabled"
.endif

.if (VECTREMAPPED)
.print "Vectors at start of RAM"
.else
.print "Vectors at start of Code"
.endif

	.equ AIC_IVR,         (256) 
	.equ AIC_FVR,         (260) 
	.equ AIC_EOICR,       (304)
	.equ AT91C_BASE_AIC,  (0xFFFFF000)

/*------------------------------------------------------------------------------
//*- Exception vectors 
//*--------------------
//*- These vectors can be read at address 0 or at RAM address
//*- They ABSOLUTELY requires to be in relative addresssing mode in order to
//*- guarantee a valid jump. For the moment, all are just looping.
//*- If an exception occurs before remap, this would result in an infinite loop.
//*- To ensure if a exeption occurs before start application to infinite loop.
//*------------------------------------------------------------------------------*/

.if (VECTREMAPPED)
.print "Vectors in section .vectmapped -> .data"
.section .vectmapped, "ax"
.else
.print "Vectors in section .vectorg -> .text"
.section .vectorg, "ax"
.endif

			LDR     PC,Reset_Addr     	/* 0x00 Reset handler */    
			LDR     PC,Undef_Addr		/* 0x04 Undefined Instruction */
			LDR     PC,SWI_Addr			/* 0x08 Software Interrupt */
			LDR     PC,PAbt_Addr		/* 0x0C Prefetch Abort */
			LDR     PC,DAbt_Addr		/* 0x10 Data Abort */
			NOP							/* 0x14 reserved  */
			LDR     PC,IRQ_Addr			/* 0x18 IRQ	 */
fiqvec:									/* 0x1c FIQ	*/
/*------------------------------------------------------------------------------
//*- Function             : FIQ_Handler_Entry
//*- Treatments           : FIQ Controller Interrupt Handler.
//*- Called Functions     : AIC_FVR[interrupt] 
//*------------------------------------------------------------------------------*/

FIQ_Handler_Entry:

/*- Switch in SVC/User Mode to allow User Stack access for C code 	*/
/* because the FIQ is not yet acknowledged*/

/*- Save and r0 in FIQ_Register */
            mov         r9,r0
            ldr         r0 , [r8, #AIC_FVR]
            msr         CPSR_c,#I_BIT | F_BIT | ARM_MODE_SVC

/*- Save scratch/used registers and LR in User Stack */
            stmfd       sp!, { r1-r3, r12, lr}

/*- Branch to the routine pointed by the AIC_FVR */
            mov         r14, pc
            bx          r0

/*- Restore scratch/used registers and LR from User Stack */
            ldmia       sp!, { r1-r3, r12, lr}

/*- Leave Interrupts disabled and switch back in FIQ mode */
            msr         CPSR_c, #I_BIT | F_BIT | ARM_MODE_FIQ

/*- Restore the R0 ARM_MODE_SVC register */
            mov         r0,r9

/*- Restore the Program Counter using the LR_fiq directly in the PC */
            subs        pc,lr,#4

/* end of fiqhandler */

Reset_Addr:       .word     InitReset
Undef_Addr:       .word     Undef_Handler
/* SWI_Addr:         .word     SWI_Handler */
SWI_Addr:         .word     SoftwareInterruptASM      /* in swi_handler.S */
PAbt_Addr:        .word     PAbt_Handler
DAbt_Addr:        .word     DAbt_Handler
IRQ_Addr:         .word     IRQ_Handler_Entry
  
Undef_Handler:  B       Undef_Handler
/* SWI_Handler:    B       SWI_Handler */
PAbt_Handler:   B       PAbt_Handler
DAbt_Handler:   B       DAbt_Handler


        .arm
        .section .init, "ax"
        .global _startup
        .func   _startup
_startup:
reset: 

.if (VECTREMAPPED)
/* mthomas: Dummy used during startup */
				LDR PC,=Reset_Addr_F
				NOP
				NOP
				NOP
				NOP
				NOP /*.word 0xdeadbeef*/ /* NOP */  /* Reserved Address */
				NOP
				NOP
Reset_Addr_F:       .word     InitReset
.endif

.RAM_TOP:
	.word	__TOP_STACK 

InitReset:

/*------------------------------------------------------------------------------
/*- Remapping
/*------------------------------------------------------------------------------*/
.if (VECTREMAPPED)
		.print "RCR setting for remapping enabled"
		.equ    MC_BASE,0xFFFFFF00  /* MC Base Address */
		.equ    MC_RCR, 0x00        /* MC_RCR Offset */
		

		/* store first word in RAM into r4 */
		ldr r0,=__FIRST_IN_RAM
		ldr r4,[r0]
		/* load value at address 0 into R2 */
		ldr r1,=0x00000000
		ldr r2,[r1]	
		/* xor value from address 0 (flip all bits), store in R3 */
		ldr r3,=0xffffffff
		eor r3, r2, r3
		/* write xored value to first word in RAM 
		if already remapped this will also change
		the value at 0 */
		str r3,[r0]
		/* load from address 0 again into R3 */
		ldr r3,[r1]
		/* restore first value in RAM */
		str r4,[r0]
		
		/* compare */
		cmp r3, r2
		bne already_remapped
	
		/* if both values have been equal the change of the
		RAM-value had no effect on the value at 0x00000000 
		so we are not remapping yet -> remap now: */
		LDR     R0, =MC_BASE
		MOV     R1, #1
		STR     R1, [R0, #MC_RCR]	
		
already_remapped:
.endif


/*------------------------------------------------------------------------------
/*- Low level Init (PMC, AIC, ? ....) by C function AT91F_LowLevelInit
/*------------------------------------------------------------------------------*/
            .extern   AT91F_LowLevelInit
/*- minumum C initialization */
/*- call  AT91F_LowLevelInit( void) */

            ldr     r13,.RAM_TOP            /* temporary stack in internal RAM (**) */
/*--Call Low level init function in ABSOLUTE through the Interworking	*/
            ldr     r0,=AT91F_LowLevelInit
            mov     lr, pc
            bx      r0
/*------------------------------------------------------------------------------
//*- Stack Sizes Definition
//*------------------------
//*- Interrupt Stack requires 2 words x 8 priority level x 4 bytes when using
//*- the vectoring. This assume that the IRQ management.
//*- The Interrupt Stack must be adjusted depending on the interrupt handlers.
//*- Fast Interrupt not requires stack If in your application it required you must
//*- be definehere.
//*- The System stack size is not defined and is limited by the free internal
//*- SRAM.
//*------------------------------------------------------------------------------*/

/*------------------------------------------------------------------------------
//*- Top of Stack Definition
//*-------------------------
//*- Interrupt and Supervisor Stack are located at the top of internal memory in 
//*- order to speed the exception handling context saving and restoring.
//*- ARM_MODE_SVC (Application, C) Stack is located at the top of the external memory.
//*------------------------------------------------------------------------------*/

          .EQU		IRQ_STACK_SIZE,    (3*8*4)
          .EQU		ARM_MODE_FIQ,       0x11
          .EQU		ARM_MODE_IRQ,       0x12
          .EQU		ARM_MODE_SVC,       0x13

          .EQU		I_BIT,              0x80
          .EQU		F_BIT,              0x40

/*------------------------------------------------------------------------------
//*- Setup the stack for each mode
//*-------------------------------*/
                mov     r0,r13 /* see (**) */

/*- Set up Fast Interrupt Mode and set FIQ Mode Stack*/
                msr     CPSR_c, #ARM_MODE_FIQ | I_BIT | F_BIT
/*- Init the FIQ register*/
                ldr     r8, =AT91C_BASE_AIC

/*- Set up Interrupt Mode and set IRQ Mode Stack*/
                msr     CPSR_c, #ARM_MODE_IRQ | I_BIT | F_BIT
                mov     r13, r0                     /* Init stack IRQ */
                sub     r0, r0, #IRQ_STACK_SIZE

/*- Set up Supervisor Mode and set Supervisor Mode Stack*/
				/* start with INT and FIQ enabled */
				msr     CPSR_c, #ARM_MODE_SVC 

//				/* start with INT and FIQ disabled */
//				msr     CPSR_c, #ARM_MODE_SVC | I_BIT | F_BIT 

				mov     r13, r0                     /* Init stack Sup */


/*- Enable interrupt & Set up Supervisor Mode and set Supervisor Mode Stack*/

/* Relocate .data section (Copy from ROM to RAM) */
                LDR     R1, =_etext
                LDR     R2, =_data
                LDR     R3, =_edata
LoopRel:        CMP     R2, R3
                LDRLO   R0, [R1], #4
                STRLO   R0, [R2], #4
                BLO     LoopRel

/* Clear .bss section (Zero init) */
                MOV     R0, #0
                LDR     R1, =__bss_start__
                LDR     R2, =__bss_end__
LoopZI:         CMP     R1, R2
                STRLO   R0, [R1], #4
                BLO     LoopZI


/* call C++ constructors of global objects */
		LDR 	r0, =__ctors_start__
		LDR 	r1, =__ctors_end__
ctor_loop:
		CMP 	r0, r1
		BEQ 	ctor_end
		LDR 	r2, [r0], #4
		STMFD 	sp!, {r0-r1}
		MOV 	lr, pc
/*		MOV 	pc, r2 */
		BX r2 /* mthomas 8/2006 */
		LDMFD 	sp!, {r0-r1}
		B 		ctor_loop
ctor_end:


/* call main() */
		ldr	lr,=exit
		ldr	r0,=main
		bx	r0

        .size   _startup, . - _startup
        .endfunc

/* "exit" dummy added by mthomas to avoid sbrk write read etc. needed
   by the newlib default "exit" */
        .global exit
        .func   exit
exit:
        b    .
        .size   exit, . - exit
        .endfunc




/*------------------------------------------------------------------------------
//*- Manage exception
//*---------------
//*- This module The exception must be ensure in ARM mode
//*------------------------------------------------------------------------------
//*------------------------------------------------------------------------------
//*- Function             : IRQ_Handler_Entry
//*- Treatments           : IRQ Controller Interrupt Handler.
//*- Called Functions     : AIC_IVR[interrupt] 
//*------------------------------------------------------------------------------*/

.if (VECTREMAPPED)
.print "IRQ_Handler_Entry in section .fastrun -> .data"
.section .fastrun, "ax"
.else
.print "IRQ_Handler_Entry in section .init -> .text"
.section .init, "ax"
.endif
        .global IRQ_Handler_Entry
        .func   IRQ_Handler_Entry

IRQ_Handler_Entry:

/*- Manage Exception Entry  */
/*- Adjust and save LR_irq in IRQ stack  */
            sub         lr, lr, #4
            stmfd       sp!, {lr}

/*- Save SPSR need to be saved for nested interrupt */
            mrs         r14, SPSR
            stmfd       sp!, {r14}

/*- Save and r0 in IRQ stack  */
            stmfd       sp!, {r0}

/*- Write in the IVR to support Protect Mode  */
/*- No effect in Normal Mode  */
/*- De-assert the NIRQ and clear the source in Protect Mode */
            ldr         r14, =AT91C_BASE_AIC
            ldr         r0 , [r14, #AIC_IVR]
            str         r14, [r14, #AIC_IVR]

/*- Enable Interrupt and Switch in Supervisor Mode */
            msr         CPSR_c, #ARM_MODE_SVC

/*- Save scratch/used registers and LR in User Stack */
            stmfd       sp!, { r1-r3, r12, r14}

/*- Branch to the routine pointed by the AIC_IVR  */
            mov         r14, pc
            bx          r0
/*- Restore scratch/used registers and LR from User Stack*/
            ldmia       sp!, { r1-r3, r12, r14}

/*- Disable Interrupt and switch back in IRQ mode */
            msr         CPSR_c, #I_BIT | ARM_MODE_IRQ

/*- Mark the End of Interrupt on the AIC */
            ldr         r14, =AT91C_BASE_AIC
            str         r14, [r14, #AIC_EOICR]

/*- Restore SPSR_irq and r0 from IRQ stack */
            ldmia       sp!, {r0}

/*- Restore SPSR_irq and r0 from IRQ stack */
            ldmia       sp!, {r14}
            msr         SPSR_cxsf, r14

/*- Restore adjusted  LR_irq from IRQ stack directly in the PC */
            ldmia       sp!, {pc}^

        .size   IRQ_Handler_Entry, . - IRQ_Handler_Entry
        .endfunc


/*---------------------------------------------------------------
//* ?EXEPTION_VECTOR
//* This module is only linked if needed for closing files.
//*---------------------------------------------------------------*/
        .global AT91F_Default_FIQ_handler
        .func   AT91F_Default_FIQ_handler
AT91F_Default_FIQ_handler:
            b     AT91F_Default_FIQ_handler
        .size   AT91F_Default_FIQ_handler, . - AT91F_Default_FIQ_handler
        .endfunc

        .global AT91F_Default_IRQ_handler
        .func   AT91F_Default_IRQ_handler
AT91F_Default_IRQ_handler:
            b     AT91F_Default_IRQ_handler
        .size   AT91F_Default_IRQ_handler, . - AT91F_Default_IRQ_handler
        .endfunc

        .global AT91F_Spurious_handler
        .func   AT91F_Spurious_handler
AT91F_Spurious_handler:
            b     AT91F_Spurious_handler
        .size   AT91F_Spurious_handler, . - AT91F_Spurious_handler
        .endfunc

        .end

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品日韩一区二区三区| 日韩午夜电影av| 久久九九久久九九| 欧美午夜精品久久久久久孕妇 | 日韩一级二级三级精品视频| 成人免费毛片嘿嘿连载视频| 91精品国产综合久久蜜臀| 国产精品高清亚洲| 六月丁香婷婷久久| 在线成人av网站| 黄色资源网久久资源365| 精品三级在线看| 91麻豆国产精品久久| 日韩欧美色综合网站| 亚洲第一精品在线| 欧美精品高清视频| 毛片一区二区三区| 337p日本欧洲亚洲大胆色噜噜| 男女男精品视频| 精品免费国产一区二区三区四区| 麻豆成人免费电影| 欧美激情综合五月色丁香小说| av在线免费不卡| 亚洲国产成人av网| 欧美va在线播放| 成人午夜激情在线| 亚洲成人免费影院| 久久精品亚洲国产奇米99| 99re成人精品视频| 久久国产精品区| 国产精品三级av| 日本福利一区二区| 激情综合五月婷婷| 国产精品久久久久久福利一牛影视| 欧美性受极品xxxx喷水| 国产精品亚洲一区二区三区妖精 | 国产老肥熟一区二区三区| 亚洲男人电影天堂| 国产精品视频免费看| 欧美一区二区人人喊爽| 一本大道综合伊人精品热热| 日韩不卡在线观看日韩不卡视频| 中文字幕va一区二区三区| www激情久久| 精品少妇一区二区三区| 欧美一卡二卡三卡四卡| 在线播放国产精品二区一二区四区| 国产一区欧美一区| 久久av资源站| 国产麻豆日韩欧美久久| 粉嫩绯色av一区二区在线观看| 日韩高清中文字幕一区| 亚洲一区二区三区在线播放| 国产亚洲精品久| 欧美精品黑人性xxxx| 色婷婷综合激情| 97精品久久久午夜一区二区三区| 奇米在线7777在线精品| 亚洲精品成a人| 无吗不卡中文字幕| 久草热8精品视频在线观看| 不卡一区二区中文字幕| 激情六月婷婷久久| 韩国精品免费视频| 国产精品自产自拍| 成人动漫精品一区二区| 欧美视频中文字幕| 日韩精品中文字幕一区| 26uuu亚洲婷婷狠狠天堂| 日韩欧美一区二区三区在线| 久久久99精品久久| 一区二区三区中文在线| 久久99久久精品| 色一情一乱一乱一91av| 欧美四级电影在线观看| 欧美色综合天天久久综合精品| 在线成人免费视频| 日韩欧美国产一区在线观看| 国产日本欧洲亚洲| 无码av免费一区二区三区试看| 狠狠色综合播放一区二区| 日本丶国产丶欧美色综合| 欧美精品国产精品| 亚洲欧美另类在线| 岛国精品在线播放| 日本一区二区三区dvd视频在线| 亚洲国产欧美一区二区三区丁香婷| 久久66热偷产精品| 6080日韩午夜伦伦午夜伦| 亚洲美女在线一区| www.一区二区| 久久久国产精华| 看国产成人h片视频| 欧美日韩国产综合一区二区| 亚洲色图清纯唯美| 成人免费av在线| 亚洲国产精品成人久久综合一区| 久久99热国产| 欧美精品一区二区高清在线观看| 五月天视频一区| 欧美日韩精品电影| 午夜日韩在线观看| 日韩一二三区视频| 国产一区在线视频| 久久久天堂av| 国产91精品免费| 国产精品不卡视频| 国产白丝精品91爽爽久久 | 欧美在线制服丝袜| 香蕉久久夜色精品国产使用方法| 欧美乱熟臀69xxxxxx| 日韩精品一级中文字幕精品视频免费观看| 色综合久久99| 日本不卡中文字幕| 国产免费成人在线视频| 99re视频这里只有精品| 亚洲成av人**亚洲成av**| 久久久国产午夜精品| 欧洲生活片亚洲生活在线观看| 午夜欧美电影在线观看| 欧美日韩在线播放| 精品一区二区三区不卡| 亚洲三级免费观看| 日韩精品专区在线影院观看| 国产精品一区二区三区99| 亚洲免费在线播放| 日韩美女在线视频| 91麻豆免费在线观看| 久久成人免费日本黄色| 国产精品入口麻豆九色| 宅男噜噜噜66一区二区66| 国产suv精品一区二区6| 老色鬼精品视频在线观看播放| 亚洲欧洲精品一区二区三区| 日韩一区二区三区av| 色伊人久久综合中文字幕| 盗摄精品av一区二区三区| 精品一二线国产| 性做久久久久久久免费看| 国产精品日韩成人| 26uuu亚洲| 日韩欧美不卡在线观看视频| 欧美三级电影一区| 色欧美乱欧美15图片| 波多野结衣一区二区三区| 国产精品白丝av| 国产宾馆实践打屁股91| 国内精品久久久久影院一蜜桃| 伊人夜夜躁av伊人久久| 日本一区二区三级电影在线观看| 欧美一区日本一区韩国一区| 51精品国自产在线| 欧美日韩精品一区二区三区蜜桃| 99免费精品视频| 91国偷自产一区二区开放时间| 成人一区二区三区中文字幕| 国产精品白丝av| av不卡免费电影| 色欧美日韩亚洲| 欧美一区二区视频在线观看2022| 制服.丝袜.亚洲.另类.中文| 欧美一区二区三区四区久久| 91麻豆精品国产91久久久久| 日韩欧美123| 国产精品嫩草99a| 国产精品第一页第二页第三页| 久久精品免费在线观看| 国产午夜久久久久| 中文字幕一区二区三区不卡在线 | 成熟亚洲日本毛茸茸凸凹| 国产一区二区三区四区五区入口| 国产真实乱子伦精品视频| 精品午夜久久福利影院| 不卡av电影在线播放| 欧美日韩国产精品自在自线| 精品国产一区二区精华| 久久精品一区二区| 亚洲欧美日韩国产综合| 黄色日韩三级电影| 91.麻豆视频| 国产精品久久久久久亚洲毛片| 一区二区久久久久久| 成人av在线一区二区三区| 91精品国产欧美一区二区18| 亚洲天堂成人网| 国产成人免费视频网站 | 五月激情综合网| 91老师片黄在线观看| 2024国产精品| 蜜臀精品一区二区三区在线观看 | 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 亚洲亚洲精品在线观看| 波多野结衣在线aⅴ中文字幕不卡| 欧美一区二区视频在线观看2020 | 欧美精品亚洲一区二区在线播放| 日韩毛片在线免费观看| 五月激情六月综合| 色8久久精品久久久久久蜜| 国产精品日产欧美久久久久| 国产毛片精品视频|