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

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

?? mvupdateflash.c

?? 此代碼為燒制bios程序的源碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*******************************************************************************
*
*                   Copyright 2003,MARVELL SEMICONDUCTOR ISRAEL, LTD.
* THIS CODE CONTAINS CONFIDENTIAL INFORMATION OF MARVELL.
* NO RIGHTS ARE GRANTED HEREIN UNDER ANY PATENT, MASK WORK RIGHT OR COPYRIGHT
* OF MARVELL OR ANY THIRD PARTY. MARVELL RESERVES THE RIGHT AT ITS SOLE
* DISCRETION TO REQUEST THAT THIS CODE BE IMMEDIATELY RETURNED TO MARVELL.
* THIS CODE IS PROVIDED "AS IS". MARVELL MAKES NO WARRANTIES, EXPRESSED,
* IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, COMPLETENESS OR PERFORMANCE.
*
* MARVELL COMPRISES MARVELL TECHNOLOGY GROUP LTD. (MTGL) AND ITS SUBSIDIARIES,
* MARVELL INTERNATIONAL LTD. (MIL), MARVELL TECHNOLOGY, INC. (MTI), MARVELL
* SEMICONDUCTOR, INC. (MSI), MARVELL ASIA PTE LTD. (MAPL), MARVELL JAPAN K.K.
* (MJKK), MARVELL SEMICONDUCTOR ISRAEL. (MSIL),  MARVELL TAIWAN, LTD. AND
* SYSKONNECT GMBH.
*
*******************************************************************************/
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include "mvFlash.h"
#include "mvRegs.h"
#include <string.h>



/* Defines */
#undef DEBUG
#define PCI_DATA_STRUCTURE_OFFSET	0x18
#define DEVICE_ID_OFFSET_IN_PCIDS	0x6
/* Global variables */
/* Global descriptors table */
unsigned int GDT[] = {  0xf, 0, 0, 0, 
    0xffff, 0, 0x9200, 0x8f};

int useIOBar = 0;

union REGS regs;
struct mvPciSataAdapter
{
    int valid;
    unsigned char bus;
    unsigned char devFunc;
    unsigned long bar;
    unsigned char version;
    unsigned char subVersion;

};

/*******************************************************************************
* activateA20Gate
*
*
* DESCRIPTION:
*   Queries keyboard controller to activate A20 gate line
*
* INPUT:
*	None
* RETURN:
*	None
*
*******************************************************************************/
static void activateA20Gate(void)
{
    _asm {
        cli

        call    a20wait
        mov     al,0xAD
        out     0x64,al

        call    a20wait
        mov     al,0xD0
        out     0x64,al

        call    a20wait2
        in      al,0x60
        push    eax

        call    a20wait
        mov     al,0xD1
        out     0x64,al

        call    a20wait
        pop     eax
        or      al,2
        out     0x60,al

        call    a20wait
        mov     al,0xAE
        out     0x64,al

        call    a20wait
        jmp go_out

        a20wait:
        l0: mov     ecx,65536
        l1: in      al,0x64
        test    al,2
        jz      l2
        loop    l1
        jmp     l0
        l2: ret


        a20wait2:
        c0: mov     ecx,65536
        c1: in      al,0x64
        test    al,1
        jnz     c2
        loop    c1
        jmp     c0
        c2: ret

        go_out :
        nop
    }
}

unsigned char read8bitIoBar (unsigned short offst, register unsigned long address)
{
    unsigned char value = 0;
    _asm{
        pushad
        mov dx, offst
        mov eax, address
        and al, 0xfc
        out dx, eax

        add dx, 0x80
        mov eax, address
        and ax, 0x3
        add dx, ax
        in al, dx

        mov value, al
        popad
    };
#ifdef DEBUG
    printf("Reading from IOBar %08lx : %x\n",offst, value);
#endif
    return value;
}

unsigned short read16bitIoBar (unsigned short offst, register unsigned long address)
{
    unsigned short value = 0;
    _asm{
        pushad
        mov dx, offst
        mov eax, address
        and al, 0xfc
        out dx, eax

        add dx, 0x80
        mov eax, address
        and ax, 0x3
        add dx, ax
        in ax, dx

        mov value, ax
        popad
    };
#ifdef DEBUG
    printf("Reading from IOBar %08lx : %x\n",offst, value);
#endif
    return value;
}


