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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? startup.s

?? SMDK2440 s3c2440 WINCE 5.00 bsp 編譯通過
?? S
字號(hào):
;
;  Copyright (c) Microsoft Corporation.  All rights reserved.
;
;
;  Use of this source code is subject to the terms of the Microsoft end-user
;  license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
;  If you did not accept the terms of the EULA, you are not authorized to use
;  this source code. For a copy of the EULA, please see the LICENSE.RTF on your
;  install media.
;
;------------------------------------------------------------------------------
;
;   File:  startup.s
;
;   Kernel startup routine for Samsung SMDK2440A board. Hardware is
;   initialized in boot loader - so there isn't much code at all.
;
;------------------------------------------------------------------------------

        INCLUDE kxarm.h
		INCLUDE s3c2440a.inc

		IMPORT  OALClearUTLB
		IMPORT  OALFlushICache
		IMPORT  OALFlushDCache


vGPIOBASE	EQU	0xb1600000	;Port A control
oGPFCON		EQU	0x50            ;Port F control
oGPFDAT		EQU 0x54
oGSTATUS3	EQU	0xb8            ;Saved data0(32-bit) before entering POWER_OFF mode 
oGSTATUS4	EQU	0xbc            ;Saved data0(32-bit) before entering POWER_OFF mode 
vINTBASE	EQU	0xb0a00000	;Interrupt request status
oSRCPND		EQU	0x00	        ;Interrupt request status
oINTMSK		EQU	0x08	        ;Interrupt mask control
oINTPND		EQU	0x10	        ;Interrupt request status

vMISCCR		EQU	0xb1600080	;Miscellaneous control
vCLKCON		EQU	0xb0c0000c	;Clock generator control
vREFRESH	EQU	0xb0800024	;DRAM/SDRAM refresh


; Data Cache Characteristics.
;
DCACHE_LINES_PER_SET_BITS       EQU     6
DCACHE_LINES_PER_SET            EQU     64
DCACHE_NUM_SETS                 EQU     8
DCACHE_SET_INDEX_BIT            EQU     (32 - DCACHE_LINES_PER_SET_BITS)
DCACHE_LINE_SIZE                EQU     32



SLEEPDATA_BASE_VIRTUAL          EQU	0xAC028000		; keep in sync w/ config.bib
SLEEPDATA_BASE_PHYSICAL         EQU	0x30028000

SleepState_Data_Start		EQU     (0)

SleepState_WakeAddr    		EQU     (SleepState_Data_Start		    )
SleepState_MMUCTL           EQU     (SleepState_WakeAddr    + WORD_SIZE )
SleepState_MMUTTB       	EQU     (SleepState_MMUCTL  	+ WORD_SIZE )
SleepState_MMUDOMAIN    	EQU     (SleepState_MMUTTB  	+ WORD_SIZE )
SleepState_SVC_SP       	EQU     (SleepState_MMUDOMAIN   + WORD_SIZE )
SleepState_SVC_SPSR     	EQU     (SleepState_SVC_SP  	+ WORD_SIZE )
SleepState_FIQ_SPSR     	EQU     (SleepState_SVC_SPSR    + WORD_SIZE )
SleepState_FIQ_R8       	EQU     (SleepState_FIQ_SPSR    + WORD_SIZE )
SleepState_FIQ_R9       	EQU     (SleepState_FIQ_R8  	+ WORD_SIZE )
SleepState_FIQ_R10      	EQU     (SleepState_FIQ_R9  	+ WORD_SIZE )
SleepState_FIQ_R11      	EQU     (SleepState_FIQ_R10 	+ WORD_SIZE )
SleepState_FIQ_R12      	EQU     (SleepState_FIQ_R11 	+ WORD_SIZE )
SleepState_FIQ_SP       	EQU     (SleepState_FIQ_R12 	+ WORD_SIZE )
SleepState_FIQ_LR       	EQU     (SleepState_FIQ_SP  	+ WORD_SIZE )
SleepState_ABT_SPSR     	EQU     (SleepState_FIQ_LR  	+ WORD_SIZE )
SleepState_ABT_SP       	EQU     (SleepState_ABT_SPSR    + WORD_SIZE )
SleepState_ABT_LR       	EQU     (SleepState_ABT_SP  	+ WORD_SIZE )
SleepState_IRQ_SPSR     	EQU     (SleepState_ABT_LR  	+ WORD_SIZE )
SleepState_IRQ_SP       	EQU     (SleepState_IRQ_SPSR    + WORD_SIZE )
SleepState_IRQ_LR       	EQU     (SleepState_IRQ_SP  	+ WORD_SIZE )
SleepState_UND_SPSR     	EQU     (SleepState_IRQ_LR  	+ WORD_SIZE )
SleepState_UND_SP       	EQU     (SleepState_UND_SPSR    + WORD_SIZE )
SleepState_UND_LR       	EQU     (SleepState_UND_SP  	+ WORD_SIZE )
SleepState_SYS_SP       	EQU     (SleepState_UND_LR  	+ WORD_SIZE )
SleepState_SYS_LR       	EQU     (SleepState_SYS_SP  	+ WORD_SIZE )

