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

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

?? _vflat.asm

?? uboot for K9 AT91RM9200 學習板
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
;****************************************************************************;*;*                  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.;----------------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品白丝av| 欧美性生交片4| 亚洲一级二级在线| 久久综合九色综合97_久久久| 色呦呦一区二区三区| 成人av综合在线| 国产精品一区三区| 56国语精品自产拍在线观看| 在线观看精品一区| 欧美日韩国产经典色站一区二区三区 | 欧洲人成人精品| 欧美国产在线观看| 欧美国产日韩a欧美在线观看| 天堂午夜影视日韩欧美一区二区| 一区二区欧美精品| 偷窥少妇高潮呻吟av久久免费| 香蕉成人伊视频在线观看| 日韩精品一级二级 | 久久草av在线| 紧缚奴在线一区二区三区| 国内精品第一页| 99r精品视频| 欧美视频一区二区三区| 国产精品剧情在线亚洲| 亚洲精品国产视频| 亚洲v日本v欧美v久久精品| youjizz国产精品| 欧美老年两性高潮| 国产欧美日韩精品在线| 亚洲精品一二三| av亚洲产国偷v产偷v自拍| 国产精品视频麻豆| 日韩极品在线观看| 91精品久久久久久久99蜜桃| 一级日本不卡的影视| 91福利国产成人精品照片| 日韩欧美一区二区不卡| 中文字幕亚洲一区二区av在线| 五月婷婷久久丁香| 欧美高清性hdvideosex| 首页亚洲欧美制服丝腿| 日韩欧美另类在线| 国产一区 二区 三区一级| 欧美精品丝袜中出| 日韩av一区二区三区| 91在线一区二区三区| 亚洲欧美在线另类| 欧美在线高清视频| 日韩精品电影一区亚洲| 精品盗摄一区二区三区| 日韩电影网1区2区| 精品国偷自产国产一区| 国产高清无密码一区二区三区| 欧洲精品一区二区| 日本三级亚洲精品| 国产三级一区二区三区| 久久国产精品露脸对白| 中文字幕国产一区| 日本国产一区二区| 奇米色一区二区| 欧美系列日韩一区| 久久国产精品99精品国产| 国产精品色噜噜| 欧美色图天堂网| 国产女人18毛片水真多成人如厕| 成人蜜臀av电影| 精品电影一区二区| 91一区一区三区| 国产精品你懂的在线欣赏| 色综合天天做天天爱| 亚洲欧美色综合| 成人久久久精品乱码一区二区三区| 91玉足脚交白嫩脚丫在线播放| 日韩精品一区二区三区视频在线观看| 亚洲主播在线播放| 91精品国产综合久久久久久久久久| 亚洲精品美腿丝袜| 91黄色激情网站| 亚洲国产成人va在线观看天堂| 国产一区二区在线视频| 亚洲免费观看在线观看| 国产麻豆精品在线观看| 一个色综合网站| 国产三级一区二区三区| 69堂成人精品免费视频| caoporn国产一区二区| 亚洲三级电影网站| 成人18精品视频| 国产精品电影一区二区| 欧美成人vr18sexvr| 久久99精品久久久| 一区二区三区成人| 国产精品伦一区| 久久综合色之久久综合| 日韩一区二区免费电影| 国产精品资源站在线| 日韩精品视频网站| 一区二区三区**美女毛片| 国产精品久久久久久久岛一牛影视| 日韩视频一区二区在线观看| 欧美日韩一区二区在线观看视频| 成人h动漫精品一区二区| 国产露脸91国语对白| 精品一区二区三区免费观看| 天堂蜜桃一区二区三区| 亚洲不卡av一区二区三区| 一区二区在线免费| 亚洲欧美日韩国产一区二区三区 | 欧美丰满美乳xxx高潮www| 91视频免费看| 99国产精品久久久久久久久久 | 国产一区啦啦啦在线观看| 奇米影视在线99精品| 日本网站在线观看一区二区三区 | 一区在线观看视频| 欧美国产欧美综合| 欧美国产欧美亚州国产日韩mv天天看完整| 精品人在线二区三区| 91精品国产aⅴ一区二区| 粉嫩在线一区二区三区视频| 亚洲精品第一国产综合野| 亚洲精选视频免费看| 亚洲一区二区三区美女| 五月综合激情婷婷六月色窝| 日本成人在线一区| 国产伦精品一区二区三区视频青涩 | 日本韩国精品在线| 欧美视频一区二区在线观看| 欧美精品vⅰdeose4hd| 日韩欧美一卡二卡| 久久婷婷久久一区二区三区| 国产欧美日韩久久| 亚洲激情av在线| 午夜精品一区二区三区免费视频| 蜜臀av一区二区| 亚洲一二三专区| 日本亚洲三级在线| 国产剧情一区二区| 91视频www| 538在线一区二区精品国产| 欧美videos大乳护士334| 亚洲国产成人自拍| 亚洲国产日产av| 国产精品一区二区无线| 91精品1区2区| 欧美精品一区二区三区久久久| 日本一区二区三区视频视频| 亚洲乱码国产乱码精品精的特点| 日韩电影免费一区| 国产凹凸在线观看一区二区| 91在线看国产| 欧美大片在线观看| 亚洲欧美日韩一区二区| 精品一区二区在线播放| 色94色欧美sute亚洲线路二| 欧美一卡二卡在线| 成人欧美一区二区三区| 日韩国产欧美在线观看| 99视频在线精品| 欧美一区二区啪啪| 亚洲视频在线一区二区| 国产一区二区三区国产| 欧美日韩国产天堂| 中文字幕在线观看一区二区| 首页亚洲欧美制服丝腿| 99精品欧美一区二区三区小说| 日韩区在线观看| 亚洲午夜精品在线| 成人理论电影网| 亚洲精品一区二区三区在线观看| 亚洲女同ⅹxx女同tv| 国产成人精品aa毛片| 欧美一区二区三区思思人| **欧美大码日韩| 国产成人超碰人人澡人人澡| 欧美一级片免费看| 亚洲一区二区偷拍精品| 91亚洲精品久久久蜜桃| 日韩三级视频在线看| 亚洲6080在线| 欧洲精品中文字幕| 亚洲欧洲日韩在线| 国产高清精品在线| 精品成a人在线观看| 日韩电影网1区2区| 3atv一区二区三区| 亚洲国产日韩在线一区模特| 波多野结衣中文一区| 欧美激情在线观看视频免费| 久久精品国产澳门| 91 com成人网| 日韩中文字幕麻豆| 欧美精品18+| 爽好多水快深点欧美视频| 福利一区二区在线观看| 国产在线精品免费av| 蜜芽一区二区三区| 欧美日韩在线三区| 亚洲综合区在线| 国产一区二三区|