unsigned long read32bitIoBar (unsigned short offst, register unsigned long address)
{
    unsigned long value = 0;
    _asm{
        pushad
        mov dx, offst
        mov eax, address
        and al, 0xfc
        out dx, eax

        add dx, 0x80
        mov eax, address
        and ax, 0x3
        add dx, ax
        in eax, dx

        mov value, eax
        popad
    };
    return value;
}

void write8bitIoBar (unsigned short offst, register unsigned long address, unsigned char value)
{
    _asm{
        pushad
        mov dx, offst
        mov eax, address
        and al, 0xfc
        out dx, eax

        add dx, 0x80
        mov eax, address
        and ax, 0x3
        add dx, ax
        mov al, value
        out dx, al
        popad
    };
}

void write16bitIoBar (unsigned short offst, register unsigned long address, unsigned short value)
{
    _asm{
        pushad
        mov dx, offst
        mov eax, address
        and al, 0xfc
        out dx, eax

        add dx, 0x80
        mov eax, address
        and ax, 0x3
        add dx, ax
        mov ax, value
        out dx, ax
        popad
    };
}

void write32bitIoBar (unsigned short offst, register unsigned long address, unsigned long value)
{
    _asm{
        pushad
        mov dx, offst
        mov eax, address
        and al, 0xfc
        out dx, eax

        add dx, 0x80
        mov eax, address
        and ax, 0x3
        add dx, ax
        mov eax, value
        out dx, eax
        popad
    };
}

/*******************************************************************************
* read8bitMemBar
*
*
* DESCRIPTION:
*   Reads 8 bit from 32bit address space
*
* INPUT:
*   offset	- A 32bit offset 
*
* RETURN:
*   8 bit
*
* NOTE:
*	This function utilizes the protected mode of the processor in order to
*	access a 32bit region.
*******************************************************************************/
unsigned char read8bitMemBar (register unsigned long offset)
{
    /* Use protected mode */
    unsigned char value = 0;
    _asm{
        pushad
        shl edx, 16
        mov dx, ax

        nop
        nop
        cli                ;Don't allow interrupts during this
        push gs            ;Save real mode selectors
        push eax

        lgdt [GDT]         ;Load the GDT
        mov  eax, cr0      ;Switch to pmode
        inc  ax
        mov  cr0, eax
        ; Now we are in protected mode
        mov  ax, 0x8 ;Our only pmode selector
        mov  gs, ax        ;Install 4Gb limits (warning)

        mov  cl, gs:[edx]
        ;       You can add the code in protected mode code here
        mov eax, cr0
        dec  ax            ;Switch back to real mode
        mov  cr0, eax

        pop  eax
        pop  gs
        sti
        mov  value, cl
        popad
    };
#ifdef DEBUG
    printf("Reading from %08lx : %x\n",offset, value);
#endif
    return value;
}


/*******************************************************************************
* read16bitMemBar
*
*
* DESCRIPTION:
*   Reads 16 bit from 32bit address space
*
* INPUT:
*   offset	- A 32bit offset 
*
* RETURN:
*   8 bit
*
* NOTE:
*	This function utilizes the protected mode of the processor in order to
*	access a 32bit region.
*******************************************************************************/
unsigned short read16bitMemBar (register unsigned long offset)
{
    /* Use protected mode */
    unsigned short value = 0;
    _asm{
        pushad
        shl edx, 16
        mov dx, ax

        nop
        nop
        cli                ;Don't allow interrupts during this
        push gs            ;Save real mode selectors
        push eax

        lgdt [GDT]         ;Load the GDT
        mov  eax, cr0      ;Switch to pmode
        inc  ax
        mov  cr0, eax
        ; Now we are in protected mode
        mov  ax, 0x8 ;Our only pmode selector
        mov  gs, ax        ;Install 4Gb limits (warning)

        mov  cx, gs:[edx]
        ;       You can add the code in protected mode code here
        mov eax, cr0
        dec  ax            ;Switch back to real mode
        mov  cr0, eax

        pop  eax
        pop  gs
        sti
        mov  value, cx
        popad
    };
#ifdef DEBUG
    printf("Reading from %08lx : %x\n",offset, value);
#endif
    return value;
}

