亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
欧美丝袜自拍制服另类| 欧美在线影院一区二区| 在线观看成人免费视频| 欧美刺激午夜性久久久久久久| 欧美国产精品一区| 日韩电影在线一区二区三区| 99视频一区二区| 精品久久久久久久久久久久包黑料| 一区二区三区中文在线| 国产成人一级电影| www国产亚洲精品久久麻豆| 亚洲成av人片在线观看无码| 99免费精品视频| 国产精品亲子伦对白| 精品一区二区免费| 欧美一级视频精品观看| 性久久久久久久久久久久| jlzzjlzz欧美大全| 日本一区二区综合亚洲| 久久99国产精品久久99果冻传媒| 欧美日韩高清在线| 亚洲一区二区三区国产| 日本大香伊一区二区三区| 中文字幕中文字幕一区| 懂色av噜噜一区二区三区av| 久久夜色精品一区| 国产激情一区二区三区| 久久综合色8888| 国产一区二区三区日韩| 精品欧美黑人一区二区三区| 免费的成人av| 欧美大片顶级少妇| 韩国女主播成人在线观看| 欧美一区日韩一区| 久久精品国产精品亚洲综合| 精品国产免费人成电影在线观看四季 | 久久精品国产成人一区二区三区| 欧美日韩激情一区| 亚洲国产精品久久艾草纯爱| 欧美日韩一区二区电影| 亚洲国产成人av好男人在线观看| 欧美色综合久久| 午夜av一区二区三区| 5858s免费视频成人| 三级一区在线视频先锋 | 欧美三区免费完整视频在线观看| 亚洲久草在线视频| 欧美日韩亚洲综合在线| 免费成人在线网站| 久久久亚洲国产美女国产盗摄| 成人黄色免费短视频| 国产精品久久久久久久久果冻传媒| www..com久久爱| 亚洲成人动漫在线观看| 日韩精品最新网址| 成人在线视频一区| 亚洲综合精品自拍| 欧美成人欧美edvon| 成人国产视频在线观看| 国产精品免费丝袜| 在线观看欧美黄色| 久久99久久精品| 国产精品美女一区二区三区| 精品视频1区2区| 国内成+人亚洲+欧美+综合在线| 国产精品伦理在线| 91精选在线观看| 成人综合婷婷国产精品久久蜜臀| 亚洲伦在线观看| 精品奇米国产一区二区三区| 91老师片黄在线观看| 麻豆精品国产传媒mv男同| 1024成人网| 精品欧美久久久| 欧美中文字幕一区| 国产一区二区三区久久悠悠色av| 亚洲三级视频在线观看| 精品国产乱子伦一区| 欧美中文字幕一区二区三区 | 99精品一区二区| 免费人成黄页网站在线一区二区 | 99久久精品一区二区| 蜜芽一区二区三区| 亚洲天堂成人网| 久久色.com| 91精品国产欧美一区二区成人 | 日韩欧美在线网站| 91国模大尺度私拍在线视频| 国产福利视频一区二区三区| 视频一区国产视频| 亚洲美女淫视频| 国产精品―色哟哟| 精品日韩99亚洲| 欧美精品18+| 在线精品视频免费播放| 成人高清视频免费观看| 国产资源精品在线观看| 肉丝袜脚交视频一区二区| 亚洲视频网在线直播| 国产欧美一区二区精品秋霞影院| 欧美一区二区三区四区在线观看| 欧美在线观看一二区| 91丨九色porny丨蝌蚪| 大美女一区二区三区| 国产精品一二三四| 国产中文字幕一区| 久久国产三级精品| 蜜桃视频在线观看一区二区| 午夜激情久久久| 亚洲国产中文字幕在线视频综合| 亚洲另类一区二区| 依依成人精品视频| 一区二区三区美女视频| 亚洲色图欧美激情| 亚洲另类春色国产| 一区二区三区不卡视频在线观看| 亚洲日韩欧美一区二区在线| 亚洲色图20p| 亚洲国产一二三| 图片区小说区国产精品视频| 午夜免费久久看| 美女国产一区二区| 国产综合久久久久久鬼色| 国产精品一二三四区| 不卡视频一二三四| 色综合天天综合在线视频| 91黄色免费网站| 精品视频一区 二区 三区| 日韩一级在线观看| 久久综合久久综合九色| 国产精品三级电影| 亚洲美女免费在线| 日韩激情在线观看| 国产在线看一区| 99re这里只有精品首页| 欧美在线制服丝袜| 日韩欧美国产精品| 国产精品美女久久久久久久久久久| 亚洲免费在线电影| 首页国产丝袜综合| 国产精品亚洲综合一区在线观看| a在线欧美一区| 欧美日韩免费观看一区二区三区 | 日韩免费成人网| 久久久欧美精品sm网站| 日韩毛片高清在线播放| 日韩在线卡一卡二| 高清国产一区二区| 欧美日韩视频专区在线播放| 精品美女一区二区| 亚洲人一二三区| 久久精品国产免费| 色88888久久久久久影院按摩| 欧美一区二区国产| 成人欧美一区二区三区在线播放| 午夜av一区二区| 99久久久精品| 久久久久久久综合日本| 亚洲一区二区在线免费观看视频| 久久成人羞羞网站| 91福利精品视频| 2023国产精品视频| 亚洲成人免费影院| 国产成人99久久亚洲综合精品| 欧美在线影院一区二区| 日本一区二区三级电影在线观看 | www.欧美日韩国产在线| 91精品国产aⅴ一区二区| 亚洲欧美日韩一区二区三区在线观看| 日韩二区三区四区| 色偷偷久久人人79超碰人人澡| 日韩欧美在线一区二区三区| 亚洲午夜精品网| 91啪九色porn原创视频在线观看| 精品免费视频.| 麻豆中文一区二区| 欧美日韩精品专区| 亚洲男同1069视频| 国产高清亚洲一区| 日韩免费一区二区三区在线播放| 亚洲香蕉伊在人在线观| fc2成人免费人成在线观看播放 | 亚洲国产精品影院| 一本久久a久久精品亚洲| 亚洲国产精品黑人久久久| 精彩视频一区二区| 欧美一级二级三级蜜桃| 视频一区二区中文字幕| 欧美日韩在线一区二区| 一级精品视频在线观看宜春院 | 国产一区二区三区不卡在线观看| 欧美日韩国产区一| 亚洲成人一区二区在线观看| 91免费视频网址| 最新高清无码专区| 99视频超级精品| 亚洲一级电影视频| 欧美视频在线播放| 亚洲一区二区黄色| 欧美丰满一区二区免费视频|