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

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

?? mmugen.c

?? Source code: Embedded software for ARM processor development: MMU table generation source code.
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*----------------------------------------------------------------------------

        MMU table generator
        
        [PJM] 1st August 2000
        
        Copyright Peter Maloy, CodeSprite August 2000    www.codesprite.com

----------------------------------------------------------------------------*/

//---------------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

//---------------------------------------------------------------------------


enum  validwords {
        BASE_ADDRESS,
        LEVEL           ,
        VIRTUAL         ,
        TO                      ,
        PHYSICAL        ,
        PAGES           ,
        SECTION         ,
        NO_ACCESS       ,
        SVC_READWRITE,
        NO_USR_WRITE,
        FULL_ACCESS     ,
        FAULT           ,
        CACHEABLE       ,
        AND                     ,
        BUFFERABLE      ,
        NOT                     ,
        LARGEPAGES      ,
        SMALLPAGES      ,
        POSTPROCESS ,
        UNRECOGNISED
};

typedef struct
{
        unsigned long v_base;   /* first address in virtual section                     */
        unsigned long v_end;            /* last address in virtual section                      */
        unsigned long p_base;   /* corresponding physical base address          */
        unsigned long entrytype; /* 'P' for pages, 'S' for section                      */
        unsigned long access;   /* access types defined in the enum above       */
        unsigned long cb;               /* cacheable & bufferable status                        */
}mmudata;

typedef struct
{
        long index;
        char *word;
}tparsedata;

struct {
    FILE *rulefile ;
    FILE *outfile ;
    mmudata rule ;
    unsigned long base_address ;
    unsigned long table_entry ;
    long state ;
    long pagescount ;
} global ;


tparsedata parsedata[] = {
        {BASE_ADDRESS   ,"BASE_ADDRESS" },
        {LEVEL                  ,"LEVEL"                },
        {VIRTUAL                ,"VIRTUAL"              },
        {TO                             ,"TO"                   },
        {PHYSICAL               ,"PHYSICAL"             },
        {PAGES                  ,"PAGES"                },
        {SECTION                ,"SECTION"              },
        {NO_ACCESS              ,"NO_ACCESS"    },
        {SVC_READWRITE  ,"SVC_READWRITE"},
        {NO_USR_WRITE   ,"NO_USR_WRITE" },
        {FULL_ACCESS    ,"FULL_ACCESS"  },
        {FAULT                  ,"FAULT"                },
        {CACHEABLE              ,"CACHEABLE"    },
        {AND                    ,"AND"                  },
        {BUFFERABLE             ,"BUFFERABLE"   },
        {NOT                    ,"NOT"                  },
        {LARGEPAGES             ,"LARGEPAGES"   },
        {SMALLPAGES             ,"SMALLPAGES"   },
        {POSTPROCESS    ,"POSTPROCESS"  },
        {UNRECOGNISED   ,"UNRECOGNISED" }
};


//--function prototypes------------------------------------------------------
int  ValidateArgs (int argc, char **argv);
int  ParseRule (void);
int  WriteTableEntries (void);
int  WriteLevel1(void);
int  WriteLevel2(void);
int      GetWord (char *buffer);
int      GetWordIndex (char *buffer);
long atox( char *buffer);
int      stricomp( char *original, char *match );

//--MAIN---------------------------------------------------------------------


int main(int argc, char **argv)
{
        if( ValidateArgs(argc, argv)) return -1;

    global.state=0;

        while( ParseRule() )
        {
                if(WriteTableEntries()==-1)
                {
                        fclose( global.outfile );
                        fclose( global.rulefile );
                        exit(-1);
                }
        }

        printf("MMU table generation complete\n");
        
        fclose( global.outfile );
        fclose( global.rulefile );
        return 0 ;
}



//--VALIDATEARGS-------------------------------------------------------------

int ValidateArgs(int argc, char **argv)
{
        printf("\nMMUgen\n");
    printf("======\n");

        if(argc!=3)
    {
        printf("Usage: MMUgen Rulefile Outputfile\n");
        return -1;
    }

    if(NULL==(global.rulefile=fopen(argv[1],"r")))
    {
        printf("Couldn't open Rule file\n");
        return -1;
    }

    if(NULL==(global.outfile=fopen(argv[2],"wb")))
    {
                fclose(global.rulefile);
        printf("Couldn't open Output file\n");
        return -1;
    }
        fseek(global.outfile, 0L, SEEK_SET);

        
    return 0;
}


//--PARSERULE----------------------------------------------------------------