/*******************************************************************************
* read32bitMemBar
*
*
* DESCRIPTION:
*   Reads 32 bit from 32bit address space
*
* INPUT:
*   offset	- A 32bit offset 
*
* RETURN:
*   8 bit
*
* NOTE:
*	This function utilizes the protected mode of the processor in order to
*	access a 32bit region.
*******************************************************************************/
unsigned long read32bitMemBar (register unsigned long offset)
{
    /* Use protected mode */
    unsigned long value = 0;
    _asm{
        pushad
        shl edx, 16
        mov dx, ax

        nop
        nop
        cli                ;Don't allow interrupts during this
        push gs            ;Save real mode selectors
        push eax

        lgdt [GDT]         ;Load the GDT
        mov  eax, cr0      ;Switch to pmode
        inc  ax
        mov  cr0, eax
        ; Now we are in protected mode
        mov  ax, 0x8 ;Our only pmode selector
        mov  gs, ax        ;Install 4Gb limits (warning)

        mov  ecx, gs:[edx]
        ;       You can add the code in protected mode code here
        mov eax, cr0
        dec  ax            ;Switch back to real mode
        mov  cr0, eax

        pop  eax
        pop  gs
        sti
        mov  value, ecx
        popad
    };
#ifdef DEBUG
    printf("Reading from %08lx : %08lx\n",offset, value);
#endif
    return value;
}