SleepState_Data_End     	EQU     (SleepState_SYS_LR	+ WORD_SIZE )

SLEEPDATA_SIZE		    	EQU     ((SleepState_Data_End - SleepState_Data_Start) / 4)

        IMPORT  KernelStart

        TEXTAREA
        
        ; Include memory configuration file with g_oalAddressTable

        INCLUDE oemaddrtab_cfg.inc
 
        LEAF_ENTRY StartUp

        ; Compute the OEMAddressTable's physical address and 
        ; load it into r0. KernelStart expects r0 to contain
        ; the physical address of this table. The MMU isn't 
        ; turned on until well into KernelStart.  

    ldr	r0, =WTCON       ; disable the watchdog timer.
    ldr	r1, =0x0         
    str	r1, [r0]

    ldr	r0, =INTMSK      ; mask all first-level interrupts.
    ldr	r1, =0xffffffff
    str	r1, [r0]

    ldr	r0, =INTSUBMSK   ; mask all second-level interrupts.
    ldr	r1, =0x7fff
    str	r1, [r0]

    ; CLKDIVN
    ldr r0,=CLKDIVN
    ldr r1,=0x7     ; 0x0 = 1:1:1  ,  0x1 = 1:1:2	, 0x2 = 1:2:2  ,  0x3 = 1:2:4,  0x4 = 1:4:4,  0x5 = 1:4:8, 0x6 = 1:3:3, 0x7 = 1:3:6
    str r1,[r0]

    ; MMU_SetAsyncBusMode FCLK:HCLK= 1:2
    ands r1, r1, #0x2
    beq %F5
    mrc p15,0,r0,c1,c0,0
    orr r0,r0,#R1_nF:OR:R1_iA
    mcr p15,0,r0,c1,c0,0
5
    
	; TODO: to reduce PLL lock time, adjust the LOCKTIME register. 
    ldr	r0, =LOCKTIME
    ldr	r1, =0xffffff
    str	r1, [r0]
    
	ldr     r0, = UPLLCON
	ldr     r1, = ((0x3c << 12) + (0x4 << 4) + 0x2)  
	str     r1, [r0]
	
	nop
	nop
	nop
	nop
	nop
	nop
	nop

	ldr		r0, = MPLLCON
	ldr     r1, = ((0x6e << 12) + (0x3 << 4) + 0x1)
	str		r1, [r0]

	mov     r0, #0x2000
1	
	subs    r0, r0, #1
	bne     %B1	
	
        add     r0, pc, #g_oalAddressTable - (. + 8)
        bl      KernelStart

        ENTRY_END 






	LEAF_ENTRY OALCPUPowerOff

;       1. Push SVC state onto our stack
	stmdb   sp!, {r4-r12}                   
	stmdb   sp!, {lr}

;       2. Save MMU & CPU Register to RAM
    ldr     r3, =SLEEPDATA_BASE_VIRTUAL     ; base of Sleep mode storage

	ldr     r2, =Awake_address              ; store Virtual return address
	str     r2, [r3], #4

	mrc     p15, 0, r2, c1, c0, 0           ; load r2 with MMU Control
	ldr     r0, =MMU_CTL_MASK               ; mask off the undefined bits
	bic     r2, r2, r0
	str     r2, [r3], #4                    ; store MMU Control data

	mrc     p15, 0, r2, c2, c0, 0           ; load r2 with TTB address.
	ldr     r0, =MMU_TTB_MASK               ; mask off the undefined bits
	bic     r2, r2, r0
	str     r2, [r3], #4                    ; store TTB address

	mrc     p15, 0, r2, c3, c0, 0           ; load r2 with domain access control.
	str     r2, [r3], #4                    ; store domain access control

	str     sp, [r3], #4                    ; store SVC stack pointer

	mrs     r2, spsr
	str     r2, [r3], #4                    ; store SVC status register

	mov     r1, #Mode_FIQ:OR:I_Bit:OR:F_Bit ; Enter FIQ mode, no interrupts
	msr     cpsr, r1
	mrs     r2, spsr
	stmia   r3!, {r2, r8-r12, sp, lr}       ; store the FIQ mode registers

	mov     r1, #Mode_ABT:OR:I_Bit:OR:F_Bit ; Enter ABT mode, no interrupts
	msr     cpsr, r1
	mrs		r0, spsr
	stmia   r3!, {r0, sp, lr}               ; store the ABT mode Registers

	mov     r1, #Mode_IRQ:OR:I_Bit:OR:F_Bit ; Enter IRQ mode, no interrupts
	msr     cpsr, r1
	mrs     r0, spsr
	stmia   r3!, {r0, sp, lr}               ; store the IRQ Mode Registers

	mov     r1, #Mode_UND:OR:I_Bit:OR:F_Bit ; Enter UND mode, no interrupts
	msr     cpsr, r1
	mrs     r0, spsr
	stmia   r3!, {r0, sp, lr}               ; store the UND mode Registers

	mov     r1, #Mode_SYS:OR:I_Bit:OR:F_Bit ; Enter SYS mode, no interrupts
	msr     cpsr, r1
	stmia   r3!, {sp, lr}                   ; store the SYS mode Registers

	mov     r1, #Mode_SVC:OR:I_Bit:OR:F_Bit ; Back to SVC mode, no interrupts
	msr     cpsr, r1

