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

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

?? _vflat.asm

?? uboot for K9 AT91RM9200 學(xué)習(xí)板
?? ASM
?? 第 1 頁 / 共 2 頁
字號(hào):
;****************************************************************************;*;*                  SciTech OS Portability Manager Library;*;*  ========================================================================;*;*    The contents of this file are subject to the SciTech MGL Public;*    License Version 1.0 (the "License"); you may not use this file;*    except in compliance with the License. You may obtain a copy of;*    the License at http://www.scitechsoft.com/mgl-license.txt;*;*    Software distributed under the License is distributed on an;*    "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or;*    implied. See the License for the specific language governing;*    rights and limitations under the License.;*;*    The Original Code is Copyright (C) 1991-1998 SciTech Software, Inc.;*;*    The Initial Developer of the Original Code is SciTech Software, Inc.;*    All Rights Reserved.;*;*  ========================================================================;*;*            Based on original code Copyright 1994 Otto Chrons;*;* Language:    80386 Assembler, TASM 4.0 or later;* Environment: IBM PC 32 bit protected mode;*;* Description: Low level page fault handler for virtual linear framebuffers.;*;****************************************************************************        IDEAL        JUMPSinclude "scitech.mac"           ; Memory model macrosheader      _vflat              ; Set up memory modelVFLAT_START     EQU 0F0000000hVFLAT_END       EQU 0F03FFFFFhPAGE_PRESENT    EQU 1PAGE_NOTPRESENT EQU 0PAGE_READ       EQU 0PAGE_WRITE      EQU 2ifdef   DOS4GW;----------------------------------------------------------------------------; DOS4G/W flat linear framebuffer emulation.;----------------------------------------------------------------------------begdataseg  _vflat; Near pointers to the page directory base and our page tables. All of; this memory is always located in the first Mb of DOS memory.PDBR            dd  0               ; Page directory base register (CR3)accessPageAddr  dd  0accessPageTable dd  0; CauseWay page directory & 1st page table linear addresses.CauseWayDIRLinear dd 0CauseWay1stLinear dd 0; Place to store a copy of the original Page Table Directory before we; intialised our virtual buffer code.pageDirectory:  resd 1024           ; Saved page table directoryValidCS         dw  0               ; Valid CS for page faultsRing0CS         dw  0               ; Our ring 0 code selectorLastPage        dd  0               ; Last page we mapped inBankFuncBuf:    resb 101            ; Place to store bank switch codeBankFuncPtr     dd  offset BankFuncBufINT14Gate:INT14Offset     dd      0           ; eip of original vectorINT14Selector   dw      0           ; cs of original vector        cextern _PM_savedDS,USHORT        cextern VF_haveCauseWay,BOOLenddataseg  _vflatbegcodeseg  _vflat              ; Start of code segment        cextern VF_malloc,FPTR;----------------------------------------------------------------------------; PF_handler64k - Page fault handler for 64k banks;----------------------------------------------------------------------------; The handler below is a 32 bit ring 0 page fault handler.  It receives; control immediately after any page fault or after an IRQ6 (hardware; interrupt). This provides the fastest possible handling of page faults; since it jump directly here.  If this is a page fault, the number; immediately on the stack will be an error code, at offset 4 will be; the eip of the faulting instruction, at offset 8 will be the cs of the; faulting instruction.  If it is a hardware interrupt, it will not have; the error code and the eflags will be at offset 8.;----------------------------------------------------------------------------cprocfar    PF_handler64k; Check if this is a processor exeception or a page fault        push    eax        mov     ax,[cs:ValidCS]     ; Use CS override to access data        cmp     [ss:esp+12],ax      ; Is this a page fault?        jne     @@ToOldHandler      ; Nope, jump to the previous handler; Get address of page fault and check if within our handlers range        mov     eax,cr2             ; EBX has page fault linear address        cmp     eax,VFLAT_START     ; Is the fault less than ours?        jb      @@ToOldHandler      ; Yep, go to previous handler        cmp     eax,VFLAT_END       ; Is the fault more than ours?        jae     @@ToOldHandler      ; Yep, go to previous handler; This is our page fault, so we need to handle it        pushad        push    ds        push    es        mov     ebx,eax             ; EBX := page fault address        and     ebx,invert 0FFFFh   ; Mask to 64k bank boundary        mov     ds,[cs:_PM_savedDS]; Load segment registers        mov     es,[cs:_PM_savedDS]; Map in the page table for our virtual framebuffer area for modification        mov     edi,[PDBR]          ; EDI points to page directory        mov     edx,ebx             ; EDX = linear address        shr     edx,22              ; EDX = offset to page directory        mov     edx,[edx*4+edi]     ; EDX = physical page table address        mov     eax,edx        mov     edx,[accessPageTable]        or      eax,7        mov     [edx],eax        mov     eax,cr3        mov     cr3,eax             ; Update page table cache; Mark all pages valid for the new page fault area        mov     esi,ebx             ; ESI := linear address for page        shr     esi,10        and     esi,0FFFh           ; Offset into page table        add     esi,[accessPageAddr]ifdef   USE_NASM%assign off 0%rep 16        or      [DWORD esi+off],0000000001h ; Enable pages%assign off off+4%endrepelseoff = 0REPT    16        or      [DWORD esi+off],0000000001h ; Enable pagesoff = off+4ENDMendif; Mark all pages invalid for the previously mapped area        xchg    esi,[LastPage]      ; Save last page for next page fault        test    esi,esi        jz      @@DoneMapping       ; Dont update if first time roundifdef   USE_NASM%assign off 0%rep 16        or      [DWORD esi+off],0FFFFFFFEh  ; Disable pages%assign off off+4%endrepelseoff = 0REPT    16        and     [DWORD esi+off],0FFFFFFFEh  ; Disable pagesoff = off+4ENDMendif@@DoneMapping:        mov     eax,cr3        mov     cr3,eax             ; Flush the TLB; Now program the new SuperVGA starting bank address        mov     eax,ebx             ; EAX := page fault address        shr     eax,16        and     eax,0FFh            ; Mask to 0-255        call    [BankFuncPtr]       ; Call the bank switch function        pop     es        pop     ds        popad        pop     eax        add     esp,4               ; Pop the error code from stack        iretd                       ; Return to faulting instruction@@ToOldHandler:        pop     eaxifdef   USE_NASM        jmp far dword [cs:INT14Gate]; Chain to previous handlerelse        jmp     [FWORD cs:INT14Gate]; Chain to previous handlerendifcprocend;----------------------------------------------------------------------------; PF_handler4k  - Page fault handler for 4k banks;----------------------------------------------------------------------------; The handler below is a 32 bit ring 0 page fault handler.  It receives; control immediately after any page fault or after an IRQ6 (hardware; interrupt). This provides the fastest possible handling of page faults; since it jump directly here.  If this is a page fault, the number; immediately on the stack will be an error code, at offset 4 will be; the eip of the faulting instruction, at offset 8 will be the cs of the; faulting instruction.  If it is a hardware interrupt, it will not have; the error code and the eflags will be at offset 8.;----------------------------------------------------------------------------cprocfar    PF_handler4k; Fill in when we have tested all the 64Kb codeifdef   USE_NASM        jmp far dword [cs:INT14Gate]; Chain to previous handlerelse        jmp     [FWORD cs:INT14Gate]; Chain to previous handlerendifcprocend;----------------------------------------------------------------------------; void InstallFaultHandler(void *baseAddr,int bankSize);----------------------------------------------------------------------------; Installes the page fault handler directly int the interrupt descriptor; table for maximum performance. This of course requires ring 0 access,; but none of this stuff will run without ring 0!;----------------------------------------------------------------------------cprocstart  InstallFaultHandler        ARG     baseAddr:ULONG, bankSize:UINT        enter_c        mov     [DWORD LastPage],0  ; No pages have been mapped        mov     ax,cs        mov     [ValidCS],ax        ; Save CS value for page faults; Put address of our page fault handler into the IDT directly        sub     esp,6               ; Allocate space on stackifdef   USE_NASM        sidt    [ss:esp]            ; Store pointer to IDTelse        sidt    [FWORD ss:esp]      ; Store pointer to IDTendif        pop     ax                  ; add esp,2        pop     eax                 ; Absolute address of IDT        add     eax,14*8            ; Point to Int #14; Note that Interrupt gates do not have the high and low word of the; offset in adjacent words in memory, there are 4 bytes separating them.        mov     ecx,[eax]           ; Get cs and low 16 bits of offset        mov     edx,[eax+6]         ; Get high 16 bits of offset in dx        shl     edx,16        mov     dx,cx               ; edx has offset        mov     [INT14Offset],edx   ; Save offset        shr     ecx,16        mov     [INT14Selector],cx  ; Save original cs        mov     [eax+2],cs          ; Install new cs        mov     edx,offset PF_handler64k        cmp     [UINT bankSize],4        jne     @@1        mov     edx,offset PF_handler4k@@1:    mov     [eax],dx            ; Install low word of offset        shr     edx,16        mov     [eax+6],dx          ; Install high word of offset        leave_c        retcprocend;----------------------------------------------------------------------------; void RemoveFaultHandler(void);----------------------------------------------------------------------------; Closes down the virtual framebuffer services and restores the previous; page fault handler.;----------------------------------------------------------------------------cprocstart  RemoveFaultHandler        enter_c; Remove page fault handler from IDT        sub     esp,6               ; Allocate space on stackifdef   USE_NASM        sidt    [ss:esp]            ; Store pointer to IDTelse        sidt    [FWORD ss:esp]      ; Store pointer to IDTendif        pop     ax                  ; add esp,2        pop     eax                 ; Absolute address of IDT        add     eax,14*8            ; Point to Int #14        mov     cx,[INT14Selector]        mov     [eax+2],cx          ; Restore original CS        mov     edx,[INT14Offset]        mov     [eax],dx            ; Install low word of offset        shr     edx,16        mov     [eax+6],dx          ; Install high word of offset        leave_c        retcprocend;----------------------------------------------------------------------------; void InstallBankFunc(int codeLen,void *bankFunc);----------------------------------------------------------------------------; Installs the bank switch function by relocating it into our data segment; and making it into a callable function. We do it this way to make the; code identical to the way that the VflatD devices work under Windows.;----------------------------------------------------------------------------

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩大陆一区二区| 精品国产乱码久久久久久浪潮 | 成人午夜免费视频| 亚洲免费视频中文字幕| 亚洲精品一区二区三区四区高清| 色哟哟精品一区| 国产精品中文字幕一区二区三区| 一区二区三区高清| 国产亚洲成aⅴ人片在线观看| 欧美精品日韩精品| 97久久人人超碰| 韩国三级在线一区| 午夜不卡av免费| 亚洲美女视频在线观看| 国产日韩av一区二区| 欧美一级黄色录像| 欧美三级韩国三级日本一级| 成人手机在线视频| 麻豆成人久久精品二区三区红| 亚洲免费色视频| 国产精品无人区| 久久久久久久综合狠狠综合| 91精品国产高清一区二区三区| 91色九色蝌蚪| 成人在线视频一区| 国产成人午夜片在线观看高清观看| 日韩av高清在线观看| 亚洲国产wwwccc36天堂| 亚洲黄色录像片| 亚洲人成网站影音先锋播放| 中文一区一区三区高中清不卡| 亚洲精品一区二区三区福利| 日韩视频不卡中文| 欧美日韩dvd在线观看| 欧洲亚洲国产日韩| 欧美性一二三区| 欧美视频一区在线观看| 欧洲生活片亚洲生活在线观看| 色综合久久综合中文综合网| caoporen国产精品视频| 成人国产精品免费网站| 高清不卡一二三区| 国产成人福利片| 成人永久免费视频| av成人老司机| 一本大道av伊人久久综合| 91蜜桃在线免费视频| 91久久精品国产91性色tv| 欧美性大战久久| 欧美日韩三级一区二区| 欧美日韩在线综合| 欧美一级二级三级乱码| 欧美一区二区三区在线视频| 欧美成人伊人久久综合网| 久久嫩草精品久久久久| 国产片一区二区| 中文字幕在线一区二区三区| 中文字幕亚洲一区二区va在线| 亚洲国产高清在线| 亚洲欧美一区二区三区久本道91| 樱花影视一区二区| 亚洲国产精品嫩草影院| 美日韩黄色大片| 高清在线成人网| 色老汉av一区二区三区| 欧美精品一卡两卡| 欧美精品一区二区三区蜜桃视频| 精品av综合导航| 中文字幕在线观看一区| 亚洲国产欧美另类丝袜| 蜜臀av性久久久久av蜜臀妖精| 久久66热re国产| heyzo一本久久综合| 欧美日韩一级二级| 久久在线观看免费| 亚洲欧洲av色图| 婷婷夜色潮精品综合在线| 国产一区在线看| 色哟哟在线观看一区二区三区| 欧美日韩不卡一区二区| 久久精品人人做| 亚洲资源在线观看| 国产自产高清不卡| 欧美在线观看你懂的| 欧美成人女星排名| 亚洲精选视频在线| 精品一区二区三区香蕉蜜桃| 99久久综合色| 精品久久久久久久久久久久久久久| 国产精品女人毛片| 琪琪一区二区三区| 99久久国产免费看| 91麻豆精品国产91久久久更新时间 | 美腿丝袜亚洲色图| 99视频超级精品| 欧美不卡视频一区| 亚洲在线视频网站| 国产精品亚洲成人| 日韩午夜激情免费电影| 亚洲综合一二三区| 国产成人av在线影院| 日韩一区二区免费在线观看| 亚洲精品乱码久久久久久黑人| 色婷婷久久99综合精品jk白丝| 精品国产91久久久久久久妲己| 亚洲精品乱码久久久久| 国产福利一区二区| 欧美一区日韩一区| 亚洲在线观看免费视频| 成人高清免费观看| 2014亚洲片线观看视频免费| 日韩国产欧美视频| 在线影视一区二区三区| 中文字幕中文字幕一区| 国产成人夜色高潮福利影视| 精品国精品自拍自在线| 日一区二区三区| 欧美日韩精品一二三区| 亚洲最大色网站| 91偷拍与自偷拍精品| 中文字幕国产精品一区二区| 狠狠v欧美v日韩v亚洲ⅴ| 日韩午夜精品电影| 免费人成在线不卡| 欧美裸体一区二区三区| 亚洲午夜在线视频| 欧美在线观看视频在线| 一区二区三区影院| 91捆绑美女网站| 国产精品福利一区| 成人黄色电影在线| 中文一区二区在线观看| 成人免费观看视频| 国产精品久久久久桃色tv| 国内精品第一页| 久久久精品中文字幕麻豆发布| 久国产精品韩国三级视频| 91精品在线麻豆| 日产欧产美韩系列久久99| 91精品国产色综合久久不卡蜜臀| 亚洲动漫第一页| 3atv一区二区三区| 青青草一区二区三区| 日韩免费一区二区| 国内精品伊人久久久久影院对白| 精品嫩草影院久久| 久久99久久久欧美国产| 精品国产制服丝袜高跟| 国产精品99久| 亚洲欧美在线高清| 色久优优欧美色久优优| 午夜精品视频在线观看| 6080yy午夜一二三区久久| 美日韩一区二区| 久久精品一区四区| 成人视屏免费看| 亚洲人成7777| 欧美视频精品在线| 日韩成人一级片| 久久午夜羞羞影院免费观看| 成人精品视频.| 亚洲综合激情网| 欧美一区二区网站| 国产精品亚洲第一| 亚洲精品国产视频| 91精品国产欧美一区二区成人| 精品在线观看视频| 中文字幕av一区 二区| 色噜噜偷拍精品综合在线| 日韩精品91亚洲二区在线观看| 久久久久久免费网| 色就色 综合激情| 美女免费视频一区二区| 国产精品久久久久永久免费观看 | 91久久线看在观草草青青| 日韩不卡一区二区三区| 欧美国产一区视频在线观看| 91丨九色丨黑人外教| 日本欧美一区二区| 亚洲欧洲无码一区二区三区| 欧美视频在线一区| 国产精品一区二区三区99| 亚洲一区二区三区不卡国产欧美| 欧美成va人片在线观看| 色欧美乱欧美15图片| 精品一区二区三区久久| 亚洲精品一二三区| 精品国产乱码久久久久久1区2区| aaa欧美大片| 开心九九激情九九欧美日韩精美视频电影| 国产欧美一区二区精品婷婷| 欧美美女一区二区三区| 丁香天五香天堂综合| 日本欧美在线观看| 亚洲日本青草视频在线怡红院| 日韩欧美一区在线观看| 色一情一乱一乱一91av| 国产一区中文字幕| 婷婷亚洲久悠悠色悠在线播放| 国产精品进线69影院|