int ParseRule (void)
{
        char buffer[20];
        static int       notted = 0;
    long i;

        while(GetWord(buffer))
        {
                switch( GetWordIndex(buffer) )
                {
                        case BASE_ADDRESS:
                        GetWord(buffer);
                                        global.base_address = atox(buffer);
                                        break;

                        case LEVEL               :
                        GetWord(buffer);
                                        global.state = atoi(buffer);
                                        /* check table_entry is a sensible value */
                                        if(global.table_entry != 0 && global.table_entry != 0x1000)
                                        {
                                                printf("Table data error - at end of Level 1, the table was %08lx bytes long (should be 0x4000)\n",global.table_entry<<2);
                                        }
                                        break;

                        case VIRTUAL     :
                        GetWord(buffer);
                                        global.rule.v_base =  atox(buffer);
                                        break;

                        case TO                  :
                        GetWord(buffer);
                                        global.rule.v_end =  atox(buffer);
                                        break;

                        case PHYSICAL    :
                        GetWord(buffer) ;
                                        global.rule.p_base =  atox(buffer);
                                        break;

                        case PAGES               :
                                        global.rule.entrytype = 'P';
                                        global.rule.access = 0 ;
                                        global.rule.cb = 0 ;
                                        //completed rule, so implement it
                                        return 1 ;

                        case SECTION     :
                                        global.rule.entrytype = 'S';
                                        break ;

                        case NO_ACCESS   :
                                        global.rule.access = 0 ;
                                        break ;

                        case SVC_READWRITE:
                                        global.rule.access = 1 ;
                                        break ;

                        case NO_USR_WRITE:
                                        global.rule.access = 2 ;
                                        break ;

                        case FULL_ACCESS :
                                        global.rule.access = 3 ;
                                        break ;

                        case FAULT               :
                                        global.rule.entrytype = 'F';
                                        global.rule.access = 0 ;
                                        global.rule.cb = 0 ;
                                        //completed rule, so implement it
                                        return 1 ;

                        case CACHEABLE   :
                                        if(notted)
                                        {
                                                global.rule.cb &= 1;
                                                notted = 0;
                                        }
                                        else
                                        {
                                                global.rule.cb |= 2 ;
                                        }
                                        break ;

                        case AND                 :
                                        /* ignore */ break;

                        case BUFFERABLE  :
                                        if(notted)
                                        {
                                                global.rule.cb &= 2;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美制服丝袜第一页| 亚洲免费av观看| 亚洲午夜激情网站| 成人精品视频一区二区三区尤物| 91国产丝袜在线播放| 久久综合九色综合欧美就去吻| 亚洲区小说区图片区qvod| 国产一区二区三区最好精华液| 欧美日韩视频第一区| 中文字幕在线不卡| 国产自产2019最新不卡| 欧美精品一二三区| 亚洲一区二区三区四区在线免费观看 | 成人免费视频视频| 日韩一级片在线观看| 亚洲一区二区三区四区不卡| 99久久综合精品| 国产拍揄自揄精品视频麻豆| 黑人巨大精品欧美一区| 91精品欧美一区二区三区综合在 | 中文字幕第一区| 久久成人免费网站| 欧美一区二区三区四区高清| 亚洲成人动漫在线观看| 欧美影院午夜播放| 亚洲超丰满肉感bbw| 欧美性生活大片视频| 亚洲蜜臀av乱码久久精品| 91啦中文在线观看| 曰韩精品一区二区| 欧美亚洲愉拍一区二区| 亚洲成人自拍偷拍| 6080亚洲精品一区二区| 久久精品国产精品青草| 欧美一级高清大全免费观看| 日韩在线一区二区三区| 日韩免费成人网| 紧缚捆绑精品一区二区| 国产色一区二区| 91网站最新地址| 一区二区三区产品免费精品久久75| 色综合天天视频在线观看| 一区二区三区在线视频观看58| 91精品办公室少妇高潮对白| 亚洲一区在线看| 欧美一区二区播放| 国产成人av电影| 亚洲少妇30p| 7777精品伊人久久久大香线蕉的 | 欧美一区二区精品在线| 久久99国内精品| 欧美韩日一区二区三区| 99视频国产精品| 亚洲6080在线| 久久先锋资源网| 97久久精品人人澡人人爽| 亚洲a一区二区| 国产欧美日韩精品a在线观看| av资源网一区| 美女一区二区三区| 中文子幕无线码一区tr | 91视频在线观看免费| 亚洲午夜久久久久| 久久久91精品国产一区二区精品| 97精品久久久久中文字幕| 秋霞电影一区二区| 国产精品久久久久久妇女6080| 欧美日韩中文精品| 国产精品88888| 亚洲va韩国va欧美va精品| 久久一日本道色综合| 欧美性一级生活| 国产不卡视频在线播放| 日韩精彩视频在线观看| 中文字幕日本乱码精品影院| 91精品国产一区二区三区| 岛国一区二区三区| 免费成人你懂的| 一区二区三国产精华液| 久久久久久久精| 91精品国产综合久久精品app | 国产成a人亚洲精品| 偷拍日韩校园综合在线| 中文字幕av一区二区三区高| 69av一区二区三区| 91久久精品网| 成人app下载| 韩国v欧美v亚洲v日本v| 日韩精彩视频在线观看| 一区二区三区欧美久久| 中文字幕中文字幕在线一区| 欧美一区三区四区| 欧美猛男gaygay网站| 成人综合在线视频| 国产成人av电影在线| 国内精品在线播放| 蜜臀va亚洲va欧美va天堂| 亚洲国产成人tv| 亚洲一区在线观看视频| 中文字幕中文在线不卡住| 久久久久久久久久久电影| 欧美一级黄色片| 欧美精品777| 欧美日韩电影在线| 9191国产精品| 日韩一区二区免费在线观看| 欧美三级视频在线| 欧美日韩黄色影视| 日本久久电影网| 欧亚洲嫩模精品一区三区| 色狠狠色噜噜噜综合网| 99re这里只有精品首页| 色综合av在线| 欧美日韩亚洲综合| 欧美日韩综合不卡| 欧美一区二区观看视频| 日韩欧美国产综合| 欧美成人福利视频| 国产日韩视频一区二区三区| 国产日本亚洲高清| 亚洲欧洲精品一区二区三区不卡| 国产精品免费免费| 夜夜精品浪潮av一区二区三区| 一区二区成人在线视频| 午夜精品视频一区| 精品在线视频一区| 国产sm精品调教视频网站| av激情综合网| 欧美日韩一区在线观看| 91麻豆精品国产91久久久久久 | 性欧美疯狂xxxxbbbb| 日韩av二区在线播放| 精品一区二区三区免费观看 | 国产精品免费av| 亚洲色图制服诱惑 | 午夜国产精品影院在线观看| 日韩高清在线观看| 国产精品原创巨作av| 91在线你懂得| 日韩美女主播在线视频一区二区三区 | 欧美另类变人与禽xxxxx| 日韩欧美激情在线| 国产精品毛片高清在线完整版| 亚洲精品中文在线| 蜜臀av一区二区在线观看| 国产精品香蕉一区二区三区| 在线观看亚洲a| 日韩免费一区二区| 国产精品传媒视频| 蓝色福利精品导航| 97se亚洲国产综合自在线不卡| 欧美色老头old∨ideo| 精品国产一区二区精华| 亚洲欧美成aⅴ人在线观看 | 久久综合久久综合久久综合| 亚洲免费av高清| 国产伦理精品不卡| 欧美日韩国产影片| 国产精品久久久久久户外露出| 三级不卡在线观看| 91美女片黄在线| 久久久.com| 麻豆极品一区二区三区| 91麻豆福利精品推荐| 精品国产三级电影在线观看| 洋洋av久久久久久久一区| 国产一区二区剧情av在线| 欧美日韩视频不卡| 亚洲欧美日韩国产成人精品影院| 久久精品久久精品| 欧美亚洲丝袜传媒另类| 国产精品久久久久久久久晋中| 麻豆精品久久精品色综合| 欧美中文字幕一区二区三区亚洲| 欧美国产综合一区二区| 久久精品理论片| 欧美一级理论片| 日韩电影在线一区二区| 色狠狠av一区二区三区| 成人欧美一区二区三区在线播放| 国产麻豆一精品一av一免费 | 国产一区二区调教| 日韩欧美国产精品一区| 亚洲444eee在线观看| 色婷婷综合久久久中文字幕| 国产精品久久夜| 成人动漫中文字幕| 国产精品久久久久四虎| 国产精品亚洲а∨天堂免在线| 精品粉嫩aⅴ一区二区三区四区| 亚洲成人激情社区| 欧美老女人第四色| 午夜激情久久久| 欧美日韩精品一区二区| 午夜精品久久久久久久| 欧美日韩亚洲不卡| 水蜜桃久久夜色精品一区的特点| 欧美在线色视频| 亚洲成a人v欧美综合天堂| 欧美系列日韩一区|