/*******************************************************************************

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情图片小说一区| 中文字幕一区二| 精品1区2区3区| 欧洲av一区二区嗯嗯嗯啊| 91丝袜呻吟高潮美腿白嫩在线观看| 国产高清精品网站| 国产福利精品一区| 国产99精品在线观看| 国产精品18久久久久久久久| 国产精品一区二区三区网站| 极品美女销魂一区二区三区免费| 久久国产精品99久久人人澡| 六月丁香综合在线视频| 狠狠色伊人亚洲综合成人| 国产露脸91国语对白| 成人一二三区视频| 91麻豆高清视频| 欧美性大战久久| 日韩视频一区二区在线观看| 国产视频911| 亚洲特黄一级片| 亚洲国产乱码最新视频 | 国产精品久久久久久一区二区三区| 国产调教视频一区| 综合激情网...| 亚洲成人午夜影院| 久久99久久99小草精品免视看| 国产高清久久久久| 色婷婷激情综合| 欧美成人综合网站| 国内精品不卡在线| 久久国产精品72免费观看| 午夜精品免费在线| 国产日韩精品一区二区浪潮av| 国产精品美女久久久久久久网站| 亚洲三级视频在线观看| 日韩国产一二三区| 国产99精品在线观看| 欧美三日本三级三级在线播放| 亚洲精品一区二区三区精华液 | 免费在线看一区| 国产98色在线|日韩| 欧美日韩精品一区二区三区蜜桃| 久久精品一区二区三区不卡牛牛| 一区二区三区精品视频| 韩国三级在线一区| 欧美日韩一级黄| 日本一区二区成人| 午夜久久久影院| 99久久精品国产精品久久| 日韩精品一区二区三区中文精品| 亚洲激情在线激情| 国产91精品一区二区麻豆网站| 欧美性大战久久| 国产精品欧美经典| 国产麻豆成人精品| 欧美一区二区国产| 一区二区三区四区不卡视频| 国产激情一区二区三区| 91精品国产黑色紧身裤美女| 亚洲人成人一区二区在线观看 | 国产精品久久久久久一区二区三区 | 91精品欧美综合在线观看最新| 国产精品传媒在线| 国产91综合一区在线观看| 欧美成人a视频| 性久久久久久久| 欧美日韩一区二区不卡| 亚洲柠檬福利资源导航| 不卡一区二区在线| 国产欧美日韩三级| 高清成人在线观看| 欧美极品aⅴ影院| 国产剧情av麻豆香蕉精品| 精品成人a区在线观看| 蜜臀va亚洲va欧美va天堂| 在线不卡欧美精品一区二区三区| 亚洲精品自拍动漫在线| 色婷婷精品久久二区二区蜜臂av| 国产精品久久久久久久久动漫| 成人精品一区二区三区四区| 国产日本欧洲亚洲| 成人精品鲁一区一区二区| 国产欧美日韩不卡| a4yy欧美一区二区三区| 成人免费在线视频| 欧洲精品一区二区| 日本sm残虐另类| 久久综合久久综合九色| 国产a精品视频| 亚洲色图视频网| 精品1区2区3区| 蜜臀av国产精品久久久久| 精品国产青草久久久久福利| 精品一二三四在线| 国产欧美精品一区aⅴ影院| av成人免费在线| 亚洲国产精品一区二区尤物区| 3atv一区二区三区| 国产传媒日韩欧美成人| 1024成人网| 91精品久久久久久久99蜜桃| 激情都市一区二区| 亚洲欧洲另类国产综合| 精品视频999| 国产精品一区二区男女羞羞无遮挡| 国产精品美女久久久久久久| 欧美怡红院视频| 国产黄色成人av| 亚洲线精品一区二区三区八戒| 欧美xxxxx牲另类人与| 波多野结衣亚洲| 麻豆91免费看| 亚洲欧美一区二区三区极速播放 | 色999日韩国产欧美一区二区| 亚洲国产成人va在线观看天堂| 日韩欧美一区中文| 99久久国产综合精品色伊| 日韩高清中文字幕一区| 亚洲欧洲精品一区二区精品久久久 | 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 蜜臀av一区二区在线观看| 中文字幕日韩欧美一区二区三区| 欧美狂野另类xxxxoooo| eeuss国产一区二区三区| 精品在线一区二区三区| 亚洲一区二区三区在线看| 国产午夜精品美女毛片视频| 久久久国产一区二区三区四区小说| 99久久精品国产麻豆演员表| 国产一区不卡视频| 日韩vs国产vs欧美| 一区二区三区在线免费视频| 久久久精品黄色| 欧美一级免费观看| 欧美性极品少妇| 色噜噜久久综合| k8久久久一区二区三区| 激情六月婷婷综合| 日韩电影在线一区二区| 亚洲一二三专区| 综合久久国产九一剧情麻豆| 欧美激情一区二区三区四区| 精品免费国产二区三区| 91麻豆精品91久久久久久清纯| 欧美专区日韩专区| 91蜜桃网址入口| 97国产精品videossex| 成人免费的视频| 风间由美中文字幕在线看视频国产欧美| 麻豆精品在线看| 免费成人在线网站| 免费看日韩精品| 蜜桃久久av一区| 麻豆国产精品一区二区三区| 免费av网站大全久久| 美女视频网站久久| 免费观看久久久4p| 国产综合一区二区| 韩国精品主播一区二区在线观看| 久久99在线观看| 国精产品一区一区三区mba视频 | 国产精品国产三级国产普通话蜜臀 | 国产精品美女久久久久久久网站| 久久精品欧美一区二区三区不卡 | 久久精品国产**网站演员| 美女高潮久久久| 国产一区美女在线| 国产999精品久久久久久绿帽| 波多野结衣中文字幕一区二区三区| av亚洲精华国产精华| 91小视频免费看| 欧美色图一区二区三区| 91精品婷婷国产综合久久竹菊| 日韩欧美一区在线观看| 国产三级精品三级在线专区| 亚洲欧美日韩中文播放| 午夜激情一区二区三区| 久久精品国产精品亚洲红杏| 丁香五精品蜜臀久久久久99网站| 99热这里都是精品| 欧美丰满一区二区免费视频| 欧美精品一区二区蜜臀亚洲| 中文字幕一区二区三区四区 | 日韩欧美综合在线| 国产精品理伦片| 亚洲国产成人91porn| 狠狠色狠狠色合久久伊人| 99久久精品免费| 日韩欧美视频一区| 中文字幕一区二区不卡 | 久久天堂av综合合色蜜桃网| 自拍偷拍国产亚洲| 秋霞影院一区二区| proumb性欧美在线观看| 在线综合视频播放| 1000部国产精品成人观看| 免费看欧美美女黄的网站| 成人动漫av在线| 欧美精品一区二区三区在线|