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

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

?? vectors.s

?? 基于ARM S3C44B0X的ECOS 硬件移植代碼
?? S
?? 第 1 頁 / 共 3 頁
字號:
        ldr     r1,.__exception_handlers
        ldr     r2,[r1,#0x00]    // reset vector intstruction
        str     r2,[r0,#0x00]
        ldr     r2,=warm_reset
        str     r2,[r0,#0x20]
        // Relocate [copy] data from ROM to RAM
        ldr     r3,.__rom_data_start
        ldr     r4,.__ram_data_start
        ldr     r5,.__ram_data_end
        cmp     r4,r5           // jump if no data to move
        beq     2f
        sub     r3,r3,#4        // loop adjustments
        sub     r4,r4,#4
1:      ldr     r0,[r3,#4]!     // copy info
        str     r0,[r4,#4]!
        cmp     r4,r5
        bne     1b
2:
#endif

        // initialize interrupt/exception environments
        ldr     sp,.__startup_stack
        mov     r0,#(CPSR_IRQ_DISABLE|CPSR_FIQ_DISABLE|CPSR_IRQ_MODE)
        msr     cpsr,r0
        ldr     sp,.__exception_stack
        mov     r0,#(CPSR_IRQ_DISABLE|CPSR_FIQ_DISABLE|CPSR_UNDEF_MODE)
        msr     cpsr,r0
        ldr     sp,.__exception_stack

        // initialize CPSR (machine state register)
        mov     r0,#(CPSR_IRQ_DISABLE|CPSR_FIQ_DISABLE|CPSR_SUPERVISOR_MODE)
        msr     cpsr,r0

        // Note: some functions in LIBGCC1 will cause a "restore from SPSR"!!
        msr     spsr,r0

        // initialize stack
#ifdef CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK
        // use interrupt stack for system initialization since it's bigger 
        // than the "startup" stack in this configuration                                
        ldr     sp,.__interrupt_stack
#else        
        ldr     sp,.__startup_stack
#endif        

        // clear BSS
        ldr     r1,.__bss_start
        ldr     r2,.__bss_end
        mov     r0,#0
        cmp     r1,r2
        beq     2f
1:      str     r0,[r1],#4
        cmp     r1,r2
        bls     1b
2:

        // Run kernel + application in THUMB mode
        THUMB_MODE(r1,10)

        LED 3
        
        // Call platform specific hardware initialization
        bl      hal_hardware_init

#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
        bl      initialize_stub

        // Now that stub is initialized, change vector. It is possible
        // to single-step through most of the init code, except the below.
        // Put a breakpoint at the call to cyg_hal_invoke_constructors to
        // pass over this bit (s-s depends on internal state in the stub).
#endif

#if defined(CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS) || \
    defined(CYGIMP_HAL_PROCESS_ALL_EXCEPTIONS)
        mov     r0,#0           // move vectors
        ldr     r1,=__exception_handlers
        ldr     r2,[r1,#0x04]   // undefined instruction
        str     r2,[r0,#0x04]
        ldr     r2,[r1,#0x24]   
        str     r2,[r0,#0x24]
#endif

#if defined(CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT) \
    || defined(CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT)
        .extern hal_ctrlc_isr_init
        bl      hal_ctrlc_isr_init
#endif

        LED 2
        
        // Run through static constructors
        bl      cyg_hal_invoke_constructors

        LED 1
        
        // This starts up the eCos kernel
#ifdef CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK
        ldr     sp,.__startup_stack
#endif        
        bl      cyg_start
_start_hang:
        b       _start_hang
        .code   32
        
        .global reset_platform
        .type   reset_platform,function
reset_platform:         
#ifdef CYGSEM_HAL_ROM_MONITOR
        // initialize CPSR (machine state register)
        mov     r0,#(CPSR_IRQ_DISABLE|CPSR_FIQ_DISABLE|CPSR_SUPERVISOR_MODE)
        msr     cpsr,r0
        b       warm_reset
#else
        mov     r0,#0
        mov     pc,r0           // Jump to reset vector        
#endif                   

init_done:
        .long   0xDEADB00B

//
// Exception handlers
// Assumption: get here from a non-user context [mode]
//
        .code   32
undefined_instruction:
        ldr     sp,.__undef_exception_stack     // get good stack
        stmfd   sp!,{r0-r5}                     // save some supervisor regs
        mrs     r1,spsr
        tst     r1,#CPSR_THUMB_ENABLE
        subeq   r0,lr,#4                // PC at time of interrupt (ARM)
        subne   r0,lr,#2                // PC at time of interrupt (thumb)
        mov     r2,#CYGNUM_HAL_EXCEPTION_ILLEGAL_INSTRUCTION
        mov     r3,sp
        b       call_exception_handler

        .code   32
software_interrupt:
        stmfd   sp!,{r8}
        ldr     r8,.__undef_exception_stack     // get good stack
        stmfd   r8!,{r0-r5}                     // save some supervisor regs
        mov     r3,r8
        ldmfd   sp!,{r8}
        mrs     r1,spsr
        tst     r1,#CPSR_THUMB_ENABLE
        subeq   r0,lr,#4                // PC at time of SWI (ARM)
        subne   r0,lr,#2                // PC at time of SWI (thumb)
        mov     r2,#CYGNUM_HAL_EXCEPTION_INTERRUPT
        b       call_exception_handler

        .code   32
abort_prefetch:
        ldr     sp,.__undef_exception_stack     // get good stack
        stmfd   sp!,{r0-r5}                     // save some supervisor regs
        sub     r0,lr,#4                        // PC at time of interrupt
        mrs     r1,spsr
        mov     r2,#CYGNUM_HAL_EXCEPTION_CODE_ACCESS
        mov     r3,sp
        b       call_exception_handler

        .code   32
abort_data:
        ldr     sp,.__undef_exception_stack     // get good stack
        stmfd   sp!,{r0-r5}                     // save some supervisor regs
        sub     r0,lr,#4                        // PC at time of interrupt
        mrs     r1,spsr
        mov     r2,#CYGNUM_HAL_EXCEPTION_DATA_ACCESS
        mov     r3,sp
        b       call_exception_handler
        
//
// Dispatch an exception handler.

        .code   32
call_exception_handler:
        //
        // On Entry:
        //
        // r4,r5 = scratch
        // r3 = pointer to temp save area
        // r2 = vector number
        // r1 = exception psr
        // r0 = exception pc
        // 
        // [r3+20]: exception r5
        // [r3+16]: exception r4
        // [r3+12]: exception r3
        // [r3+8] : exception r2
        // [r3+4] : exception r1
        // [r3]   : exception r0
        
        mrs     r4,cpsr                 // switch to Supervisor Mode
        bic     r4,r4,#CPSR_MODE_BITS
        orr     r4,r4,#CPSR_SUPERVISOR_MODE
        msr     cpsr,r4

        mov     r5,sp                   // save original svc sp
        mov	r4,lr                   // and original svc lr
#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
        // Make sure we use the GDB stack.
        ldr     sp,.__GDB_stack
        cmp     r5,sp                   // already on GDB stack?
        bhi     10f     
        ldr     r4,.__GDB_stack_base            
        cmp     r5,r4
        movhi   sp,r5
10:
#endif
        //
        // r5 holds original svc sp, current sp is stack to use
        // r4 holds original svc lr, which must also be preserved
        //

        stmfd   sp!,{r0-r2,r4,r5}       // push svc_sp, svc_lr, vector, psr, pc
        
        // switch to pre-exception mode to get banked regs
        mov     r0,sp                   // r0 survives mode switch
        mrs     r2,cpsr                 // Save current psr for return
        orr     r1,r1,#CPSR_IRQ_DISABLE|CPSR_FIQ_DISABLE
        bic     r1,r1,#CPSR_THUMB_ENABLE
        msr     cpsr,r1
        stmfd   r0!,{r8-r12,sp,lr}
        msr     cpsr,r2                 // back to svc mode
        mov     sp,r0                   // update stack pointer

        // now save pre-exception r0-r7 on current stack
        ldmfd   r3,{r0-r5}
        stmfd   sp!,{r0-r7}

        // SP needs fixing if exception occured in SVC mode.
        // The original SVC LR is still in place so that 
        // does not need to be fixed here.
        ldr     r1,[sp,#armreg_cpsr]
        and     r1,r1,#CPSR_MODE_BITS
        cmp     r1,#CPSR_SUPERVISOR_MODE
        ldreq   r1,[sp,#armreg_svcsp]
        streq   r1,[sp,#armreg_sp]

#ifdef  CYGHWR_HAL_ARM_DUMP_EXCEPTIONS
        mov     r0,sp
        ldr     r1,.__dump_procs
        ldr     r2,[sp,#armreg_vector]
        mov     lr,pc
        ldr     pc,[r1,r2,lsl #2]
#endif

        // call exception handler
        mov     r0,sp
        THUMB_MODE(r9,10)
        bl      exception_handler

#ifdef  CYGHWR_HAL_ARM_DUMP_EXCEPTIONS
        mov     r0,sp
        bl      cyg_hal_report_exception_handler_returned
#endif

        ARM_MODE(r1,10)

        //
        // Return from exception
        //
return_from_exception:

        ldr     r0,[sp,#armreg_cpsr]
        msr     spsr,r0

        // return to supervisor mode is simple
        and     r1,r0,#CPSR_MODE_BITS
        cmp     r1,#CPSR_SUPERVISOR_MODE
        ldmeqfd sp,{r0-r14,pc}^

        //
        // return to other non-user modes is a little trickier
        //

        // switch to pre-exception mode and restore r8-r14
        add     r2,sp,#armreg_r8
        mrs     r1,cpsr
        orr     r0,r0,#CPSR_IRQ_DISABLE|CPSR_FIQ_DISABLE
        bic     r0,r0,#CPSR_THUMB_ENABLE
        msr     cpsr,r0
        ldmfd   r2,{r8-r14}
        msr     cpsr, r1        // back to svc mode

        // move sp,lr and pc for final load
        ldr     r0,[sp,#armreg_svcsp]
        str     r0,[sp,#armreg_r8]
        ldr     r0,[sp,#armreg_svclr]	
        str     r0,[sp,#armreg_r9]
        ldr     r0,[sp,#armreg_pc]
        str     r0,[sp,#armreg_r10]

        // restore r0-r7,sp,lr and return from exception
        ldmfd   sp,{r0-r7,sp,lr,pc}^

#ifdef  CYGHWR_HAL_ARM_DUMP_EXCEPTIONS
__dump_procs:
        .word  0    // placeholder for reset
        .word  cyg_hal_report_undefined_instruction
        .word  cyg_hal_report_software_interrupt
        .word  cyg_hal_report_abort_prefetch
        .word  cyg_hal_report_abort_data
        .word  0    // reserved
#endif


// Handle device interrupts
// This is slightly more complicated than the other exception handlers because
// it needs to interface with the kernel (if present).

        .code   32
FIQ:
        // We can get here from any non-user mode.
        mrs     r8,spsr                 // CPSR at time of interrupt
        and     r9,r8,#CPSR_MODE_BITS   // isolate pre-interrupt mode
        cmp	r9,#CPSR_IRQ_MODE
        bne	1f
        // If FIQ interrupted IRQ mode, just return with FIQ disabled.
        // The common interrupt handling takes care of the rest.
        orr	r8,r8,#CPSR_FIQ_DISABLE
        msr	spsr,r8
        subs	pc,lr,#4
    1:
        // If FIQ interrupted other non-user mode, switch to IRQ mode and
        // fall through to IRQ handler.
        ldr     sp,.__exception_stack   // get good stack to save lr and spsr
        stmdb   sp,{r8,lr}
        mov     r8,#CPSR_IRQ_MODE|CPSR_FIQ_DISABLE|CPSR_IRQ_DISABLE
        msr     cpsr,r8			// switch to IRQ mode
        ldr     sp,.__exception_stack   // get regs saved in FIQ mode
        ldmdb	sp,{sp,lr}
        msr     spsr,sp

        // now it looks like we got an IRQ instead of an FIQ except that
        // FIQ is disabled so we don't recurse.
IRQ:
        // Note: I use this exception stack while saving the context because
        // the current SP does not seem to be always valid in this CPU mode.
        ldr     sp,.__exception_stack   // get good stack
        stmfd   sp!,{r0-r5}             // save some supervisor regs
        sub     r0,lr,#4                // PC at time of interrupt
        mrs     r1,spsr
        mov     r2,#CYGNUM_HAL_VECTOR_IRQ
        mov     r3,sp
	
handle_IRQ_or_FIQ:

        mrs     r4,cpsr                 // switch to Supervisor Mode
        bic     r4,r4,#CPSR_MODE_BITS
        orr     r4,r4,#CPSR_SUPERVISOR_MODE
        msr     cpsr,r4

        mov     r5,sp                   // save original svc sp
	mov	r4,lr			// save original svc lr
        stmfd   sp!,{r0-r2,r4,r5}       // push svc_sp, svc_lr, vector, psr, pc
		
        // switch to pre-exception mode to get banked regs
        mov     r0,sp                   // r0 survives mode switch
        mrs     r2,cpsr                 // Save current psr for return
        orr     r1,r1,#CPSR_IRQ_DISABLE|CPSR_FIQ_DISABLE
        bic     r1,r1,#CPSR_THUMB_ENABLE
        msr     cpsr,r1
        stmfd   r0!,{r8-r12,sp,lr}
        msr     cpsr,r2                 // back to svc mode
        mov     sp,r0                   // update stack pointer
	
        // now save pre-exception r0-r7 on current stack
        ldmfd   r3,{r0-r5}
        stmfd   sp!,{r0-r7}

        // sp needs fixing if exception occured in SVC mode.
        ldr     r1,[sp,#armreg_cpsr]
        and     r1,r1,#CPSR_MODE_BITS
        cmp     r1,#CPSR_SUPERVISOR_MODE
        ldreq   r1,[sp,#armreg_svcsp]
        streq   r1,[sp,#armreg_sp]

        mov     v6,sp                   // Save pointer to register frame

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产午夜精品美女毛片视频| 国产精品毛片无遮挡高清| 精品va天堂亚洲国产| 久久久久久一二三区| 亚洲高清免费一级二级三级| 国产suv精品一区二区883| 欧美四级电影在线观看| 国产精品无人区| 精品一区二区三区在线播放| 欧美影院精品一区| 国产精品伦理一区二区| 精品一区二区影视| 日韩欧美在线观看一区二区三区| 亚洲日本一区二区三区| 国产成人在线网站| 精品国产乱码久久久久久久久 | 91精品国产综合久久久久久漫画 | 国产成人综合在线播放| 日韩一区二区三| 午夜影院在线观看欧美| 日本黄色一区二区| 国产精品欧美经典| 豆国产96在线|亚洲| 久久综合色综合88| 久久99久久久久久久久久久| 欧美日韩情趣电影| 午夜天堂影视香蕉久久| 色综合av在线| 亚洲欧美激情视频在线观看一区二区三区 | 91久久精品一区二区三区| 国产农村妇女毛片精品久久麻豆| 免费欧美高清视频| 欧美激情一区在线| 色诱视频网站一区| 国产精品理论在线观看| 成人免费高清在线| 国产精品妹子av| 成人黄色综合网站| 国产精品久久久久精k8| 成年人国产精品| 亚洲乱码日产精品bd| 色综合色综合色综合| 亚洲免费观看高清完整版在线| 91小视频在线| 亚洲国产欧美另类丝袜| 欧美色偷偷大香| 免费黄网站欧美| 久久午夜国产精品| 成人免费三级在线| 亚洲精品日韩一| 欧美日韩亚洲丝袜制服| 免费亚洲电影在线| 国产日产欧美一区| 91老师国产黑色丝袜在线| 亚洲国产精品综合小说图片区| 91精品免费在线观看| 国产精品亚洲一区二区三区在线| 中文字幕不卡在线播放| 91精品1区2区| 毛片一区二区三区| 国产日韩欧美精品综合| 91国偷自产一区二区三区成为亚洲经典 | 欧美精品一区二区三区很污很色的| 久久国产尿小便嘘嘘| 国产精品久久久久毛片软件| 欧美日韩亚洲国产综合| 国产在线麻豆精品观看| 亚洲欧美区自拍先锋| 日韩区在线观看| 色综合色狠狠综合色| 另类的小说在线视频另类成人小视频在线| 久久一二三国产| 欧美性做爰猛烈叫床潮| 国产又粗又猛又爽又黄91精品| 自拍偷拍亚洲激情| 精品噜噜噜噜久久久久久久久试看 | 色婷婷综合激情| 六月婷婷色综合| 亚洲欧美日韩系列| 久久精品日产第一区二区三区高清版| 91久久精品国产91性色tv | 日韩视频123| youjizz久久| 久久精品999| 亚洲自拍偷拍网站| 国产精品免费视频观看| 欧美一级一级性生活免费录像| caoporn国产精品| 激情偷乱视频一区二区三区| 夜夜亚洲天天久久| 亚洲欧美自拍偷拍色图| www激情久久| 日韩亚洲欧美一区| 欧美日韩国产另类一区| 色综合久久中文字幕| 高清不卡一二三区| 国产乱色国产精品免费视频| 首页综合国产亚洲丝袜| 一卡二卡欧美日韩| 中文字幕亚洲综合久久菠萝蜜| 精品久久五月天| 日韩三级在线免费观看| 欧美日韩三级视频| 欧美亚洲禁片免费| 日本精品一区二区三区高清| 99精品偷自拍| 不卡的av网站| 成人激情av网| www.av亚洲| 波多野结衣精品在线| 国产成人综合网站| 成人性色生活片| 国产成人在线视频播放| 国产999精品久久久久久绿帽| 国产一区二区三区在线观看精品 | 亚洲自拍与偷拍| 亚洲综合一区二区| 亚洲一区二区精品3399| 一区二区三区国产精品| 一区二区三区四区不卡在线 | 欧美国产亚洲另类动漫| 欧美激情一区二区三区蜜桃视频| 久久这里都是精品| 中文一区二区在线观看| 国产精品进线69影院| 中文字幕中文字幕中文字幕亚洲无线| 国产精品网站在线| 亚洲人成影院在线观看| 一区二区三区四区中文字幕| 午夜激情一区二区| 久久99九九99精品| 成人综合婷婷国产精品久久 | 国产欧美精品在线观看| 国产女人18毛片水真多成人如厕| 国产精品久久久久一区| 一区二区三区不卡视频| 亚洲18色成人| 美女在线观看视频一区二区| 国产综合一区二区| 波多野结衣亚洲一区| 欧美日高清视频| 91精品国产免费久久综合| 久久久亚洲高清| 一区二区三区四区在线| 六月丁香婷婷久久| 91麻豆swag| 日韩一区二区三区在线视频| 国产日产亚洲精品系列| 亚洲国产另类av| 国产乱子轮精品视频| 91黄视频在线| 日韩免费高清av| 成人免费在线观看入口| 日日夜夜精品视频免费| 国产成人午夜视频| 欧美三级韩国三级日本一级| 久久综合九色欧美综合狠狠| 亚洲欧美视频在线观看视频| 日韩电影网1区2区| 91在线观看污| 日韩欧美一区二区久久婷婷| 综合久久综合久久| 久久成人18免费观看| 欧美午夜精品免费| 国产精品久久毛片av大全日韩| 日韩中文欧美在线| 91日韩一区二区三区| 精品成人一区二区三区| 五月综合激情网| av在线播放成人| 欧美videofree性高清杂交| 亚洲精品你懂的| 粉嫩aⅴ一区二区三区四区| 欧美变态凌虐bdsm| 一区二区三区国产精品| 99r精品视频| 日本一区二区电影| 国产做a爰片久久毛片| 91精品国产福利| 亚洲一卡二卡三卡四卡五卡| av电影在线观看一区| 国产欧美中文在线| 国产一区二区免费看| 日韩欧美精品三级| 婷婷久久综合九色综合伊人色| 91在线视频播放| 国产精品女同一区二区三区| 国产一区二区三区久久悠悠色av | 色综合久久久久综合体| 国产精品女上位| 成人午夜av电影| 久久亚洲春色中文字幕久久久| 天天av天天翘天天综合网色鬼国产| 99re视频精品| **性色生活片久久毛片| 波多野结衣91| 亚洲欧美视频在线观看视频| 色综合久久综合| 亚洲伊人色欲综合网| 欧洲一区二区av|