;       3. do Checksum on the Sleepdata
	ldr     r3, =SLEEPDATA_BASE_VIRTUAL	; get pointer to SLEEPDATA
	ldr     r2, =0x0
	ldr     r0, =(SLEEPDATA_SIZE-1)		; get size of data structure (in words)
30
	ldr     r1, [r3], #4
	and     r1, r1, #0x1
	mov     r1, r1, ROR #31
	add     r2, r2, r1
	subs    r0, r0, #1
	bne     %b30

	ldr     r0, =vGPIOBASE
	;;;add		r2, r2, #1				; test checksum of the Sleep data error
	str     r2, [r0, #oGSTATUS3]		; Store in Power Manager Scratch pad register

	ldr     r0, =vGPIOBASE
	ldr     r1, =0x550a
	str     r1, [r0, #oGPFCON]
	
	ldr		r1, =0x30
	str		r1, [r0, #oGPFDAT]	

;       4. Interrupt Disable 
    ldr     r0, =vINTBASE
    mvn     r2, #0
	str     r2, [r0, #oINTMSK]
	str     r2, [r0, #oSRCPND]
	str     r2, [r0, #oINTPND]

;;       5. Cache Flush
	bl		OALClearUTLB
	bl		OALFlushICache
	ldr     r0, = (DCACHE_LINES_PER_SET - 1)    
	ldr     r1, = (DCACHE_NUM_SETS - 1)    
	ldr     r2, = DCACHE_SET_INDEX_BIT    
	ldr     r3, = DCACHE_LINE_SIZE     
	bl		OALFlushDCache

;       6. Setting Wakeup External Interrupt(EINT0,1,2) Mode
	ldr     r0, =vGPIOBASE

	ldr     r1, =0x550a
	str     r1, [r0, #oGPFCON]

;	ldr     r1, =0x55550100
;	str     r1, [r0, #oGPGCON]

;       7. Go to Power-Off Mode
	ldr 	r0, =vMISCCR			; hit the TLB
	ldr		r0, [r0]
	ldr 	r0, =vCLKCON
	ldr		r0, [r0]

	ldr     r0, =vREFRESH		
	ldr     r1, [r0]		; r1=rREFRESH	
	orr     r1, r1, #(1 << 22)

	ldr 	r2, =vMISCCR
	ldr		r3, [r2]
	orr		r3, r3, #(3<<17)        ; Make sure that SCLK0:SCLK->0, SCLK1:SCLK->0, SCKE=L during boot-up 
	bic		r3, r3, #(7<<20)
	orr		r3, r3, #(6<<20)

	ldr     r4, =vCLKCON
	ldr     r5, =0x1ffff8            ; Power Off Mode

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Sometimes it is not working in cache mode. So I modify to jump to ROM area.
;
;;;	ldr		r6, =0x92000000		; make address to 0x9200 0020
;;;	add		r6, r6, #0x20		; 
;;;	mov     pc, r6				; jump to Power off code in ROM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

	b       SelfRefreshAndPowerOff

	ALIGN   32                      ; for I-Cache Line(32Byte, 8 Word)

SelfRefreshAndPowerOff		; run with Instruction Cache's code
	str     r1, [r0]		; Enable SDRAM self-refresh
	str		r3, [r2]		; MISCCR Setting
	str     r5, [r4]		; Power Off !!
	b       .

;;;	LTORG

; This point is called from EBOOT's startup code(MMU is enabled)
;       in this routine, left information(REGs, INTMSK, INTSUBMSK ...)

Awake_address

;       1. Recover CPU Registers

	ldr     r3, =SLEEPDATA_BASE_VIRTUAL		; Sleep mode information data structure
	add     r2, r3, #SleepState_FIQ_SPSR
	mov     r1, #Mode_FIQ:OR:I_Bit:OR:F_Bit		; Enter FIQ mode, no interrupts - also FIQ
	msr     cpsr, r1
	ldr     r0,  [r2], #4
	msr     spsr, r0
	ldr     r8,  [r2], #4
	ldr     r9,  [r2], #4
	ldr     r10, [r2], #4
	ldr     r11, [r2], #4
	ldr     r12, [r2], #4
	ldr     sp,  [r2], #4
	ldr     lr,  [r2], #4

	mov     r1, #Mode_ABT:OR:I_Bit			; Enter ABT mode, no interrupts
	msr     cpsr, r1
	ldr     r0, [r2], #4
	msr     spsr, r0
	ldr     sp, [r2], #4
	ldr     lr, [r2], #4

	mov     r1, #Mode_IRQ:OR:I_Bit			; Enter IRQ mode, no interrupts
	msr     cpsr, r1
	ldr     r0, [r2], #4
	msr     spsr, r0
	ldr     sp, [r2], #4
	ldr     lr, [r2], #4

	mov     r1, #Mode_UND:OR:I_Bit			; Enter UND mode, no interrupts
	msr     cpsr, r1
	ldr     r0, [r2], #4
	msr     spsr, r0
	ldr     sp, [r2], #4
	ldr     lr, [r2], #4

	mov     r1, #Mode_SYS:OR:I_Bit			; Enter SYS mode, no interrupts
	msr     cpsr, r1
	ldr     sp, [r2], #4
	ldr     lr, [r2]

	mov     r1, #Mode_SVC:OR:I_Bit					; Enter SVC mode, no interrupts - FIQ is available
	msr     cpsr, r1
	ldr     r0, [r3, #SleepState_SVC_SPSR]
	msr     spsr, r0

;       2. Recover Last mode's REG's, & go back to caller of OALCPUPowerOff()

	ldr     sp, [r3, #SleepState_SVC_SP]
	ldr     lr, [sp], #4
	ldmia   sp!, {r4-r12}
	mov     pc, lr                          ; and now back to our sponsors


        ENTRY_END 


        END

;------------------------------------------------------------------------------


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区麻豆国产| 日韩1区2区3区| 欧美经典三级视频一区二区三区| 午夜精品福利久久久| 亚洲嫩草精品久久| 国产精品久久久久婷婷二区次| 日韩欧美专区在线| 欧美老女人在线| 欧洲精品视频在线观看| 91麻豆免费视频| a在线播放不卡| 成人丝袜18视频在线观看| 韩国精品久久久| 麻豆精品久久久| 久久激五月天综合精品| 日韩国产成人精品| 日韩成人一级片| 亚瑟在线精品视频| 日产国产高清一区二区三区 | 在线欧美日韩国产| 欧美中文字幕一区| 欧美日本在线视频| 日韩亚洲欧美成人一区| 日韩午夜在线播放| 欧美精品一区二区蜜臀亚洲| 欧美成人精品福利| 久久久美女毛片| 国产午夜精品一区二区三区视频| 国产夜色精品一区二区av| 日本一区二区三级电影在线观看 | 精品视频在线视频| 亚洲图片自拍偷拍| 国产精品色眯眯| 日韩精品一卡二卡三卡四卡无卡| 国产九色sp调教91| 91亚洲精品久久久蜜桃| 91搞黄在线观看| 色88888久久久久久影院野外| 日本高清成人免费播放| 欧美中文字幕不卡| 精品视频在线看| 91精品国产全国免费观看| 在线电影院国产精品| 欧美精品一区二区蜜臀亚洲| 欧美国产日韩一二三区| 亚洲一区成人在线| 国产成人精品免费网站| 91啪在线观看| 久久亚洲精品国产精品紫薇| 亚洲国产视频一区二区| 成人va在线观看| 日韩美女在线视频 | 国产精品天美传媒| 亚洲一二三四在线| 福利一区在线观看| 在线电影国产精品| 亚洲女性喷水在线观看一区| 国产一区二区三区高清播放| 欧美日韩一区二区三区四区| 国产一区二区在线观看视频| 成人高清视频在线观看| 欧美电视剧在线看免费| 精品一区二区三区香蕉蜜桃 | 日韩欧美一级二级| 亚洲电影欧美电影有声小说| 91丝袜美女网| 国产精品福利一区| 国产成人精品综合在线观看| 日韩一区二区在线观看视频| 亚洲香蕉伊在人在线观| 一本一本大道香蕉久在线精品| 国产性做久久久久久| 韩国成人精品a∨在线观看| 欧美日韩一区国产| 亚洲一区二区四区蜜桃| 在线精品视频小说1| 亚洲午夜久久久久久久久久久| 国产乱码精品一区二区三区忘忧草| 欧美精品一级二级三级| 午夜精彩视频在线观看不卡| 欧美日韩激情一区二区三区| 无吗不卡中文字幕| 欧美日韩国产大片| 日本欧美一区二区在线观看| 欧美欧美欧美欧美首页| 日韩国产成人精品| 久久久美女艺术照精彩视频福利播放| 精东粉嫩av免费一区二区三区| 日韩欧美的一区| 激情五月婷婷综合| 国产喷白浆一区二区三区| 成人妖精视频yjsp地址| 最新日韩在线视频| 欧美在线观看一二区| 日韩成人av影视| 国产日韩欧美a| 欧洲视频一区二区| 成人午夜电影小说| 日韩精品一级中文字幕精品视频免费观看 | 日韩在线播放一区二区| 精品久久久久久综合日本欧美| 国产999精品久久久久久| 亚洲欧洲精品一区二区精品久久久| 色狠狠色狠狠综合| 美日韩一区二区| ●精品国产综合乱码久久久久 | 波多野结衣亚洲一区| 亚洲成人资源网| 欧美国产在线观看| 欧美日韩小视频| 国产激情一区二区三区| 婷婷中文字幕综合| 中国色在线观看另类| 欧美喷潮久久久xxxxx| 成人污污视频在线观看| 日本女人一区二区三区| 中文字幕亚洲电影| 2019国产精品| 欧美日产在线观看| 色综合色综合色综合| 韩国女主播成人在线| 亚洲午夜在线电影| 国产亚洲精品资源在线26u| 在线播放日韩导航| 91久久精品国产91性色tv| 国产精品资源在线| 毛片一区二区三区| 亚洲一区二区在线观看视频| 中文字幕av一区二区三区高 | 久久国产福利国产秒拍| 偷拍日韩校园综合在线| 亚洲六月丁香色婷婷综合久久 | 日韩av在线播放中文字幕| 亚洲制服欧美中文字幕中文字幕| 国产欧美日韩另类视频免费观看| 7777精品久久久大香线蕉| 色综合久久久久综合99| 成人av在线影院| 国产一区二区在线免费观看| 久久av老司机精品网站导航| 香港成人在线视频| 日日夜夜一区二区| 日本欧美在线看| 久久电影网站中文字幕| 美国三级日本三级久久99| 麻豆一区二区在线| 久久精品国产色蜜蜜麻豆| 久久精品国产一区二区| 国内成+人亚洲+欧美+综合在线| 日韩av一二三| 另类专区欧美蜜桃臀第一页| 国产在线精品一区二区夜色| 国产麻豆视频精品| 成人av免费在线| 色欧美88888久久久久久影院| 在线精品视频一区二区| 欧美日韩成人综合在线一区二区 | 中文字幕视频一区二区三区久| 国产精品三级av在线播放| 亚洲欧美怡红院| 亚洲线精品一区二区三区八戒| 午夜一区二区三区视频| 免费观看一级欧美片| 国产精品性做久久久久久| 成人高清视频在线观看| 欧美性一区二区| 日韩午夜小视频| 国产精品色呦呦| 久久97超碰色| 91伊人久久大香线蕉| 3d成人动漫网站| 久久久99久久| 亚洲香肠在线观看| 国产寡妇亲子伦一区二区| 色女孩综合影院| 欧美成人精品二区三区99精品| 国产精品久久二区二区| 日韩电影在线一区二区| www.日韩av| 精品999在线播放| 亚洲综合一区二区三区| 国产精品一区在线观看你懂的| 欧美性生活影院| 日本一区二区三区久久久久久久久不 | 97精品超碰一区二区三区| 精品美女在线播放| 亚洲一级在线观看| www.亚洲免费av| 久久这里只有精品首页| 亚洲成a人片在线观看中文| 成人国产免费视频| 欧美精品一区男女天堂| 亚洲成av人片| 一本一本久久a久久精品综合麻豆| 久久午夜色播影院免费高清| 午夜精品久久久久久久久久| 91在线云播放| 国产精品久久久久久久久快鸭 | 亚欧色一区w666天堂| 色婷婷综合久久久久中文一区二区|