⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cstartup.lst

📁 国外LPC2000系列的一些源程序,请大家快快下载
💻 LST
📖 第 1 页 / 共 2 页
字号:
 246              	          .EQU		ARM_MODE_IRQ,       0x12
 247              	          .EQU		ARM_MODE_SVC,       0x13
 248              	
 249              	          .EQU		I_BIT,              0x80
 250              	          .EQU		F_BIT,              0x40
 251              	
 252              	/*------------------------------------------------------------------------------
 253              	//*- Setup the stack for each mode
 254              	//*-------------------------------*/
 255 0070 0D00A0E1 	                mov     r0,r13 /* see (**) */
 256              	
 257              	/*- Set up Fast Interrupt Mode and set FIQ Mode Stack*/
 258 0074 D1F021E3 	                msr     CPSR_c, #ARM_MODE_FIQ | I_BIT | F_BIT
 259              	/*- Init the FIQ register*/
 260 0078 88809FE5 	                ldr     r8, =AT91C_BASE_AIC
 261              	
 262              	/*- Set up Interrupt Mode and set IRQ Mode Stack*/
 263 007c D2F021E3 	                msr     CPSR_c, #ARM_MODE_IRQ | I_BIT | F_BIT
 264 0080 00D0A0E1 	                mov     r13, r0                     /* Init stack IRQ */
 265 0084 600040E2 	                sub     r0, r0, #IRQ_STACK_SIZE
 266              	
 267              	/*- Set up Supervisor Mode and set Supervisor Mode Stack*/
 268              					/* start with INT and FIQ enabled */
 269 0088 13F021E3 					msr     CPSR_c, #ARM_MODE_SVC 
 270              	
 271              	//				/* start with INT and FIQ disabled */
 272              	//				msr     CPSR_c, #ARM_MODE_SVC | I_BIT | F_BIT 
 273              	
 274 008c 00D0A0E1 					mov     r13, r0                     /* Init stack Sup */
 275              	
 276              	
 277              	/*- Enable interrupt & Set up Supervisor Mode and set Supervisor Mode Stack*/
 278              	
 279              	/* Relocate .data section (Copy from ROM to RAM) */
 280 0090 74109FE5 	                LDR     R1, =_etext
 281 0094 74209FE5 	                LDR     R2, =_data
 282 0098 74309FE5 	                LDR     R3, =_edata
 283 009c 030052E1 	LoopRel:        CMP     R2, R3
 284 00a0 04009134 	                LDRLO   R0, [R1], #4
 285 00a4 04008234 	                STRLO   R0, [R2], #4
 286 00a8 FBFFFF3A 	                BLO     LoopRel
 287              	
 288              	/* Clear .bss section (Zero init) */
 289 00ac 0000A0E3 	                MOV     R0, #0
 290 00b0 60109FE5 	                LDR     R1, =__bss_start__
 291 00b4 60209FE5 	                LDR     R2, =__bss_end__
 292 00b8 020051E1 	LoopZI:         CMP     R1, R2
 293 00bc 04008134 	                STRLO   R0, [R1], #4
 294 00c0 FCFFFF3A 	                BLO     LoopZI
 295              	
 296              	
 297              	/* call C++ constructors of global objects */
 298 00c4 54009FE5 			LDR 	r0, =__ctors_start__
 299 00c8 54109FE5 			LDR 	r1, =__ctors_end__
 300              	ctor_loop:
 301 00cc 010050E1 			CMP 	r0, r1
 302 00d0 0500000A 			BEQ 	ctor_end
 303 00d4 042090E4 			LDR 	r2, [r0], #4
 304 00d8 03002DE9 			STMFD 	sp!, {r0-r1}
 305 00dc 0FE0A0E1 			MOV 	lr, pc
 306              	/*		MOV 	pc, r2 */
 307 00e0 12FF2FE1 			BX r2 /* mthomas 8/2006 */
 308 00e4 0300BDE8 			LDMFD 	sp!, {r0-r1}
 309 00e8 F7FFFFEA 			B 		ctor_loop
 310              	ctor_end:
 311              	
 312              	
 313              	/* call main() */
 314 00ec 34E09FE5 			ldr	lr,=exit
 315 00f0 34009FE5 			ldr	r0,=main
 316 00f4 10FF2FE1 			bx	r0
 317              	
 319              	        .endfunc
 320              	
 321              	/* "exit" dummy added by mthomas to avoid sbrk write read etc. needed
 322              	   by the newlib default "exit" */
 323              	        .global exit
 324              	        .func   exit
 325              	exit:
 326 00f8 FEFFFFEA 	        b    .
 328              	        .endfunc
 329              	
 330              	
 331              	
 332              	
 333              	/*------------------------------------------------------------------------------
 334              	//*- Manage exception
 335              	//*---------------
 336              	//*- This module The exception must be ensure in ARM mode
 337              	//*------------------------------------------------------------------------------
 338              	//*------------------------------------------------------------------------------
 339              	//*- Function             : IRQ_Handler_Entry
 340              	//*- Treatments           : IRQ Controller Interrupt Handler.
 341              	//*- Called Functions     : AIC_IVR[interrupt] 
 342              	//*------------------------------------------------------------------------------*/
 343              	
 344              	.if (VECTREMAPPED)
 345              	.print "IRQ_Handler_Entry in section .fastrun -> .data"
 346              	.section .fastrun, "ax"
 347              	.else
 348              	.print "IRQ_Handler_Entry in section .init -> .text"
 349              	.section .init, "ax"
 350              	.endif
 351              	        .global IRQ_Handler_Entry
 352              	        .func   IRQ_Handler_Entry
 353              	
 354              	IRQ_Handler_Entry:
 355              	
 356              	/*- Manage Exception Entry  */
 357              	/*- Adjust and save LR_irq in IRQ stack  */
 358 0000 04E04EE2 	            sub         lr, lr, #4
 359 0004 00402DE9 	            stmfd       sp!, {lr}
 360              	
 361              	/*- Save SPSR need to be saved for nested interrupt */
 362 0008 00E04FE1 	            mrs         r14, SPSR
 363 000c 00402DE9 	            stmfd       sp!, {r14}
 364              	
 365              	/*- Save and r0 in IRQ stack  */
 366 0010 01002DE9 	            stmfd       sp!, {r0}
 367              	
 368              	/*- Write in the IVR to support Protect Mode  */
 369              	/*- No effect in Normal Mode  */
 370              	/*- De-assert the NIRQ and clear the source in Protect Mode */
 371 0014 40E09FE5 	            ldr         r14, =AT91C_BASE_AIC
 372 0018 00019EE5 	            ldr         r0 , [r14, #AIC_IVR]
 373 001c 00E18EE5 	            str         r14, [r14, #AIC_IVR]
 374              	
 375              	/*- Enable Interrupt and Switch in Supervisor Mode */
 376 0020 13F021E3 	            msr         CPSR_c, #ARM_MODE_SVC
 377              	
 378              	/*- Save scratch/used registers and LR in User Stack */
 379 0024 0E502DE9 	            stmfd       sp!, { r1-r3, r12, r14}
 380              	
 381              	/*- Branch to the routine pointed by the AIC_IVR  */
 382 0028 0FE0A0E1 	            mov         r14, pc
 383 002c 10FF2FE1 	            bx          r0
 384              	/*- Restore scratch/used registers and LR from User Stack*/
 385 0030 0E50BDE8 	            ldmia       sp!, { r1-r3, r12, r14}
 386              	
 387              	/*- Disable Interrupt and switch back in IRQ mode */
 388 0034 92F021E3 	            msr         CPSR_c, #I_BIT | ARM_MODE_IRQ
 389              	
 390              	/*- Mark the End of Interrupt on the AIC */
 391 0038 1CE09FE5 	            ldr         r14, =AT91C_BASE_AIC
 392 003c 30E18EE5 	            str         r14, [r14, #AIC_EOICR]
 393              	
 394              	/*- Restore SPSR_irq and r0 from IRQ stack */
 395 0040 0100BDE8 	            ldmia       sp!, {r0}
 396              	
 397              	/*- Restore SPSR_irq and r0 from IRQ stack */
 398 0044 0040BDE8 	            ldmia       sp!, {r14}
 399 0048 0EF06FE1 	            msr         SPSR_cxsf, r14
 400              	
 401              	/*- Restore adjusted  LR_irq from IRQ stack directly in the PC */
 402 004c 0080FDE8 	            ldmia       sp!, {pc}^
 403              	
 405              	        .endfunc
 406              	
 407              	
 408              	/*---------------------------------------------------------------
 409              	//* ?EXEPTION_VECTOR
 410              	//* This module is only linked if needed for closing files.
 411              	//*---------------------------------------------------------------*/
 412              	        .global AT91F_Default_FIQ_handler
 413              	        .func   AT91F_Default_FIQ_handler
 414              	AT91F_Default_FIQ_handler:
 415 0050 FEFFFFEA 	            b     AT91F_Default_FIQ_handler
 417              	        .endfunc
 418              	
 419              	        .global AT91F_Default_IRQ_handler
 420              	        .func   AT91F_Default_IRQ_handler
 421              	AT91F_Default_IRQ_handler:
 422 0054 FEFFFFEA 	            b     AT91F_Default_IRQ_handler
 424              	        .endfunc
 425              	
 426              	        .global AT91F_Spurious_handler
 427              	        .func   AT91F_Spurious_handler
 428              	AT91F_Spurious_handler:
 429 0058 FEFFFFEA 	            b     AT91F_Spurious_handler
 431              	        .endfunc
 432              	
 433 005c 00F0FFFF 	        .end
DEFINED SYMBOLS
                            *ABS*:00000000 Compil/srcWinARM/Cstartup.S
Compil/srcWinARM/Cstartup.S:30     *ABS*:00000000 RAM_MODE
Compil/srcWinARM/Cstartup.S:32     *ABS*:00000001 REMAP
Compil/srcWinARM/Cstartup.S:33     *ABS*:00000001 VECTREMAPPED
Compil/srcWinARM/Cstartup.S:63     *ABS*:00000100 AIC_IVR
Compil/srcWinARM/Cstartup.S:64     *ABS*:00000104 AIC_FVR
Compil/srcWinARM/Cstartup.S:65     *ABS*:00000130 AIC_EOICR
Compil/srcWinARM/Cstartup.S:66     *ABS*:fffff000 AT91C_BASE_AIC
Compil/srcWinARM/Cstartup.S:86     .vectmapped:00000000 $a
Compil/srcWinARM/Cstartup.S:131    .vectmapped:00000044 Reset_Addr
Compil/srcWinARM/Cstartup.S:132    .vectmapped:00000048 Undef_Addr
Compil/srcWinARM/Cstartup.S:134    .vectmapped:0000004c SWI_Addr
Compil/srcWinARM/Cstartup.S:135    .vectmapped:00000050 PAbt_Addr
Compil/srcWinARM/Cstartup.S:136    .vectmapped:00000054 DAbt_Addr
Compil/srcWinARM/Cstartup.S:137    .vectmapped:00000058 IRQ_Addr
Compil/srcWinARM/Cstartup.S:93     .vectmapped:0000001c fiqvec
Compil/srcWinARM/Cstartup.S:100    .vectmapped:0000001c FIQ_Handler_Entry
                            *ABS*:00000080 I_BIT
                            *ABS*:00000040 F_BIT
                            *ABS*:00000013 ARM_MODE_SVC
                            *ABS*:00000011 ARM_MODE_FIQ
Compil/srcWinARM/Cstartup.S:131    .vectmapped:00000044 $d
Compil/srcWinARM/Cstartup.S:168    .init:00000028 InitReset
Compil/srcWinARM/Cstartup.S:139    .vectmapped:0000005c Undef_Handler
Compil/srcWinARM/Cstartup.S:141    .vectmapped:00000060 PAbt_Handler
Compil/srcWinARM/Cstartup.S:142    .vectmapped:00000064 DAbt_Handler
Compil/srcWinARM/Cstartup.S:354    .fastrun:00000000 IRQ_Handler_Entry
Compil/srcWinARM/Cstartup.S:139    .vectmapped:0000005c $a
Compil/srcWinARM/Cstartup.S:149    .init:00000000 _startup
Compil/srcWinARM/Cstartup.S:150    .init:00000000 reset
Compil/srcWinARM/Cstartup.S:154    .init:00000000 $a
Compil/srcWinARM/Cstartup.S:162    .init:00000020 Reset_Addr_F
Compil/srcWinARM/Cstartup.S:162    .init:00000020 $d
Compil/srcWinARM/Cstartup.S:165    .init:00000024 .RAM_TOP
Compil/srcWinARM/Cstartup.S:175    *ABS*:ffffff00 MC_BASE
Compil/srcWinARM/Cstartup.S:176    *ABS*:00000000 MC_RCR
Compil/srcWinARM/Cstartup.S:180    .init:00000028 $a
Compil/srcWinARM/Cstartup.S:208    .init:00000060 already_remapped
Compil/srcWinARM/Cstartup.S:244    *ABS*:00000060 IRQ_STACK_SIZE
Compil/srcWinARM/Cstartup.S:246    *ABS*:00000012 ARM_MODE_IRQ
Compil/srcWinARM/Cstartup.S:283    .init:0000009c LoopRel
Compil/srcWinARM/Cstartup.S:292    .init:000000b8 LoopZI
Compil/srcWinARM/Cstartup.S:300    .init:000000cc ctor_loop
Compil/srcWinARM/Cstartup.S:310    .init:000000ec ctor_end
Compil/srcWinARM/Cstartup.S:325    .init:000000f8 exit
Compil/srcWinARM/Cstartup.S:358    .fastrun:00000000 $a
Compil/srcWinARM/Cstartup.S:414    .fastrun:00000050 AT91F_Default_FIQ_handler
Compil/srcWinARM/Cstartup.S:421    .fastrun:00000054 AT91F_Default_IRQ_handler
Compil/srcWinARM/Cstartup.S:428    .fastrun:00000058 AT91F_Spurious_handler
Compil/srcWinARM/Cstartup.S:433    .fastrun:0000005c $d
Compil/srcWinARM/Cstartup.S:346    .init:000000fc $d

UNDEFINED SYMBOLS
SoftwareInterruptASM
__TOP_STACK
__FIRST_IN_RAM
AT91F_LowLevelInit
_etext
_data
_edata
__bss_start__
__bss_end__
__ctors_start__
__ctors_end__
main

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -