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

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

?? extmem.c

?? 優龍2410linux2.6.8內核源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * File...........: arch/s390/mm/dcss.c * Author(s)......: Steven Shultz <shultzss@us.ibm.com> *                  Carsten Otte <cotte@de.ibm.com> * Bugreports.to..: <Linux390@de.ibm.com> * thanks to Rob M van der Heij * - he wrote the diag64 function * (C) IBM Corporation 2002 */#include <linux/kernel.h>#include <linux/string.h>#include <linux/spinlock.h>#include <linux/list.h>#include <linux/slab.h>#include <linux/module.h>#include <linux/bootmem.h>#include <asm/page.h>#include <asm/ebcdic.h>#include <asm/errno.h>#include <asm/extmem.h>#include <asm/cpcmd.h>#include <linux/ctype.h>#define DCSS_DEBUG	/* Debug messages on/off */#define DCSS_NAME "extmem"#ifdef DCSS_DEBUG#define PRINT_DEBUG(x...)	printk(KERN_DEBUG DCSS_NAME " debug:" x)#else#define PRINT_DEBUG(x...)   do {} while (0)#endif#define PRINT_INFO(x...)	printk(KERN_INFO DCSS_NAME " info:" x)#define PRINT_WARN(x...)	printk(KERN_WARNING DCSS_NAME " warning:" x)#define PRINT_ERR(x...)		printk(KERN_ERR DCSS_NAME " error:" x)#define DCSS_LOADSHR    0x00#define DCSS_LOADNSR    0x04#define DCSS_PURGESEG   0x08#define DCSS_FINDSEG    0x0c#define DCSS_LOADNOLY   0x10#define DCSS_SEGEXT     0x18#define DCSS_QACTV      0x0cstruct dcss_segment {        struct list_head list;        char dcss_name[8];        unsigned long start_addr;        unsigned long end;        atomic_t ref_count;        int dcss_attr;	int shared_attr;};static spinlock_t dcss_lock = SPIN_LOCK_UNLOCKED;static struct list_head dcss_list = LIST_HEAD_INIT(dcss_list);extern struct {	unsigned long addr, size, type;} memory_chunk[MEMORY_CHUNKS];/* * Create the 8 bytes, ebcdic VM segment name from * an ascii name. */static void inline dcss_mkname(char *name, char *dcss_name){        int i;        for (i = 0; i <= 8; i++) {                if (name[i] == '\0')                        break;                dcss_name[i] = toupper(name[i]);        };        for (; i <= 8; i++)                dcss_name[i] = ' ';        ASCEBC(dcss_name, 8);}/* * Perform a function on a dcss segment. */static inline intdcss_diag (__u8 func, void *parameter,           unsigned long *ret1, unsigned long *ret2){        unsigned long rx, ry;        int rc;        rx = (unsigned long) parameter;        ry = (unsigned long) func;        __asm__ __volatile__(#ifdef CONFIG_ARCH_S390X                             "   sam31\n" // switch to 31 bit                             "   diag    %0,%1,0x64\n"                             "   sam64\n" // switch back to 64 bit#else                             "   diag    %0,%1,0x64\n"#endif                             "   ipm     %2\n"                             "   srl     %2,28\n"                             : "+d" (rx), "+d" (ry), "=d" (rc) : : "cc" );        *ret1 = rx;        *ret2 = ry;        return rc;}/* use to issue "extended" dcss query */static inline intdcss_diag_query(char *name, int *rwattr, int *shattr, unsigned long *segstart, unsigned long *segend){        int i,j,rc;        unsigned long  rx, ry;        typedef struct segentry {                char thisseg[8];        } segentry;        struct qout64 {                int segstart;                int segend;                int segcnt;                int segrcnt;                segentry segout[6];        };        struct qin64 {                char qopcode;                char rsrv1[3];                char qrcode;                char rsrv2[3];                char qname[8];                unsigned int qoutptr;                short int qoutlen;        };        struct qin64  *qinarea;        struct qout64 *qoutarea;        qinarea = (struct qin64*) get_zeroed_page (GFP_DMA);        if (!qinarea) {                rc =-ENOMEM;                goto out;        }        qoutarea = (struct qout64*) get_zeroed_page (GFP_DMA);        if (!qoutarea) {                rc = -ENOMEM;                free_page ((unsigned long) qinarea);                goto out;        }        memset (qinarea,0,PAGE_SIZE);        memset (qoutarea,0,PAGE_SIZE);        qinarea->qopcode = DCSS_QACTV; /* do a query for active                                          segments */        qinarea->qoutptr = (unsigned long) qoutarea;        qinarea->qoutlen = sizeof(struct qout64);        /* Move segment name into double word aligned           field and pad with blanks to 8 long.         */        for (i = j = 0 ; i < 8; i++) {                qinarea->qname[i] = (name[j] == '\0') ? ' ' : name[j++];        }        /* name already in EBCDIC */        /* ASCEBC ((void *)&qinarea.qname, 8); */        /* set the assembler variables */        rx = (unsigned long) qinarea;        ry = DCSS_SEGEXT; /* this is extended function */        /* issue diagnose x'64' */        __asm__ __volatile__(#ifdef CONFIG_ARCH_S390X                             "   sam31\n" // switch to 31 bit                             "   diag    %0,%1,0x64\n"                             "   sam64\n" // switch back to 64 bit#else                             "   diag    %0,%1,0x64\n"#endif                             "   ipm     %2\n"                             "   srl     %2,28\n"                             : "+d" (rx), "+d" (ry), "=d" (rc) : : "cc" );        /* parse the query output area */	*segstart=qoutarea->segstart;	*segend=qoutarea->segend;        if (rc > 1)                {                        *rwattr = 2;                        *shattr = 2;                        rc = 0;                        goto free;                }        if (qoutarea->segcnt > 6)                {                        *rwattr = 3;                        *shattr = 3;                        rc = 0;                        goto free;                }        *rwattr = 1;        *shattr = 1;        for (i=0; i < qoutarea->segrcnt; i++) {                if (qoutarea->segout[i].thisseg[3] == 2 ||                    qoutarea->segout[i].thisseg[3] == 3 ||                    qoutarea->segout[i].thisseg[3] == 6 )                        *rwattr = 0;                if (qoutarea->segout[i].thisseg[3] == 1 ||                    qoutarea->segout[i].thisseg[3] == 3 ||                    qoutarea->segout[i].thisseg[3] == 5 )                        *shattr = 0;        } /* end of for statement */        rc = 0; free:        free_page ((unsigned long) qoutarea);        free_page ((unsigned long) qinarea); out:        return rc;}/* * Load a DCSS segment via the diag 0x64. */int segment_load(char *name, int segtype, unsigned long *addr,                 unsigned long *end){        char dcss_name[8];        struct list_head *l;        struct dcss_segment *seg, *tmp;	unsigned long dummy;	unsigned long segstart, segend;        int rc = 0,i;        int rwattr, shattr;        if (!MACHINE_IS_VM)                return -ENOSYS;        dcss_mkname(name, dcss_name);	/* search for the dcss in list of currently loaded segments */        spin_lock(&dcss_lock);        seg = NULL;        list_for_each(l, &dcss_list) {                tmp = list_entry(l, struct dcss_segment, list);                if (memcmp(tmp->dcss_name, dcss_name, 8) == 0) {                        seg = tmp;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一级精品在线| 秋霞午夜av一区二区三区| 欧美人妇做爰xxxⅹ性高电影 | 日韩亚洲电影在线| av中文字幕不卡| 精品一二三四在线| 亚洲一区二区三区中文字幕| 久久精品人人做人人爽97| 欧美视频在线一区二区三区| 国产精品一区免费在线观看| 亚洲成人av电影| 日韩理论片在线| 国产亚洲欧美一区在线观看| 在线成人午夜影院| 国产精品久久久久久久久久免费看| 欧美日韩日日夜夜| 一本高清dvd不卡在线观看 | 91免费国产在线观看| 国产毛片一区二区| 老司机一区二区| 日韩电影在线观看电影| 亚洲一区自拍偷拍| 亚洲视频免费在线观看| 欧美激情一区在线观看| 日韩亚洲国产中文字幕欧美| 欧美人xxxx| 欧美日韩中文一区| 在线观看av不卡| 色综合久久久久综合99| 91亚洲精品久久久蜜桃网站| 高清不卡一区二区在线| 国产精品1024| 国产精品91一区二区| 国产一区二区三区黄视频| 久久9热精品视频| 精品亚洲国产成人av制服丝袜| 午夜精品视频在线观看| 亚洲妇女屁股眼交7| 亚洲资源在线观看| 亚洲国产精品欧美一二99| 亚洲一二三级电影| 亚洲一区二区中文在线| 亚洲国产精品天堂| 日韩和欧美的一区| 免费高清在线视频一区·| 日韩激情视频在线观看| 免费人成精品欧美精品| 久久机这里只有精品| 激情综合色播激情啊| 国产精品小仙女| 久久久蜜臀国产一区二区| 欧美一卡二卡在线观看| 日韩精品一区二区在线| 精品国产免费人成电影在线观看四季| 精品美女一区二区| 久久伊99综合婷婷久久伊| 久久精品免视看| 最近中文字幕一区二区三区| 一区二区三区国产精华| 偷拍日韩校园综合在线| 蜜桃视频免费观看一区| 国产美女主播视频一区| av综合在线播放| 欧美熟乱第一页| 精品国产欧美一区二区| 国产精品传媒视频| 性做久久久久久久久| 久久精品国产精品亚洲综合| 国产精品正在播放| 91丝袜美腿高跟国产极品老师| 欧美性受xxxx黑人xyx性爽| 日韩一区二区在线观看视频播放| 欧美精品一区二区三区一线天视频| 日本一区二区久久| 亚洲网友自拍偷拍| 国产福利一区二区三区视频在线 | 久久亚洲精品小早川怜子| 国产精品视频yy9299一区| 亚洲午夜免费福利视频| 激情深爱一区二区| 在线亚洲一区观看| 精品国产麻豆免费人成网站| 亚洲素人一区二区| 久久国产精品露脸对白| 99riav久久精品riav| 欧美电视剧在线看免费| 亚洲欧美一区二区三区国产精品| 免费观看久久久4p| 99久久精品99国产精品| 日韩视频一区在线观看| 亚洲三级在线播放| 国产美女在线观看一区| 欧美午夜影院一区| 国产精品天干天干在观线| 首页国产欧美久久| 91一区二区三区在线播放| 欧美xxxx老人做受| 亚洲高清视频的网址| 成人午夜视频福利| 一区二区三区在线观看网站| 国产乱色国产精品免费视频| 欧美调教femdomvk| 1000精品久久久久久久久| 九一九一国产精品| 欧美日韩国产精品成人| 最新日韩在线视频| 国产高清久久久| 日韩女优av电影| 亚洲成人综合在线| 91香蕉视频黄| 日本一区二区在线不卡| 另类小说欧美激情| 欧美精品一卡二卡| 一区二区三区欧美日韩| 成人动漫av在线| 久久精品夜色噜噜亚洲a∨| 日本大胆欧美人术艺术动态| 欧洲视频一区二区| 亚洲欧美视频在线观看| 成人网页在线观看| 国产亚洲欧美色| 国产一区二区三区在线观看免费 | 欧美色老头old∨ideo| 自拍偷拍亚洲综合| 99久久精品99国产精品| 国产精品免费免费| aaa欧美色吧激情视频| 日本一区二区三区久久久久久久久不 | 91福利区一区二区三区| 国产精品毛片久久久久久| 国产成人精品免费网站| 国产亚洲欧美激情| 国产成人午夜99999| 久久久噜噜噜久久人人看 | 色综合久久中文综合久久97| 国产精品欧美一区二区三区| 岛国av在线一区| 国产精品久久看| eeuss影院一区二区三区| 中文字幕在线一区二区三区| 国产成人亚洲综合色影视| 国产欧美日韩三区| 成人免费视频一区| 综合分类小说区另类春色亚洲小说欧美| 成人视屏免费看| 亚洲欧美激情在线| 91国模大尺度私拍在线视频 | 久久99精品久久久久婷婷| 精品入口麻豆88视频| 激情伊人五月天久久综合| 国产亚洲va综合人人澡精品| 国产·精品毛片| 亚洲免费观看在线视频| 欧美午夜片在线观看| 日本不卡高清视频| 久久天天做天天爱综合色| 成人黄动漫网站免费app| 亚洲男同性恋视频| 777a∨成人精品桃花网| 国产在线一区二区| 亚洲视频一区在线| 欧美日韩成人在线一区| 精品一区在线看| 国产精品美日韩| 欧美最猛性xxxxx直播| 日本伊人精品一区二区三区观看方式| 欧美成人r级一区二区三区| 国产高清精品久久久久| 一区二区三区欧美日韩| 日韩一区二区影院| 成人18视频日本| 亚洲va在线va天堂| 国产日韩精品一区二区浪潮av| 99久久精品国产一区| 日本va欧美va瓶| 国产精品视频一二| 欧美一区三区四区| 白白色亚洲国产精品| 视频一区免费在线观看| 国产欧美日韩精品在线| 欧美特级限制片免费在线观看| 经典一区二区三区| 亚洲男人的天堂在线观看| 日韩免费视频一区二区| 99久精品国产| 麻豆91精品91久久久的内涵| 国产精品久久久99| 日韩免费一区二区三区在线播放| av影院午夜一区| 麻豆成人在线观看| 一区二区三区中文在线| 久久久九九九九| 9191国产精品| 91视视频在线观看入口直接观看www | 日本一区二区三区电影| 欧美日本乱大交xxxxx| bt欧美亚洲午夜电影天堂| 久久99国产精品久久| 亚洲一区二三区| ...av二区三区久久精品|